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

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

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

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

ТрындецЪ

Сейчас нет времени разбираться со всем этим. Как-нибудь вернусь к этой теме. 

Вират Лакх

Сам делаю свои хотелки, часть третья. Версия 0.8.2. Сделал:
* п. 4+5 (caps lock для A и Ф)
* upd из Ответ #174 (не срабатывала "Выделить всё" через меню на нефокусном поле).
* дописал в контекстном меню комбинацию клавиш для вызова шаблонов.
* добавил фокус для нефокусного поля после "Удалить всё" через контекстное меню.

UPD: Заметил, что у полей ввода есть свои стандартные комбинации, например, Выделить всё ctrl+/ или переместить курсор в конец строки ctrl+e, а в начало строки как раз-таки ctrl+a (я думал, чего он курсор дергает в начало при Выделить всё).

ТрындецЪ

Цитата: Вират Лакх от 09.11.17, 06:35:00
Сам делаю свои хотелки, часть третья.


Цитата: Фердинанд ПоршеЕсли хочешь сделать что-то хорошо, сделай это сам.

Наткнулся ещё на проблему с зацикливанием, если выделены грань или ребро  не подходящие по параметрам. Решил введением отмены выделения.
Upd: Пора справку к программе писать.
Upd-2: Ещё термин "константы", как я считаю, не подходит для переменных в настройках.  Суть константы в том, что она никогда не изменяется, а у нас как раз наоборот.

Вират Лакх

09.11.17, 09:22:42 #183 Последнее редактирование: 09.11.17, 10:32:09 от Вират Лакх
"Если хочешь сделать что-то хорошо, сделай это сам." Это не полная истина. Расширенный вариант фразы звучит так: "... сделай это сам или попроси ТрындецЪ'а" :)

Закцикливание я видел давно. Видно было, как шапка окна компаса мигала. Думал это то самое "Программа проверяет не выделено ли что-нибудь с периодичностью в 0,5 сек. Тут правильнее было бы подписаться на событие окна документа, но с этим я пока не дружу." Сейчас без зацикливания приятнее стало.

Когда будет версия 1.0, тогда тов. Vin попросим написать справку )
Я бы хотел к версии 1.0 иметь еще п.8 из Ответ #162.

"Константы" в новой версии кто-нибудь из нас переименует в "Настройки".

Еще вы забыли в шапке окна версию изменить на root.title (title + " v0.8.3"). Я подумывал переменную ввести наряду с title для версии...

UPD: Кстати, в "боевых" условиях макрос помогает в преодолении глюков спецификации быстрым созданием объекта спецификации.

ТрындецЪ

На скорую руку реализовал п.8 из ответа #162 - перед запуском теперь достаточно выделить элемент нужной детали (грань, ребро или вершину), чтобы программа поняла с чем работать.
По хорошему, конечно, надо свойства считывать, а не в режим редактирования на месте заходить, но лень код ворошить, там уже столько нагорожено, что я уже забывать стал что к чему.

Умка

при замерах зависает, ошибок нет

Вират Лакх

Вооот. Макрос поднялся еще на уровень. Спасибо.

Сейчас выделение элемента детали работает на чтение, а на запись - нет.
Макросом же можно считанные данные записывать в другие детали. Его можно использовать не только для БЧ, но и при присвоении обозначений и наименований обычным деталям. Вместо того, чтобы долбаться со свойствами-источниками компонентов, можно этим макросом легко расставить всем деталям обозначение и наименование. А для этого тоже элементы хорошо бы выделять, а не в дереве или с шифтом.
Таким образом макрос может к версии 1.0 стать (фактически уже почти стал) не "Оформление деталей БЧ", а "Обозначение компонентов" или типа того.
В новом на сегодняшний день Авторедакторе 1.30 появилась отличная команда Переименовать, которая делает типа того же, но из объектов спецификации. Кстати, от нас с Дмитрием22 тебе, ТрындецЪ, спасибо, мы использовали часть кода этого макроса для присвоения данных в источник. Две программы отлично дополняют друг друга. Но из объектов СП не очень удобно расставлять обозначения и наименования, можно, но надо переключаться между окнами, включать постоянно подсветку геометрии...

По считыванию свойств не через редактирование на месте я может попробую пораскинуть мозгами. За полгода поди справлюсь ) Но в v1.0 не хочется её пропускать, иначе будет "качество не моей мануфактуры".

И еще момент, который надо будет нам сделать в версиях 0.9.х. Это в продолжение темы нефокусных полей и всплывающего меню. Если ПКМ на нефокусном поле вызвать меню и выбрать Вырезать, Копировать или Вставить, то команды должны работать для всего содержимого поля. Т.е. Вырезать должна поместить в буфер весь текст и сделать Удалить всё. Копировать - аналогично, но без удалить. Вставить сначала удалить всё, потом вставить содержимое буфера. Компасу тоже неплохо бы взять это на заметку.

Ну и потом уже от нечего делать можно внесение считанного материала в другие компоненты сделать. Кстати, это же не долго делать? Просто, что считали, то и записали на то же место. Может я сам попробую сделать.

Умка, сдались вам эти сообщения? Закомментируйте их в процедуре def Izmerit(event)

Умка


Вират Лакх

Цитата: Умка от 10.11.17, 06:19:00
мда...Это как?

См. начало Ответа #176. Вроде и ТрындецЪ писал раньше. Решетка # перед текстом кода - это комментарий, который не используется в работе программы. Будет типа удалил в корзину, из которой можно достать, если вдруг понадобится.

Умка

Удалил все ", title, 64", сейчас всё работает

Вират Лакх

Цитата: Умка от 10.11.17, 07:26:13
Удалил все ", title, 64", сейчас всё работает

Так проблема была только в титлах 64 и 48? Тип сообщения не меняли, остались всплывающие сообщения в углу?
Если да, то как сообщение выглядит?

Умка

тип сообщения не менял, сообщения в центре экрана

Вират Лакх

Версия 0.9.1.

Из Ответ #186 сделал работу Вырезать, Копировать, Вставить для нефокусных полей ввода. Т.е. если курсор стоит на одном поле или нигде не стоит, а пользователь нажимает сразу ПКМ на другом поле, то указанные команды будут работать для всего текста в указанном поле.

Попробовал присвоить считанный материал обратно в Материал типа iPart7.Material = material. А не тут-то было. Оно якобы для чтения и надо это делать по-другому.

Sabahs


ТрындецЪ

Цитата: Вират Лакх от 13.11.17, 12:23:48
Попробовал присвоить считанный материал обратно в Материал типа iPart7.Material = material. А не тут-то было. Оно якобы для чтения и надо это делать по-другому.

Если материал задавать, тогда и плотность надо с детали-прототипа считывать.

Вират Лакх

Цитата: Sabahs от 13.11.17, 12:27:51
iPart7.SetMaterial

Цитата: ТрындецЪ от 13.11.17, 12:31:20
Если материал задавать, тогда и плотность надо с детали-прототипа считывать.

Ага, видел её. Это и имел ввиду, что там плотность еще участвует... Просто тут написал по-простому, дабы не вдаваться в подробности. На сегодняшний момент понял, что это делается по-другому. Дальше вникать тоже нет времени. И без того много уходит времени на простейшее.
UPD Еще пытаюсь вычислить это "ненужное" редактирование на месте...

ТрындецЪ

Цитата: Вират Лакх от 13.11.17, 12:33:48
Еще пытаюсь вычислить это "ненужное" редактирование на месте...

PartAPI5.BeginEdit () # начать редактирования на месте
Read_prop_detal() # Считываем инфу
PartAPI5.EndEdit (0) # завершить редактирование на месте без перестроения

Вират Лакх

ТрындецЪ, заметил кАсяк в версии 0.9. От него и в 0.9.1. После измерения не восстанавливает окно макроса обратно :( Как так случилось? Из-за title? Нет, не из-за него. Копия нормально отрабатывает. Что-то Вы там в процедуре def Izmerit(event) сделали не то... В v0.8.3 работало.

ТрындецЪ

13.11.17, 14:24:29 #198 Последнее редактирование: 13.11.17, 14:56:30 от ТрындецЪ
Цитата: Вират Лакх от 13.11.17, 12:53:11
ТрындецЪ, заметил кАсяк в версии 0.9. От него и в 0.9.1. После измерения не восстанавливает окно макроса обратно :( Как так случилось? Из-за title? Нет, не из-за него. Копия нормально отрабатывает. Что-то Вы там в процедуре def Izmerit(event) сделали не то... В v0.8.3 работало.

Сам не понимаю. Почему-то функция Copy_program не восстанавливает окно.

Upd: Починил. Не работало, потому что я версию в title загнал. Вернул обратно. Так и не понял, чем версия не угодила... Лень сейчас разбираться, работает и ладно.

Вират Лакх

Это у вас 0.9.1.1 работает, а у меня нет. Зачем опять return True удалили?
А проблема тут не в версии, а в том, что мы имеем два окна, содержащих title, одно из которых балун. Вот на нем и останавливается перебирание окон. Надо разделить названия этих окон. Что я и сделал в версии 0.9.1.2.
Попробовал PartAPI5.BeginEdit и PartAPI5.EndEdit убрать, а чтение разделить на два варианта: def Read_prop_detal(component), где component = True, если считываем у компонента сборки. И обозначение написать так:
# Получаем свойство Обозначение
    if component:
       iSourcePart7Params =kompas_api7_module.ISourcePart7Params(iPart7)
       oboznachenie = iSourcePart7Params.SourceMarking
    else:
        oboznachenie = iPart7.Marking
Но не работает. Короче, далеко мне еще до этого. И SourceMaterial не существует...