Перейти к публикации

уникальная идентификация объекта через Open API


mannyz

Рекомендованные сообщения

Здравствуйте!

Скажите, пожалуйста, есть ли способ однозначной идентификации объекта в NX посредством предоставляемого API (для C/C++)?

Получается следующее. У всех объектов NX есть tag-и. В принципе, можно к ним привязаться, но есть одно но... От сессии к сессии tag-и могут изменяться. Допустим, при первом запуске NX я сразу же открыл свой файл assy1.prt. И у его объектов какие-то значения tag-ов. При втором запуске NX я сначала открываю файл assy2.prt, а потом только assy1.prt. И получается, что для файла assy1.prt tag-и объектов уже другие нежели в первом случае запуска NX.

Вообще, задача стоит следующая. Надо уметь сопоставлять некую информацию (которая хранится, допустим в файле на диске и добывается путем запуска плагина в NX) с определенными объектами (компонентами) моделей NX. Имеются в виду конкретные объекты сборки (или там не сборки), а не объекты определенного типа. При этом требуется, чтобы при последующих запусках NX и плагина эта информация могла бы, грубо говоря, находить тот объект, к которому она привязана. Желательно, чтобы при каких-то не фатальных изменениях модели (например добавили еще один компонент или удалили) эта связь не терялась.

Ориентироваться на порядок расположения компонентов в дереве сборки нельзя. Так как NX автоматически расставляет добавляемые компоненты и не всегда в конец. или же случай удаления компонента.

кстати, есть еще такой вопрос. если мы для какого-то подкомпонента в сборке заменили файл (nx ведь ссылается на имя файла при вставке компонента), а точнее его содержимое, то, чисто гипотетически, может ли NX открыть сборку с такой подменой и подставить все с учетом измененного содержимого компонента? У меня сборка открылась, но подмененный компонент был неактивным.

Может быть, надо копать в сторону UDO? Но хотелось бы не привязываться к конкретным возможностям CAD-а, так как подобный функционал надо будет реализовать в других системах.

Скажите, вообще где можно найти какую-либо техническую документацию по внутренностям NX? например, как формируются tag-и.

Помогите, пожалуйста

Ссылка на сообщение
Поделиться на других сайтах


Скажите, пожалуйста, есть ли способ однозначной идентификации объекта в NX посредством предоставляемого API (для C/C++)?

Этот вопрос уже обсуждался здесь воспользуйтесь поиском. Копать надо в сторону UF_TAG_ask_handle_of_tag

кстати, есть еще такой вопрос. если мы для какого-то подкомпонента в сборке заменили файл (nx ведь ссылается на имя файла при вставке компонента), а точнее его содержимое, то, чисто гипотетически, может ли NX открыть сборку с такой подменой и подставить все с учетом измененного содержимого компонента? У меня сборка открылась, но подмененный компонент был неактивным.

Ничего не понятно, что все же надо сделать, можно на кошечках?
Ссылка на сообщение
Поделиться на других сайтах

Этот вопрос уже обсуждался здесь воспользуйтесь поиском. Копать надо в сторону UF_TAG_ask_handle_of_tag

О! Спасибо большое! Это то, что надо. Видимо.

Ничего не понятно, что все же надо сделать, можно на кошечках?

меня всегда почему-то просят объяснить на кошечках - это становится подозрительным :).

значит так. у нас есть три файла part1.prt, part2.prt и assy.prt. Соответственно, assy.prt содержит в себе сборку из компонентов, которые представляют файлы part1.prt и part2.prt. Затем я вручную беру и через средства Windows операцией копирования замещаю файл part1.prt на какой-либо другой с таким же именем. После этого я открываю файл сборки assy.prt. И теперь возникает вопрос: при открытии этой сборки (assy.prt) сможет ли NX каким-либо образом нормально воспринять такую подмену и подставить новое содержимое файла part1.prt? Или такое в принципе не возможно?

У меня получилось так, что сборка то открылась, но подмененный компонент не загрузился.

Ссылка на сообщение
Поделиться на других сайтах

значит так. у нас есть три файла part1.prt, part2.prt и assy.prt. Соответственно, assy.prt содержит в себе сборку из компонентов, которые представляют файлы part1.prt и part2.prt.

Затем я вручную беру и через средства Windows операцией копирования замещаю файл part1.prt на какой-либо другой с таким же именем. После этого я открываю файл сборки assy.prt. И теперь возникает вопрос: при открытии этой сборки (assy.prt) сможет ли NX каким-либо образом нормально воспринять такую подмену и подставить новое содержимое файла part1.prt? Или такое в принципе не возможно?

У меня получилось так, что сборка то открылась, но подмененный компонент не загрузился.

Есть несколько нюансов:

1. Опции загрузки

2. Как было сделано "копирования замещаю файл part1.prt на какой-либо другой с таким же именем"

Если в опциях загрузки сборки стоит разрешить замену ВКЛ, то компонент автоматически замениться тот, что на диске, если ВЫКЛ, то замены не будет

Если вы скопируете файл part1.prt в part11.prt измените его и переименуете part1.prt - part1_old.prt, а part11.prt в part1.prt, то замена произойдет без сучка. Сам файл не меняется (его ID остается темже, имя тоже)

Если создадите новый файл с именем part1.prt, а старый переименуете, то при включенной опции загрузки разрешить замену, замена произойдет, то сругается "Деталь не является правильной версией детали компонента" и при этом слетят ограничения сборки линковки и т.д.

Ну как то так

Ссылка на сообщение
Поделиться на других сайтах

Если создадите новый файл с именем part1.prt, а старый переименуете, то при включенной опции загрузки разрешить замену, замена произойдет, то сругается "Деталь не является правильной версией детали компонента" и при этом слетят ограничения сборки линковки и т.д.

У меня второй вариант событий. То есть, грубо говоря, берем какой-нибудь левый файл и переименовываем его в part1.prt, а оригинальный part1.prt удаляем. Кстати, у меня именно такое сообщение ("Деталь не является правильной версией детали компонента") и выскакивало. Только я не совсем понял - замена произойдет или нет? Не совсем ясна фраза

то при включенной опции загрузки разрешить замену, замена произойдет, то сругается

.

В ообщем, теперь только на работе смогу поиграться с настройками и посмотреть что получается. Но спасибо за ответ

Ссылка на сообщение
Поделиться на других сайтах

У меня второй вариант событий. То есть, грубо говоря, берем какой-нибудь левый файл и переименовываем его в part1.prt, а оригинальный part1.prt удаляем. Кстати, у меня именно такое сообщение ("Деталь не является правильной версией детали компонента") и выскакивало. Только я не совсем понял - замена произойдет или нет? Не совсем ясна фраза .

Если опция загрузки разрешить замену ВКЛ, то замена произойдет!
Ссылка на сообщение
Поделиться на других сайтах
  • 11 лет спустя...

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...