Сообщество программистов Autodesk в СНГ
ADN Club => Inventor API => Тема начата: filat от 27-02-2014, 09:49:14
-
Каждый элемент (вершина, ребро, круг, дуга, ...) имеет свой идентификатор (уникальный код, который генерируется при создании данного элемента), по которому, например, в сборке привязки разпознают что и с чем должно быть совмещено...
Существует ли какой-нибудь способ переноса идентификатора от одного элемента на другой?
Поясню на примере: есть деталь из листового материала с отверстием, которая входит в сборки и привязывается за это отверстие. Мне нужно в детали заменить отверстие на овальную выштамповку. И в результате я хочу чтоб при открытии сборки привязка не вызвала ошибку, а определила дугу овала как родную...
-
ReferenceKey является не только уникальным идентификатором, но и Read-Only. Подменить его средствами Inventor API не удастся. В описываемом случае надо привязываться к инвариантной геометрии, которая не исчезает при замене одного конструктивого элемента на другой.
Альтернативный вариант - привязку проверять программно и при необходимости перепривязывать, используя имена элементов, атрибуты и т.п.
Иногда используют iMate
- в Инвенторе уже есть интерфейс для создания iMate (в отличие от атрибутов),
- у iMate есть имя, видимостью имен можно управлять,
- внутри iMate живет честная ссылка на геометрию B-Rep.
-
iMate не получается использовать в больших сборках - так как есть много разных соединение и много одинаковых деталей...
ReferenceKey остается уникальным только до тех пор, пока не начинают создаваться новые детали методом копирования старых - а это из основных методов моделирования в АИ... Разумеется нельзя допускать копирование ReferenceKey внутри одной детали, а вот копирование между деталями и перенос внутри детали - это уже нужная вещь!
Как и с любой технологией - эту можно довести до абсурда, но если ее применять правилно, то она будет чрезвычайно нужной и полезной!
-
Если стоит задача лишь найти элемент геометрии для построения зависимости, то присмотритесь к атрибутам. Это самое простое решение. Копирование деталей сохраняет атрибуты. См. объект 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.
Разумный выход - использование для привязок геометрии, которая локальным редактированием не затрагивается. Эта простая идея в полное мере используется, например, в каркасном (скелетном) моделировании.