Библиотека для деталей БЧ

Автор Вират Лакх, 19.08.17, 07:32:57

« предыдущая - следующая »

0 Пользователей и 1 гость просматривают эту тему.

Вират Лакх

Цитата: ТрындецЪ от 26.09.17, 09:32:29
Принты закомментируйте.

Я в шоке :) Работает теперь и с русскими буквами! Теперь разобраться бы с фокусом...
Умка, лучше такие сообщения в виде отдельного окна удалить, чем их иметь в этом виде.

Умка

Сообщения как доп информация на компе с тормозами не помешает. Всегда понятно когда операция выполнена.

Вират Лакх

1) hwnd = int(re.findall(r'\d+', str(hwnd))[0]) - это теперь можно удалить.
2) Еще в коде есть # Метериал - надо исправить опечатку чисто из уважения к великому могучему.
Вот тут https://mail.python.org/pipermail/python-win32/2006-May/004678.html рассказывают, как сделать фокус путем Tkinter и win32.
Оттуда я понял, что лучше написать root.focus() при появлении окна при запуске, т.к. _force - это, видите ли, impolite.
В проблемной строчке фокус такой не канает. Попробовал путем винды и понял, что я до этого не дорос. Может у Вас получится?
А вот тут https://stackoverflow.com/questions/3842220/make-tkinter-widget-take-focus посоветовали задержку.
В итоге, если путь винды не получится, то я предлагаю root.after(70, lambda: Gabarit.focus_force())
Фокус на габарите для того, чтобы сразу можно было вводить данные. Минус один клик. Задержку может подлиннее сделать, чтобы хватало времени.

ТрындецЪ

Цитата: Вират Лакх от 26.09.17, 12:58:53
В итоге, если путь винды не получится, то я предлагаю root.after(70, lambda: Gabarit.focus_force())
Фокус на габарите для того, чтобы сразу можно было вводить данные. Минус один клик. Задержку может подлиннее сделать, чтобы хватало времени.

Вот это:
root.deiconify()
time.sleep(0.05)
Gabarit.focus_force()
иногда даёт фокус развернутому окну и виджету, но редко. Манипуляции со временем задержки эффекта не дают. С win32gui не разобрался ещё.

Вират Лакх

26.09.17, 15:18:57 #144 Последнее редактирование: 26.09.17, 15:42:51 от Вират Лакх
root.after(70, lambda: Gabarit.focus_force()) - это я, видимо, фигню написал. Надо поди уж или оба рут писать, или оба габарит? Gabarit.after(300, lambda: Gabarit.focus_force()).
Манипуляции со временем задержки эффекта не дают - это где: в слипе или афтер? В афтере я видел, как фокус отдавался макросному окну после этой задержки. Просто я хочу минимальную задержку сделать.
Получается то же, что и в Ответ #119, только задержку больше надо.

Вират Лакх

27.09.17, 05:17:10 #145 Последнее редактирование: 27.09.17, 06:31:32 от Вират Лакх
Я так понял, макрос с компасом этот фокус делят между собой.
Экспериментально 400 мс вроде хватает: root.after(400, lambda: Gabarit.focus_force())
Если практика покажет, что мало, тогда добавим 50 или 100 мс. В общем, не более 500 мс, чтобы не успела второй раз мигнуть в панели задач.
Предлагаю на win32gui на тратить время и двигаться дальше по пп. 3-6 ответа #117 и пп.1-2 ответа #142.
upd
Еще из нового функционала для сборок: деталь выделять не только в дереве или с shift+ЛКМ на поверхность, но и попробовать научить макрос определять чья (какой детали принадлежит) выделенная поверхность.

Умка

Как подправить, чтобы при снятии галки "Создать объекты спецификации" объекты спецификации не удалялись и не создавались новые при этом изменялись в свойствах модели только обозначения, наименования не изменялись? В массе не хватает незначащих нолей после запятой.

ТрындецЪ

Цитата: Умка от 27.09.17, 06:22:16
Как подправить, чтобы при снятии галки "Создать объекты спецификации" объекты спецификации не удалялись и не создавались новые при этом изменялись в свойствах модели только обозначения, наименования не изменялись? В массе не хватает незначащих нолей после запятой.

Про то, как вернуть незначащие нули, я писал ранее. А по первому вопросу ответ на скрине.

Умка

При снятии галки "Создать объекты спецификации" объекты спецификации удаляются

ТрындецЪ

