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

Unigraphics NX Open API. Есть вопросы


mannyz

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

Всем приветик!

Суть такова: надо написать dll-ку при помощи NX Open API (для с++), которая используется в Unigraphics NX и экспортирует содержимое открытого файла (.prt) в некий xml-файл. Возникли сложности с реализацией того, что должна делать dll-ка. Подскажите, пожалуйста, как можно осуществить следующее (или хотя бы какие функции надо использовать):

1. выявить в модели (обрабатываемый открытый файл) ссылки на объекты. То есть надо записать в xml-файл полную информацию о дублирующемся элементе (шаблоне) только один раз и дополнить описание модели информацией о том, где вставлять данный шаблонный элемент. Все, что было в файле uf_assem.h (кажется, так), перепробовал, но ничего толкового не вышло.

2. нужно переносить в xml-файл данные о точках. При этом хорошо бы уметь разделять информацию о "системных" точках (видимо есть такие, потому что в модели я нарисовал две точки, а насчитал аж 34) и "пользовательских". Кстати, я даже еще не нашел концов как именно можно считывать информацию о точках (координаты и т.п.). Понятно, что у нас есть общий цикл, который перебирает объекты модели, и мы смотрим на тип и подтип этого объекта. То есть понять, что это точка мы можем. А дальше что? Вышел пока только на какой-то класс 3dPoint (кажется так звучит). Но потом сразу же вышел с работы домой.

3. И как можно повлиять на качество наложения фасетной сетки. Может быть, в API что-то и было, но так как я в геометрическом моделировании не силен, мог упустить из виду. Было бы здорово уметь выдавать качество от совсем угловатой сетки до совсем прилегающей к поверхности объекта (детали). Это случайно не в структуре для properties надо передавать в вызове функции для получения фасетной модели? ))

Кстати, может быть, кто-нибудь поделиться NX Open API Guide? Или любыми ресурсами по NX Open API. Был бы признателен.

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

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


1. выявить в модели (обрабатываемый открытый файл) ссылки на объекты. То есть надо записать в xml-файл полную информацию о дублирующемся элементе (шаблоне) только один раз и дополнить описание модели информацией о том, где вставлять данный шаблонный элемент. Все, что было в файле uf_assem.h (кажется, так), перепробовал, но ничего толкового не вышло.

2. нужно переносить в xml-файл данные о точках. При этом хорошо бы уметь разделять информацию о "системных" точках (видимо есть такие, потому что в модели я нарисовал две точки, а насчитал аж 34) и "пользовательских". Кстати, я даже еще не нашел концов как именно можно считывать информацию о точках (координаты и т.п.). Понятно, что у нас есть общий цикл, который перебирает объекты модели, и мы смотрим на тип и подтип этого объекта. То есть понять, что это точка мы можем. А дальше что? Вышел пока только на какой-то класс 3dPoint (кажется так звучит). Но потом сразу же вышел с работы домой.

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

Укажите версию юниграфикса! Далее пишу со своей колокольни NX 4.

Не важно на чем вы пишите, .NET или C++ или другие варианты, функции одинаковые. Немого меняется синтаксис, например то пишутся подчеркивания, то слитно, - но все это легко находится во встроенной справке. Я пишу на VB.NET, пользуюсь поиском в TotalCommaner в \ugdoc\ваш язык\ , удобно искать и по имени, и по содержимому (для сложных фраз).

1. Внутри модели ссылки на объекты выглядят как свойство .tag каждого объекта.

Открытый файл будет что-то в духе thesession.part.getdisplay() , где соответственно сессия описывается как Dim thesession as nxopen.session = getsession().

Перебор внутри файла ищите по слову CycleObj и по CycleObjInPart (если знаете тип).

Я совершенно не понял, что вы хотите делать с файлом. Экспорт? Или скопировать координаты всех точек в другой файл?

В uf_assem.h я не заглядывал, как-то обошлось без заголовочных файлов.

2. Никаких хитрых системных точек в модели нет. Просто при переборе объектов, вы найдете GetStatus() , который возвращает 4 значения, среди которых: DELETED, и ALIVE. В вашем случае, сразу в цикле перебора CycleObj проверяете статус = ALIVE и будет вам счастье. В справке на каждом шагу написано - проверяйте свойство Alive, во избежание проблем.

Вы знаете, что Вам нужны точки. Т.е. тип известен - перебирайте через CycleObjInPart, проверяйте .getstatus() = ALIVE.

Отлично, 3dPoint, это правильно. Насколько помню, у него есть свойства X, Y, Z. Смотрите их, и сохраняете в нужный Вам файл.

