ADN Club > Inventor API

Копирование и переименования даталей сборок и подсборок с помощью VBA

(1/2) > >>

Шашлык:
Всем привет!
Для работы с Inventor использую python и библиотеку pywin32.

У меня есть сборка состоящая только из деталей. Эта шаблонная сборка, то есть когда в каком-то из проекте нужна данная сборка, то она копируется и каждый файл переименовывается в соответствии с проектом. Заменяю компоненты в сборке таким образом:


--- Код: ---inventor = wc.GetActiveObject('Inventor.Application')
doc = inventor.ActiveDocument

for ref_file in doc.File.ReferencedFileDescriptors:
    ...
    ref_file .ReplaceReference(...)

--- Конец кода ---

В таком подходе у меня не возникает проблем и копируются все свойства сборки.
Сейчас у меня появилась аналогичная задача, только копировать более сложную сборку, в которую входят другие сборки и уже не получается просто взять и поменять компоненты сборки, так как надо менять компоненты подсборок и т.д.
Если бы не приходилось переименовывать файлы, то можно было бы просто копировать через Ctrl + C.
Копировать хочу полностью автоматически, без использования Disign Assistent и т.п.

Подобные сборки можно "лечить" после копирования и переименовывания всех файлов через ручную корректировку, где Inventor запрашивает путь к каждому потерянному файлу сборки


Вот и возникает вопрос можно ли как-то это автоматизировать? Ведь бывают большие сборки где десятки деталей



filat:
Обход подсборок выполняется через вызов подпрограммы, по условию.
Вот пример подобного цикла, думаю разберешься.  ;)
https://adn-cis.org/forum/index.php?topic=9999.msg44879#msg44879

R.I.Chernov:
Добрый день!

Возможно я немного оффтопик скажу, но для вашей операции есть встроенный функционал инвертора. Как подключиться к нему программно ( если это вобще возможно) я не знаю, но вот от «замены руками» он вам точно спасёт. В волте тоже есть копирование, но оно глючное, некорректно работает, если используете наследование. В целом вопрос наследования - главная проблема при копировании. Потому как, если его не используете, то просто рекурсивно открываете все подсборки, делаете в них замену и закрываете - точно также, ее вы это делали для главной сборки.
П.С. Если правильно работать с проектами инвертора, то от переименовывания деталей в целом можно отказаться, вы можете копировать сборку целиком в папку проекта ( и, например, переименовать только ее). По умолчанию сборка ищет детали в своей подпапке и папке проекта, детали из других проектов тащить не будет, даже если они одноименные. Другое дело, что если вы хотите с имён деталей номера брать, но тут опять же вопрос решаемый.  Хотя, на мой вкус, переименовывать детали все же лучше, чем не переименовывать ))

R.I.Chernov:
Ну и ещё одна ремарка, опять скорее не про программирование, а про использование инвертора. Если у вас узел типовой и не меняется, в чем необходимость тащить его сборку  из проекта в проект и копировать по сто раз? Можно же сделать отдельный проект-библиотеку с типовыми узлами, подключать его к проектам и использовать.

Шашлык:

--- Цитата: R.I.Chernov от 26-02-2024, 16:15:08 ---Ну и ещё одна ремарка, опять скорее не про программирование, а про использование инвертора. Если у вас узел типовой и не меняется, в чем необходимость тащить его сборку  из проекта в проект и копировать по сто раз? Можно же сделать отдельный проект-библиотеку с типовыми узлами, подключать его к проектам и использовать.

--- Конец цитаты ---

Соглашусь
Но не, для данной сборки, так как это параметрическая сборка с изменяемой геометрией

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии