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

NX Open C программирование


NX-Open-Dummer

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

UF_VIEW_ask_visualization - проверил, для каждого входного компонента выдает такое же значение, как и для главной сборки, хотя они разные.

Через формат - ссылочный набор - MODEL количество элементов равно 1, а через утилиту показывает 2. Откуда берется этот второй элемент, непонятно? В одном из примеров, показало что равно 1, так что непонятна логика?

UF_VIEW_ask_visualization работает для рабочей части. При переборе сборки, ИМХО, надо "переключать" рабочую часть. При этом как и с фичерами по окуренсу надо определять таг части прототипа.

По ссылочному набору может быть у вас включена опция, что включать автоматически компоненты, и это объект компонента или окуренс. Проверьте по типу и под типу что за объекты.

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


По ссылочному набору может быть у вас включена опция, что включать автоматически компоненты, и это объект компонента или окуренс. Проверьте по типу и под типу что за объекты.

тип - UF_reference_set_type, под тип - UF_reference_design_model_subtype;

У меня в функции UF_ASSEM_ask_ref_set_data(feature, ref_set_name,origin,matrix,&num_members,&members) - не получается для тэга members извлечь имя, как это можно сделать, тогда хоть будет понятно, что за элементы присутствуют. С помощью какой ф-ции можно извлечь имя?

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

Все разобрался, 2 элемента получаются из-за того, что один это UF_solid_body_subtype, а второй это UF_faceted_model_jt_body_subtype

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

Подскажите, с помощью какой функции можно проверить, скрыт(Hide) ли элемент дерева построения модели?

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

Подскажите, с помощью какой функции можно проверить, скрыт(Hide) ли элемент дерева построения модели?

Мне кажется это не совсем корректно. Скрывают не элементы построения, а геометрические объекты (тела, кривые и т.д.). Следовательно смотреть надо примерно так: Элемент построения - Объект (тело кривая и т.д.) - ну а потом смотреть UF_OBJ_ask_display_properties
Ссылка на сообщение
Поделиться на других сайтах

Мне кажется это не совсем корректно. Скрывают не элементы построения, а геометрические объекты (тела, кривые и т.д.). Следовательно смотреть надо примерно так: Элемент построения - Объект (тело кривая и т.д.) - ну а потом смотреть UF_OBJ_ask_display_properties

Помогла функция UF_OBJ_ask_display_properties.

Большое спасибо за подсказку.

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

Здравствуйте, подскажите как поставить фон в моделировании как черную плоскость (Руками команда Настройки->Фон...->...). Перерыла и uf и nxopen-ские библиотеки, нашла как поставить фон в черчении, в эскизе, при рендеринг, попрабовала пару из них, но не помогло. Может я что пропустила? :confused_1: Помогите пожалуйста

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

Здравствуйте, подскажите как поставить фон в моделировании как черную плоскость (Руками команда Настройки->Фон...->...). Перерыла и uf и nxopen-ские библиотеки, нашла как поставить фон в черчении, в эскизе, при рендеринг, попрабовала пару из них, но не помогло. Может я что пропустила? :confused_1: Помогите пожалуйста

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

Спасибо работает, полдела сделано :) Теперь бы еще поставить фон как плоскость а не градуированный. Может подскажите и это?

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

Проблема следующего характера:

Имеется утилита, в которой используется функция UF_UGMGR_invoke_pdm_server(input_code,input_string,&output_code, &output_string ), с помощью которой в NX экспортируются свойства из Teamcenter.

На Windows XP с помощью этой утилиты мы можем извлечь свойства и утилита работает корректно, а вот на Windows 7, выполнение dll доходит до этой функции и отключается. Teamcenter при этом также отключается.

Остальные наши утилиты, работа которых не связана с Teamcenter, прекрасно работают и на XP и на Win7, создается впечатление, что проблема именно в функции «…invoke_pdm_server».

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

Проблема следующего характера:

Имеется утилита, в которой используется функция UF_UGMGR_invoke_pdm_server(input_code,input_string,&output_code, &output_string ), с помощью которой в NX экспортируются свойства из Teamcenter.

На Windows XP с помощью этой утилиты мы можем извлечь свойства и утилита работает корректно, а вот на Windows 7, выполнение dll доходит до этой функции и отключается. Teamcenter при этом также отключается.

Остальные наши утилиты, работа которых не связана с Teamcenter, прекрасно работают и на XP и на Win7, создается впечатление, что проблема именно в функции «…invoke_pdm_server».

Проверьте чем Вы собирали

Соответствует ли версия компилятора

Просто открываете текстовым редактором tcserver.exe

И смотрите версии dll c UF_UGMGR_invoke_pdm_server должна соответствовать

Аналогично для UG ugraf.exe

Если есть работающая dll и не работающая то можно провести анализ и сравнить их

с помощью утилиты dumpbin Она входит в состав VS

Для UG от 6

может быть актуален ключ препроцессора _SECURE_SCL=0

Если переносили проект из ранних версия а не создавали с нуля

Ключ актуален если Вы используете STL

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

Проверьте чем Вы собирали

Соответствует ли версия компилятора

Просто открываете текстовым редактором tcserver.exe

И смотрите версии dll c UF_UGMGR_invoke_pdm_server должна соответствовать

Аналогично для UG ugraf.exe

Если есть работающая dll и не работающая то можно провести анализ и сравнить их

с помощью утилиты dumpbin Она входит в состав VS

Для UG от 6

может быть актуален ключ препроцессора _SECURE_SCL=0

Если переносили проект из ранних версия а не создавали с нуля