Прошу прощения, не могу выложить исходников. NX на работе, USB-закрыты, дома нету. Постарался указать общее направление. На этом форуме отличные вопросы и ответы по NX Open, мне уже много раз помогли.

ps я так же выбирал программно все твердые тела на определенном слое, несколько дней думал, какой подтип для перебора поставить. Оказалось подтип = 0 и все отлично. Советую попробовать подтип 0 если будите сомневаться :).

Успехов!

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

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

Укажите версию юниграфикса! Далее пишу со своей колокольни NX 4.

...................

Успехов!

Спасибо за ответ. Честно говоря, после того как прошло три дня с поста я не заглядывал на форумы, так как окончательно отчаялся - никто не отвечал. Но очередная нужда случайно забросила меня опять сюда (а я и забыл, что постил здесь :)).

Про ALIVE теперь буду знать. Получается, что можно отследить историю изменения модели?

Я совершенно не понял, что вы хотите делать с файлом. Экспорт? Или скопировать координаты всех точек в другой файл?

Получается, что я делаю экспорт через копирование координат в xml-файл. Суть в том, что мы копируем геометрию из NX в виде фасетных моделей солидов (координат фасетов) в этот самый xml-файл. А потом в другой программе читаем файл и получаем NX-овские солиды. Ну и кроме солидов, желательно копировать точки и в дальнейшем все другие геом.примитивы.

Сейчас как раз надо разобраться как сделать более оптимизированно весь экспорт с учетом шаблонов (prototype и, соответственно, их occurrence), в котором должна поддерживаться вложенность шаблонов. В NX распознать все это дело можно, но возникают трудности с сохранением фасетных моделей шаблонов. То есть, фасетные модели солидов из prototype надо сохранять (считывать координаты точек фасетов), грубо говоря, в локальной системе координат этого prototype, а не в глобальной системе всей сборки, где данный prototype выступает как occurrence. При этом надо перемещаться по иерархии без UF_ASSEM_set_work_part (), так как на такое переключение тратиться много времени. Может поможет UF_ASSEM_set_work_part_quietly(). А вообще, у меня идея при пробегании по иерархии part-ов менять систему координат. Надо посмотреть, что из этого получится.

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

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

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

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

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

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

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

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

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

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

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



  • Сообщения

    • IGor2D
      По итогу...: По гарантии приехали и поправили только точность реза, остальное не смогли исправить, нужен инженер с HSG. Глючный однако китаец, пытается сам себя сломать.
    • Gmv
      По кнопке FTP стойка имеет 6 страниц для трех разных хостов. Где можно указать IP , имя, пароль 1страница. каталог 2 страница. Больше настроек не нашел.
    • gudstartup
      на фануке настраиваете доступ по ftp на соответствующей вкладке  и также расшариваете папку  вашим сервером и все прекрасно работает.
    • gudstartup
      симулятор предполагает взаимодействие как с чпу так и со станком посредством другой plc программы иначе вам придется самому управлять входами и выходами а это непросто.    
    • Gmv
      У кого есть опыт организации FTP именно на станке? Стойка 0i-MF plus   Сейчас пока сервер настроен на компе, и то не до конца. файлы видны, извлечь их или скопировать в память станка не выходит. Но операторы уже сразу возмущены,  им проще бегать с USB флешкой и нажимать одну кнопку, чем прыгать по папкам. На хаасе это реализовано классно, он создает сетевой диск и полный доступ и со стойки с пк. Хотелось бы подобного.
    • Guhl
      Я нормально проекты писал и отлаживал на эмуляторе Балт-Систем На Heidenhain, насколько я понял, работает симулятор с их сайта в связке с PLC design @gudstartup пользовался этим вот в этой ветке
    • ID_Hacker
      Ну уж балт-систем то не надо сюда. Там такое ущербное всё, что аж страшно вспомнить. Haidenhain эмулятор где взять, подскажете? А как отработать взаимодействие между NC и PLC, действия где работают и оси и механизмы электроавтоматики. Сам хочу попробовать Run my virtual machine, да всё времени нет.
    • Bot
      Данное приложение разработано на языке Visual Basic с использованием программного интерфейса NX Open API и предназначено для использования в САПР Siemens NX, начиная с версии 2000. Стиль интерфейса пользователя идентичен стилю САПР Siemens NX. View the full article
    • Jesse
      @ГЕЛА Ещё можно посчитать в балках и учесть влияние отверстия через коэффициент концентрации напряжений..) Но у вас отверстие на всю стенку, так что лучше, проще и быстрее посчитать всё это дело в оболочках как выше сказали. Скругления перехода от стенки к полке удалите и в запас считайте.
    • 5axisCNC
      Можно плоскость дна задать множеством вариантов например точка направление
×
×
  • Создать...