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

Ug/open


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

Добрый день всем.

вопрос знатокам: В NX (а может уже и в 18, уже не помню) появился объект состоящий из трех датум полскостей и трех осей.

так-как построение одно, то данный объект получил распространение.

У меня была прога написаная под стандартные датум-плоскости. Один из моментов проги это получение вектора нормали плоскости. Делалось это через функцию UF_MODL_ask_datum_plane_parms. С новым объектом прога работать отказывается.

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

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


UF_MODL_ask_datum_csys_components (

tag_t datum_csys_tag,

tag_t * csys_tag,

tag_t * origin,

tag_t daxes[ 3 ],

tag_t dplanes[ 3 ] );

Далее в dplanes ищешь нужную и для неё юзаешь UF_MODL_ask_datum_plane_parms

PS Читайте тугоментацию тщательНЕЕЕ!

Regardzzz

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

niki

thx. Насчет документации прав... глаза дома оставил.

Но проблемы это не решило. Как выяснилось датум-плоскости в составе цсис имеют один фичетаг. Cоответствено, при запросе нормали, функция выдает нулевые значения... есть еще соображеия как получить нормаль конкретного датума внутри цсиса?

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

мда ... UF_MODL_ask_datum_plane_parms(...) для datum-ов, полученных из

UF_MODL_ask_datum_csys_components(...) просто НЕ РАБОТАЕТ -

возвращает ошибку !

Сейчас посмотрю, как можно по другому определить нормаль ...

PS Пардон за

Читайте тугоментацию тщательНЕЕЕ

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

Способ намба ван.

Алгоритм такой:

Находим фичер DatumCsys -> берем у него смарт объект csys -> у csys спрашиваем смарт родителей -> в них находим xform -> у него спрашиваем направления.

В итоге получаем 3 вектора, направления котрых совпадают с осями DatumCsys и , соответственно, являются нормалями к datum planes ( осталось только разобраться какой нужен :)

В аттаче исходник... этого алгоритма.... выглядит, конечно, коряво ....

Способ намба ту это выцепить датум плоскости, поверх них залепить ещё одни датум плоскости с оффсетом 0 ф-цией UF_MODL_create_relative_dplane (...) , и уже спрашивать нормаль у вновь построенных плоскостей, а потом новые плоскости удалить ....

Но этот способ я не проверял ...

Regardzzz....

source.cxx

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

мда ... UF_MODL_ask_datum_plane_parms(...) для datum-ов, полученных из

UF_MODL_ask_datum_csys_components(...) просто НЕ РАБОТАЕТ -

возвращает ошибку !

хех... тут все верно. UF_MODL_ask_datum_csys_components(...) возвращает object tag, а UF_MODL_ask_datum_plane_parms(...) просит feature tag для правильного функцианирования. А если у них спросить feature tag то онбудет один и тот же для всех - равный feature tag datum csys.

Находим фичер DatumCsys -> берем у него смарт объект csys -> у csys спрашиваем смарт родителей -> в них находим xform -> у него спрашиваем направления.

почему-то мне нравится больше второй вариант :)

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

Н-да. Похоже object tag'и датумов внутри csys правда какие-то карявые. object_tags[ 0 ]=datum;

UF_CALL(error = UF_MODL_create_relative_dplane (1,

object_tags,

point_select,

1,

reference_point,

"0",

"0",

&num_dplanes,

dplane_tag ));

отказывается работать. Ошибка 11. incorrect object for operation.

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

мда ... UF_MODL_ask_datum_plane_parms(...) для datum-ов, полученных из

UF_MODL_ask_datum_csys_components(...) просто НЕ РАБОТАЕТ -

возвращает ошибку !

кстати какую?

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

Похоже, с UF_MODL_ask_datum_plane_parms(...) я хорощо лоханулся :doh: ... Этой ф-ции надо давать таг фичера, а не объекта .... При попытке скормить ей таги datum-ов, получаемых из UF_MODL_ask_datum_csys_components(...) , пишет - "Incorrect object class".

Судя по всему, способ намба ван -

Находим фичер DatumCsys -> берем у него смарт объект csys -> у csys спрашиваем смарт родителей -> в них находим xform -> у него спрашиваем направления.

- единственный ... . Сейчас ещё разок гляну на uganswer.ugs.com - может там что есть по этой баге.

Regardzz...

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

Сейчас ещё разок гляну на uganswer.ugs.com - может там что есть по этой баге.

:) хорошо тебе. Я теперь без web key сижу... кстати...

2all: Никто не поделится?

Похоже, с UF_MODL_ask_datum_plane_parms(...) я хорощо лоханулся  ... Этой ф-ции надо давать таг фичера, а не объекта .... При попытке скормить ей таги datum-ов, получаемых из UF_MODL_ask_datum_csys_components(...) , пишет - "Incorrect object class".

тут все верно. еще интересней что при попытке создать относительную датум-плоскость я получаю примерно такую же ошибку. Хотя там вроде и просят и таг объекта.... Отсуда вопрос: Че ж это вообще за таги?

+ Бонус-вопрос: Что есть direction в UGopen? Просмотрел кучу вариантов функций которые возвращают либо таг либо указатель на таг этого самого "направления". а какова у него структура? что это такое вообще? ручками его сформировать можно?

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

метод намба 3 - получен путем изучения в дизассемблере, что же делает ф-ция UF_MODL_ask_datum_plane_parms(...) . Но это есть грязный хак, и в следующих версиях UG (UGNX2, 3 ... ) может не сработать. Тестировалось для UGNX1.

Собсно в недрах libugft.dll найдена ф-ция, которая по тагу датума ( тот который получается из UF_MODL_ask_datum_csys_components(...) ), дает нормаль.

Далее через LoadLibrary / GetProcAddress её и юзаем ... При этом параметры и порядок их передачи в ф-цию подобран интуитивно, но вроде как верно ... сейчас в отладчике ещё разок гляну ... на всякий случай.

Сорс прилагается.

PS

Бонус-вопрос: Что есть direction в UGopen?

- единственный объект direction --- UF_direction_type, который я знаю, - это из смарт объектов - смотреть в uf_so.h

Regardzzzz .....

source_trick.cxx

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

н-да. Я втакие недра не полезу пока... :) Тут еще вопрос не решен по поводу nx2

Так что переписывать прогу при каждом апдейте че-то не светит. :(

сенкс за помощь и содействие. (Большое) :) Пока поставил заплатку: добавил в диалог кнопку которая просто направления делает. так что пока ждемс. может в следующих версиях профиксят.

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

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

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

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

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

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

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

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

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

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

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




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