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

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

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

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

ТрындецЪ

Цитата: Вират Лакх от 13.11.17, 21:43:25
Это у вас 0.9.1.1 работает, а у меня нет. Зачем опять return True удалили?
А проблема тут не в версии, а в том, что мы имеем два окна, содержащих title, одно из которых балун. Вот на нем и останавливается перебирание окон.

А я и не сообразил. Так вот почему мне несколько одноименных окон "принтил", когда я ошибку искал. Теперь всё понятно стало.

Со свойствами работать надо через IPropertyKeeper.

Вират Лакх

v0.9.2 alpha - недоделанная.
* Переделал этот title немного по-другому и применил его между делом для tkMessageBox.showwarning(title_version, u"Запустите КОМПАС-3D и повторите попытку")
* В Gabarit.grid сделал sticky= W + E для растягивания при длинных материалах.
* Сделал присвоение материала и плотности для обычных компонентов. Галка справа от материала. Для локальных не знаю как. Опять через редактирование на месте?
* Надо еще прочитанную штриховку переносить на другую деталь. Написал # Получаем свойство Штриховка     hatch = iPart7.HatchParam
Но это пальцем в небо. Там опять всякие интерфейсы и только для чтения.
Нид хэлп.

ТрындецЪ

Как штриховку назначать, я тоже не нашёл.

Вират Лакх

В чем отличие редактировать на месте от открыть в невидимом режиме? Второе неприменимо для локальных деталей? Почему оба способа используются в программе? Реально в локальность прописать материал+плотность каким-нибудь путем? Насколько я помню, компасная команда присвоения материала скопом компонентам сборки в локальные материал прописывает не в источник.

ТрындецЪ

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

Вират Лакх

Цитата: ТрындецЪ от 14.11.17, 15:14:52
Присваивать материал скопом никогда не пробовал и не знаю, как это делается в программе.

Пооффтопим малость. Вот тут в источник локальным не прописывается материал.

Вират Лакх

Версия 0.9.3
* Похозяйничал в коде. Переставил кое-что местами для лучшего мне восприятия.
* Не нравилось разное заполнение поля Габарит при запуске макроса и при обновлении в случае отключенной галки Название для двухстрочного наименования. Не бралась первая строка. Сделал при запуске однообразно с обновлением.
* Слегка изменил в окне выделение текста жирным. Типа жирность - это то, на что нажимать. Чтобы мм заметнее стали, а то проскакивают куда не надо.
* Раньше при измерении шайбы с отверстием после первого диаметра мм ставилось по настройке, а теперь в зависимости от включенности жирных мм справа.
* Перенос штриховки и присвоение материала в локальную деталь для себя считаю невозможной. Равно как и считывание свойств не через редактирование на месте.
* Еще хочу узнать, где в коде определение компонента по его выделенной геометрии. Вдруг смогу повторить аналогично для записи свойств.

ТрындецЪ

SelectedObjects.Part - вот так получаем интерфейс компонента iPart7 от выделенного объекта.
По хорошему, тут нужно ещё проверку вводить, как в функции с измерением: является ли выделенный объект модельным (if SelectedObjects.Type == 11001:), и не выделено ли несколько объектов (if type(SelectedObjects) == tuple:).
Лучше в отдельную функцию это вынести: передаём ей выделение, а она возвращает iPart7, или окно с текстом ошибки.

Вират Лакх

Вот v0.9.4. Дел по программе еще полным-полно, оказывается 88))
1) По процедуре опознания компонента по его выделенной геометрии в общих чертах я понимаю, а что писать в части взаимодействия с компасом - туплю. У меня в вам предложение написать напротив таких строк комментарии побольше в выложенной последней версии. Для новичков эта программа будет нехилым учебником. И заодно напишите процедуру :) Её надо будет вставить в запись и заменить в чтении тамошний код на процедуру. И предупреждайте меня в ЛС, что принимаетесь за редактирование макроса, чтобы мы параллельные версии не делали. А я потестирую )
*) В этой версии оптимизировал код в части заполнения виджетов при запуске и обновлении. Плюс сделал, чтобы текст вида "L = 100 мм" записывался не в название, а в габарит. Теперь можно галку названия в настройках не отключать тем, кто названием для БЧ не пользуется. Может в будущем эту галку совсем убрать... Это нацелено на универсальность будущего макроса аля "Обозначение компонентов 1.0".
*) Для спортивного интереса сделал для шайб вида D=,d= при включении и отключении жирных мм в поле Габарит убирается и появляется мм между D= и запятой.
2) Как можно сделать проверку концентричности отверстия в шайбе D=d= ?
*) Привел к общей концепции название галки "Создавать объекты спецификации" (убрал жирность и изменил высоту шрифта).
3) Обработку данных в def Read_prop_detal() надо переделывать. Я давно вроде писал, что надо начинать с конца. Выделить габарит по признакам х, =, мм до первой с конца собакидроби. Если таковых не будет, то это всё - название.
4) Для сборок, чтобы зря пустое окно не отображать при запуске без выделенного компонента, предлагаю .TopPart вписывать в виджеты. Будет аналогично с запуском в обычной детали. В рамках универсальности макроса. При этом сообщение Выделите деталь... можно оставить.
5) Вернемся к проблеме галочек Источник у компонентов. См. рисунок. Можно вот так отображать отключенность галочки Источник. Или хотя бы несовпадение данных в источнике от данных в компоненте. Так вот, сейчас макрос считывает данные источника только при редактировании на месте нелокального компонента. Остальное - это информация компонента.

Вират Лакх

Крупное обновление программы. Переработан и оптимизирован код, добавлены новые функции и настройки.
В связи с расширением возможностей программа получила новое название "Обозначение компонентов".
Описание - см. прилагаемый файл ReadMe.pdf
Две версии: для python 2.6 (v??.? <= Компас <= v16.x) и 3.0 (Компас 17.x).
Работоспособность программы проверялась только на Компас версии 16.x.
В архиве одна и та же программа в исходном виде и виде байт-кода (сохранение байт-кода позволяет интерпретатору не тратить лишнее время на перекомпиляцию кода модулей при каждом запуске).

Умка

Ошибка Кv13, WXPsp3
File "C:\Program Files\ASCON\Обозначение компонентов.pyw", line 148, in read_prop
    hatchstyle = iPart7.HatchParam.Style                        # Получаем сÑ,иль шÑ,риÑ...овки
  File "C:\Program Files\Python26\lib\site-packages\win32com\client\__init__.py", line 454, in __getattr__
    raise AttributeError, "'%s' object has no attribute '%s'" % (repr(self), attr)
AttributeError: '<win32com.gen_py.69AC2981-37C0-4379-84FD-5DD2F3C0A520x0x1x0.IPart7 instance at 0x24949504>' object has no attribute 'HatchParam'

Вират Лакх

Оказывается, в то время еще не было параметров штриховки у 3D моделей. Ладно, допилим. А пока строку 148 сделайте: hatchstyle = -1 и строку 399 с решеткой: # iPart7doc.HatchParam.Style = hatchstyle

IgorT

Спасибо! :)

А можно сделать так, что бы программа запускалась по нажатию кнопочки в Компасе?

Вират Лакх

05.02.18, 11:57:14 #213 Последнее редактирование: 05.02.18, 12:10:33 от Вират Лакх
Тут http://forum.ascon.ru/index.php/topic,28546.40.html я Вам рассказывал, как делать макрос на кнопку.
upd. Может до конца не рассказал. Потом - см. картинку - взять в этом окне команду и вынести её на панельку.
Потом через ПКМ можно настроить иконку кнопки.

Умка

При замере активируется команда "Усечение кривой", отключается через Esc или Stop, при этом программа "Обозначение компонентов" свёрнута. Замер выполняется корректно.

IgorT

Цитата: Вират Лакх от 05.02.18, 11:57:14
Тут http://forum.ascon.ru/index.php/topic,28546.40.html я Вам рассказывал, как делать макрос на кнопку.
upd. Может до конца не рассказал. Потом - см. картинку - взять в этом окне команду и вынести её на панельку.
Потом через ПКМ можно настроить иконку кнопки.

Спасибо!  :) Всё получилось!

Вират Лакх

Цитата: Умка от 05.02.18, 12:14:21
При замере активируется команда "Усечение кривой", отключается через Esc или Stop, при этом программа "Обозначение компонентов" свёрнута. Замер выполняется корректно.

Поищите в своем SDK.chm вот это "40524". У меня оно - Команды 3D документа, ksCMViewFeatureInTree 40524 Показать в дереве.
А как у Вас?
строка 670: application.ExecuteKompasCommand(40524, 1) - попробуйте 1 на 0 изменить или как всегда # перед командой.
аналогично строка 103.

Умка

40524 в SDK.chm не нашёл. Поставил решётки и заработало нормально! Не хватает кнопочки "Не менять наименование в свойствах"

ТрындецЪ

Цитата: Умка от 05.02.18, 13:17:27
Не хватает кнопочки "Не менять наименование в свойствах"

Так у наименования есть "галочка", которая за это отвечает.

Вират Лакх

Цитата: Умка от 05.02.18, 13:17:27
40524 в SDK.chm не нашёл. Поставил решётки и заработало нормально! Не хватает кнопочки "Не менять наименование в свойствах"

Сделайте архив с максимальным сжатием и томами 1Мб своей сдк. Почитаю.