Цитата: Умка от 27.09.17, 08:57:26
При снятии галки "Создать объекты спецификации" объекты спецификации удаляются

Ну, я же показал, что удаление надо закомментировать.

Умка

подправил удалением строк
        iSourcePart7Params.SourceName = naimenovanie
       
        iPart7.Name = naimenovanie
заработало!

Сейчас как сделать чтобы при снятии галки "Создать объекты спецификации" объекты спецификации не удалялись, изменялись только свойства детали.

Вират Лакх

Цитата: Умка от 27.09.17, 08:57:26
При снятии галки "Создать объекты спецификации" объекты спецификации удаляются

Да, непорядок. Если галки нет, то и не надо никаких операций с ОС проводить. В будущих версиях исправить надо.
upd
По незначащим нулям можно настройку в константах сделать.

ТрындецЪ

Цитата: Вират Лакх от 27.09.17, 09:40:17
Да, непорядок. Если галки нет, то и не надо никаких операций с ОС проводить. В будущих версиях исправить надо.

Удаление введено для того, чтобы не было рассогласования между данными в свойствах и данными в объекте спецификации.

Вират Лакх

Цитата: ТрындецЪ от 27.09.17, 09:42:01
Удаление введено для того, чтобы не было рассогласования между данными в свойствах и данными в объекте спецификации.

Пардон, логично. Зачем тогда это Умке? upd: Умка, вы хотите макрос использовать просто для задания обозначений обычным деталям? Какова ваша конечная цель?

Умка

Для чего нужно:
Библиотекой для деталей БЧ я редактирую каждый файл, ввожу наименование. Файлов много. Затем в объектах спецификации сборки сортирую по наименованию и присваиваю порядковое обозначение. В  КОМПАСе V13 при этом свойства деталей не изменяются!!!! Нужно изменить свойства детали по его объекту спецификации.

ТрындецЪ

Цитата: Умка от 27.09.17, 10:01:57
Для чего нужно:
Библиотекой для деталей БЧ я редактирую каждый файл, ввожу наименование. Файлов много. Затем в объектах спецификации сборки сортирую по наименованию и присваиваю порядковое обозначение. В  КОМПАСе V13 при этом свойства деталей не изменяются!!!! Нужно изменить свойства детали по его объекту спецификации.

Ну, это уже отдельная тема. Тут добавлением/удалением пары строк не отделаешься.

Умка

Хотелось бы одной галочкой только заблокировать вставку объекта спецификации с разрешением вставки в свойства детали

Вират Лакх

Позволю себе оффтоп. Значит вы присвоили в наименовании размеры деталей бч, потом в СП у отсортированных по наименованию расставили обозначения типа АБВГ.000.001 2 3 и т.д. Чтобы эти обозначения вписались в источник-деталь, надо включить кнопку Синхронизировать с документом-владельцем объекта (возможно, лучше при этом отключить Синхронизировать со свойствами компонента, чтобы не снималась галочка, а то всяко бывает). Чтобы кнопка у всех ОС сразу была включена попробуйте разные пути создания ОС в сборке. В одном из них у всех ОС она включена. Но и глюки разные бывают в разных версиях. Не помню, как там в 13-й. В 14-й и дальше переделали сортировку деталей. Чтобы этими муторными кнопочками не заниматься, в новой версии Авторедактора, о котором упоминали в начале темы, разрабатывается команда Переименовать все экземпляры выбранного ОС, она еще должна будет уметь вносить в источник данные Наименования и Обозначения. Пока новый Авторедактор в стадии тестирования.
upd
ЦитироватьХотелось бы одной галочкой только заблокировать вставку объекта спецификации с разрешением вставки в свойства детали

Не совсем догоняю. Разве это не равно просто отключенной галочке?

Умка

При отключенной галке объекты спецификации удаляются

Вират Лакх

Если две ранее описанные желаемые фишки реализуются, то их можно будет объединить в один это путь. Выделяем в сборке ребро, грань или цилиндр и запускаем макрос. Макрос определил, какой детали выделенное принадлежит, обновил содержимое полей у себя в окне по этой детали. Потом пользователю можно сразу запускать линейку, а она сразу берет выделенную геометрию и вставляет в поле Габарит.

Для измеренного габарита вида "D = 55, d = 66" при включенных " мм" хорошо бы добавить " мм" перед запятой, чтобы в итоге стало: D = 55 мм, d = 66 мм