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

уникальная идентификация объекта через 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 пользователей

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




  • Сообщения

    • malvi.dp
      Так в чем проблема создать кривую и протянуть профиль? Единственная трудность это кривую сделать из дуг и отрезков, а не сплайном. Если же не использовать инструментарий сварных конструкций, то можно и сплайн использовать в качестве направляющей.  
    • Alexey0336
      Добрый день. Как то фигурировал тут вопрос с точкой в названии файла. У меня проблема, не могу захватить модель, пишет, что с этим символом нельзя. Обойти никак нельзя получается?
    • malvi.dp
      У вас там скорее всего скрыты размеры. Перетяните их дальше от штриховки, чтоб не пересекали.
    • Snake 60
      @Бестолковый С названием топика не ошиблись? Человек спрашивает: ' VBA ' 1. Open a document in SOLIDWORKS. ' 2. Run the macro below to set inch units with '     a fractional base of 16 and no rounding. Dim swApp As SldWorks.SldWorks Dim Part As SldWorks.ModelDoc2 Option Explicit Sub main()    Set swApp = Application.SldWorks    Set Part = swApp.ActiveDoc    Part.SetUnits swINCHES, swFRACTION, 16, 0, False End Sub   Код взят отсюда: https://help.solidworks.com/2019/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.imodeldoc2~setunits.html Вот еще описание всех методов: https://help.solidworks.com/2021/English/api/swconst/DP_Units.htm Ну и на вкусное, статья от Артема (см. через ВПН) https://www.google.com/url?sa=t&source=web&rct=j&opi=89978449&url=https://www.codestack.net/solidworks-api/options/document/set-units/&ved=2ahUKEwjgpL-apN6GAxU7HxAIHYO0D2IQFnoECBAQAQ&usg=AOvVaw15xq49gocoVQ5BzEA31qGf
    • Shvg
      IModelDocExtension.SetUserPreferenceInteger(swUserPreferenceIntegerValue_e.swUnitSystem, swUserPreferenceOption_e.swDetailingNoOptionSpecified, swUnitSystem_e.<Value>), где swUnitSystem_e.<Value> перечисление swUnitSystem_CGS           1 = Centimeter, gram, second  swUnitSystem_Custom        4 = Lets you set length units, density units, and force  swUnitSystem_IPS           3 = Inch, pound, second  swUnitSystem_MKS           2 = Meter, kilogram, second  swUnitSystem_MMGS          5 = Millimeter, gram, second   
    • Ветерок
      Вопрос про "включение RGK". Если в модели какие-то функции сделаны с использованием RGK, эта модель будет работоспособной на другом компе, где RGK "не включен"? И вообще не понятно, получается система использует два разных ядра одновременно? Или включая RGK, автоматически выключается Прасолид? А обратно переключиться можно? Если можно итак, и так, и туда, и обратно, тогда не понятно зачем вообще это включение-выключение.
    • TVM
      Так на скорую руку строились. Ясно что такое воспроизвести в живую затруднительно. 
    • Борман
    • Shura762
      Уважаемый @mamomot  вы ошибаетесь на счет  они (топсистемы) уважают пользователей T-FLEX PLM, и им была приведена презентация нового продукта, рассказаны пути развития этого продукта и как часть всего этого интересного 18 версия када. Лично внешний вид мне понравился, осталось узнать про "плюшки" облегчающие работу конструктора.
    • mamomot
      Нужно уважать пользователей. Понимаю, что сейчас идет "охота" на госкорпорации. Но из уважения к другим пользователям, купившим ранее версии Тифлекс, можно было бы дать хоть какой-то обзор нового: Металлоконструкции, Детали Машин, другие модули...  
×
×
  • Создать...