Проверка галок в свойствах компонентов в моделях сборок

Автор IgorT, 29.01.18, 14:45:55

« назад - далее »

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

IgorT

Есть ли в природе такой макрос?
Задолбало самопроизвольное улетание сих птиц.
Был бы такой макрос - жизнь производственная стала бы веселе  :)
Если нету чудесного макроса, может кто возьмётся сочинить?

Вират Лакх

Тоже давно задолбал Компас своими этими галочками Источник и кнопками Синхронизировать со свойствами компонента.
Как раз заканчивается работа над макросом-программой Обозначение компонентов v1.0, в которой есть кнопочка в верхнем правом углу, проверяющая эти галки. Вернее, сами галки хз как проверить, команда проверяет равенство свойства компонента свойству источника. Если не равны, то в окошке выдаст список кнопок этих неравных источникам компонентов.
Эта программа - глобальная переработка и мощное расширение программы для деталей БЧ http://forum.ascon.ru/index.php/topic,30640.200.html
+ Благодарностей: 2



IgorT

А можно предложение озвучить?
Предлагаю дополнить функционал этой замечательной программы возможностью изменять имя файла компонента так, что бы оно совпадало с Обозначением - Наименованием.
Что скажете?
+ Благодарностей: 1

Вират Лакх

Если кто-то называет файлы только наименованием? Плюс какой разделитель между обозначением и наименованием? У каждого свой шаблон. Придется каждому под себя править код или делать настройку. Допустим, имя файла источника изменили вместе с его свойствами. А кто будет менять его в сборке? Может сама программа у выбранного компонента. А если этот компонент вставлен в сборку не один раз, плюс в подсборки и, вообще, в другом файле? Что скажет сборка, когда ей у других копий компонента переименуют файл? При каждой замене имени файла искать его в текущей сборке и её подсборках?

Lito 2

Здравствуйте.
Для 15 версии делал библиотеку, которая проставляла галочки для источника у обозначения в 3D-сборках, если интересует могу скинуть.
Дополнительно можно было просмотреть отчет

Вират Лакх

Цитата: Lito 2 от 01.05.19, 18:32:22
Для 15 версии делал библиотеку, которая проставляла галочки для источника у обозначения в 3D-сборках, если интересует могу скинуть.
Приветствую. Интересует сама программа и способ включения галочек у обозначения и наименования (работа с интерфейсами по SDK).

Lito 2

Вот ссылка для скачивания https://yadi.sk/d/zmwnRoAFklQiKw
Библиотека только для 15 версии.
+ Благодарностей: 1

Вират Лакх

Команды из папки Источник не работают на v16.1х64 для локальных деталей - см. картинку.
Э-э, так она не включает галочки, а просто приравнивает значение свойств компонента источнику.
При объединении сборки в одну m3d быстрым способом происходит косяк с отрисовкой окна исходной сборки, как будто вы применяли windowNeedRebuild и обратное включение не происходит... Ну и название получаемой детали вроде хотите сделать с датой и временем, а на выходе получается просто название исходной сборки.

Lito 2

Для локальных деталей, которые внутри сборочной единицы, установить источник не делалось, задачи такой не было.
Про время это не команда "Источник".

once

Цитата: Вират Лакх от 06.05.19, 04:56:13Интересует сама программа и способ включения галочек у обозначения и наименования (работа с интерфейсами по SDK).

Чтобы установить галочку Источник у обозначения нужно вызвать метод SetPropertyValue(property, "", true), установив значением свойства пустую строку. Однако с Наименованием так не получается, пока не знаю как :(.

once

С наименованием тоже получилось. Если присвоить пустую строку компоненту в сборке part.Name = ""; part.Update(); то после этого наименование у компонента в сборке становится как у источника и проставляется галка.

Вират Лакх

#13
Вау! Как, оказывается, просто! Спасибо большое! Кто бы мог подумать!
В Компасе наименование полностью не удалить, а у обозначения источник включается только после ctrl+enter.
Разработчику SDK следовало написать об этом.
Значит, информация поверх присваивается, если она есть. Если пустое, то отображает источник.
upd:
У исполнения обозначение сбрасывать не всегда получается простым ''. У себя я так написал:
KompasVersion = KompasObject.ksGetSystemVersion(0, 0, 0, 0)[1]
k14 = True if KompasVersion >= 14 else False
iPart7.Marking = '$|$|$|$|$|$|' if k14 else ''

Вират Лакх

На новых версиях Компаса описанный выше способ включения источника не прокатывает.
Оказывается, это был костыльный способ. На самом деле должно быть так для любого свойства:

from pythoncom import VT_EMPTY
from win32com.client import VARIANT
iPropertyKeeper.SetPropertyValue(iProperty, VARIANT(VT_EMPTY, None), True)

В SDK же написано, что вносить нужно тип VARIANT:
SetPropertyValue( LPDISPATCH Property, VARIANT Value, BOOL BaseUnit )
+ Благодарностей: 1