Сообщество программистов Autodesk в СНГ

ADN Club => Inventor API => Тема начата: filat от 27-02-2014, 09:49:14

Название: Можно ли перенести идентификаторы?
Отправлено: filat от 27-02-2014, 09:49:14
Каждый элемент (вершина, ребро, круг, дуга, ...)  имеет свой идентификатор (уникальный код, который генерируется при создании данного элемента), по которому, например, в сборке привязки разпознают что и с чем должно быть совмещено...
Существует ли какой-нибудь способ переноса идентификатора от одного элемента на другой?
Поясню на примере: есть деталь из листового материала с отверстием, которая входит в сборки и привязывается за это отверстие. Мне нужно в детали заменить отверстие на овальную выштамповку. И в результате я хочу чтоб при открытии сборки привязка не вызвала ошибку, а определила дугу овала как родную...
Название: Re: Можно ли перенести идентификаторы?
Отправлено: Владимир Ананьев от 27-02-2014, 11:22:52
ReferenceKey является не только уникальным идентификатором, но и Read-Only.  Подменить его средствами Inventor API не удастся.  В описываемом случае надо привязываться к инвариантной геометрии, которая не исчезает при замене одного конструктивого элемента на другой.

Альтернативный вариант - привязку проверять программно и при необходимости перепривязывать, используя имена элементов, атрибуты и т.п.
Иногда используют iMate


Название: Re: Можно ли перенести идентификаторы?
Отправлено: filat от 28-02-2014, 09:01:07
iMate не получается использовать в больших сборках - так как есть много разных соединение и много одинаковых деталей...
ReferenceKey остается уникальным только до тех пор, пока не начинают создаваться новые детали методом копирования старых - а это из основных методов моделирования в АИ... Разумеется нельзя допускать копирование ReferenceKey внутри одной детали, а вот копирование между деталями и перенос внутри детали - это уже нужная вещь!
Как и с любой технологией - эту можно довести до абсурда, но если ее применять правилно, то она будет чрезвычайно нужной и полезной!
Название: Re: Можно ли перенести идентификаторы?
Отправлено: Владимир Ананьев от 28-02-2014, 10:45:30
Если стоит задача лишь найти элемент геометрии для построения зависимости, то присмотритесь к атрибутам.  Это самое простое решение.  Копирование деталей сохраняет атрибуты.  См. объект AttributeManager.
Кстати, Inventor ETO для именования геометрических соучастников будущих сборочных зависимостей (этап "adoption") использует именно атрибуты :)

См. также http://forums.autodesk.com/t5/Inventor-Customization/Attribute-Helper-for-Inventor-2012/td-p/4769471 (http://forums.autodesk.com/t5/Inventor-Customization/Attribute-Helper-for-Inventor-2012/td-p/4769471)
Adam Nagy дал там ссылку на GitHub - он залил туда утилиту AttributeHelper от Брайана Икинса.   Может быть  полезна для быстрого просмотра атрибутов в деталях.

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

Разумный выход - использование для привязок геометрии, которая локальным редактированием не затрагивается.  Эта простая идея в полное мере используется, например, в каркасном (скелетном) моделировании.