Ключ актуален если Вы используете STL

Zlodeij уже убежал, я за него чуть подробнее напишу:

Проект как-раз с нуля создали.

Любая утилита с UF_UGMGR_invoke_pdm_server отказывается работать на Win7.

По логу: как только утилита пытается обратиться к Тимцентру - Тимцентр сразу выключается.

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

Когда то у нас были такие же проблемы на XP (использовали утилиту с этой же функцией), вылечили установкой vcredist.exe, может и 7-ой винде чего-то такого не хватает?

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

Добрый день!

Возник такой вопрос, с помошью какой функции можно стоздать копию объекта? Объект - твердое тело. В исходных данных имеем Tag тела, которое необходимо копировать.

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

Здравствуйте уважаемые знатоки!

На предыдущий вопрос ответ нашелся.

Сейчас возник другой, с помощью какого метода можно определить пересекаются ли объеты в модели? Задача состоит в следующем перемещаем тело вдоль кривой, если на пути встречается другое тело, то производим булеву операцию вычитание.

Я представляю решение этой задачи, как итерационный процесс, где на каждом шаге выполняется проверка пересекаются объекты или нет.

Буду благодарен за помощь! =)

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

Здравствуйте уважаемые знатоки!

На предыдущий вопрос ответ нашелся.

Сейчас возник другой, с помощью какого метода можно определить пересекаются ли объеты в модели? Задача состоит в следующем перемещаем тело вдоль кривой, если на пути встречается другое тело, то производим булеву операцию вычитание.

Я представляю решение этой задачи, как итерационный процесс, где на каждом шаге выполняется проверка пересекаются объекты или нет.

Буду благодарен за помощь! =)

Попробуйте UF_MODL_ask_dist...

Если дистанция больше 0 то тела точно не пересекаются

Можно значительно ускорить счет если задавать хорошие начальные приближения

Но для тел это не подойдет а только для граней

Также для ускорения можете использовать тот факт что если дистанция на каком-то шаге

X то гарантировано тела не столкнуться если перемещение от заданного положения одного тела относительно другого меньше Х

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

Попробуйте UF_MODL_ask_dist...

Если дистанция больше 0 то тела точно не пересекаются

Можно значительно ускорить счет если задавать хорошие начальные приближения

Но для тел это не подойдет а только для граней

Также для ускорения можете использовать тот факт что если дистанция на каком-то шаге

X то гарантировано тела не столкнуться если перемещение от заданного положения одного тела относительно другого меньше Х

Спасибо!

Но я не смог найти фукцию UF_MODL_ask_dist... В библиотеке uf_modl.h есть только фукция UF_MODL_ask_distance_tolerance она постоянно возвращает значение 0,001.

Прикрепляю скриншот модели. Имеем 38 тел, пемещение идет по цилиндрической спирали против часовой стрелки. Если какое-либо тело пересекло другое, то совешаем булеву операцию вычитание. Процесс продолжается до тех пор пока все тела не переместятся на 360 градусов. Перемещаем копии исходных объектов.

post-32938-1337231613_thumb.jpg

Изменено пользователем zu_rab
Ссылка на сообщение
Поделиться на других сайтах

Спасибо!

Но я не смог найти фукцию UF_MODL_ask_dist... В библиотеке uf_modl.h есть только фукция UF_MODL_ask_distance_tolerance она постоянно возвращает значение 0,001.

Прикрепляю скриншот модели. Имеем 38 тел, пемещение идет по цилиндрической спирали против часовой стрелки. Если какое-либо тело пересекло другое, то совешаем булеву операцию вычитание. Процесс продолжается до тех пор пока все тела не переместятся на 360 градусов. Перемещаем копии исходных объектов.

Есть еще функция UF_MODL_check_interference.. Возвращает три значения ПЕРЕСЕКАЮТСЯ, НЕ ПЕРеСЕКАЮТСЯ, КАСАЮТСЯ.

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

Есть еще функция UF_MODL_check_interference.. Возвращает три значения ПЕРЕСЕКАЮТСЯ, НЕ ПЕРеСЕКАЮТСЯ, КАСАЮТСЯ.

Спасибо!! =) Как раз то что нужно!! =)

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

Параллельно возник такой вопрос.

Для вычитания использую UF_MODL_subtract_bodies_with_retained_options(taget_body_tag, tool_body_tag, false, true, frec_eid), но после вычитания не могу пеместить тело инструмента (tool_body_tag), оно возвращается в исходную точку, где производилась булева операция. В чем может быть ошибка?

Перемещение осуществляется с помошью функции uf5947 (UFTrns.TransformObjects()).

P.S. Или как создать копию твердого тела, что бы произвести вычитание ей?

Изменено пользователем zu_rab
Ссылка на сообщение
Поделиться на других сайтах

Спасибо!

Но я не смог найти фукцию UF_MODL_ask_dist... В библиотеке uf_modl.h есть только фукция UF_MODL_ask_distance_tolerance она постоянно возвращает значение 0,001.

Прикрепляю скриншот модели. Имеем 38 тел, пемещение идет по цилиндрической спирали против часовой стрелки. Если какое-либо тело пересекло другое, то совешаем булеву операцию вычитание. Процесс продолжается до тех пор пока все тела не переместятся на 360 градусов. Перемещаем копии исходных объектов.

UF_MODL_ask_minimum_dist

Я бы рекомендовал пользоваться именно этой функцией

хотя бы для начальной оценки

На ней Вы сможете получить максимальную скорось выполнения программы

по сравнению с булевскими

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

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

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

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

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

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

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

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

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

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

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




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