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

NX Open - объекты Drafting'а


harbel

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

Как в программе NX Open узнать, какому чертежу рабочей части (какому листу) принадлежит графический объект?

Или по другому: Как выбрать в части (программным путем) объекты только одного листа чертежа?

Ведь в цикле перебора объектов части можно только тип указать...

И, вроде, нету такого свойства у объектов как чертеж/лист, хотя в Info-> Object указывается, какому чертежу

принадлежит объект...

(речь идет об объектах drafting'а типа аннотаций)

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


Информация о дополнительных данных объекта

extern int UF_DRF_ask_associativity_data (

tag_t object,

int * num_associativities,

UF_DRF_object_assoc_data_p_t * associativity_data );

extern int UF_DRF_ask_associative_origin (

tag_t drafting_entity,

UF_DRF_associative_origin_p_t * origin_data,

double origin[ 3 ] );

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

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

(никаких ассоциативных объектов у них нет)

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

Увы, как я и думал никаких ассоц. данных у меня нет.

Пока не сделаешь set_associativit , ничего не получишь по ask_associativity, а объекты создавал не я.

Так что проблема, похоже, решения не имеет... :-(

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

На данный момент ( для NX2 ) решение такое.

1. Получаешь тег вида чертежа. Например так

int UF_DRAW_ask_current_drawing ( tag_t * drawing_tag );

int UF_DRAW_ask_view_of_drawing ( const tag_t drawing, tag_t * view );

2. Циклишься по объектам с типом UF_VIEW_DEPENDENT_OBJECTS в этом виде при помощи

int UF_VIEW_cycle_objects ( tag_t view, UF_VIEW_cycle_objects_t type, tag_t * object );

PS Known bugs

1. Скорее всего таким макаром (UF_VIEW_cycle_objects) можно пройтись по объектам ТОЛЬКО текущего чертежа ( активного ).

2. Для 100% гарантии что все объекты у тебя пройдут через цикл ( UF_VIEW_cycle_objects ) предварительно надо сделать

int uc6430 ( char * cp1, double * rr2, double * rr3 ); // сохранили scale / view center

int UF_VIEW_fit_view ( tag_t view_tag, double fraction ); // fit

// тут проциклились по объектам

int uc6431 ( char * cp1, double * rp2, double rp3 ); //восстановили scale / view center

Т.е. в сумме алгоритм такой

int UF_DRAW_ask_current_drawing ( tag_t * drawing_tag );

int UF_DRAW_ask_view_of_drawing ( const tag_t drawing, tag_t * view );

int uc6430 ( char * cp1, double * rr2, double * rr3 );

int UF_VIEW_fit_view ( tag_t view_tag, double fraction );

// цикл при помощи

int UF_VIEW_cycle_objects ( tag_t view, UF_VIEW_cycle_objects_t type, tag_t * object );

int uc6431 ( char * cp1, double * rp2, double rp3 ); //восстановили scale / view center

Regardzzz ...

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

опрос происходит, только имя вытащить не дает - ошибку пишет

имя так извлекаю:

UF_VIEW_cycle_objects(tag_t view_tag, UF_VIEW_cycle_objects_t view_c_o_type, tag_t &same_tab);

UF_OBJ_ask_name(tag_t same_tab, char temp_str[ 30 + 1 ] );

последняя выдает ошибку выполнения

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

если существует объекта типа note со своим именем на листе чертежа

int UF_DRF_create_note ( int num_lines_text, char * text_string[ ], double origin_3d[ 3 ], int orientation, tag_t * note_tag );

то его имя вытягивается посредством UF_OBJ_ask_name(...) , из вышеизложенных действий.

Однако, при присвоении объекту имени через UF_OBJ_set_name(...) , оно не вытягивается.

Как это имя можно получить? Или, тогда найти объект через его tag_t?

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

опрос происходит, только имя вытащить не дает - ошибку пишет

имя так извлекаю:

UF_VIEW_cycle_objects(tag_t view_tag, UF_VIEW_cycle_objects_t view_c_o_type, tag_t &same_tab);

UF_OBJ_ask_name(tag_t same_tab, char temp_str[ 30 + 1 ] );

последняя выдает ошибку выполнения

Из документации

If the object you query is not of an

object type listed in uf_object_types.h or if the object has no name, an

error code returns and name is set to the empty string, "".

Если запрашиваемый объект не имеет типа определенного в uf_object_types.h

или не имеет имени то код ошибки возвращается и имя устанавливается в пустую строку

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

элемент массива возращаемой строки

if(irc && obj_name[0] != NULL) ошибка

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

Спасибо, niki

Вариант с циклом через VIEW действительно работает. Он позволяет выбрать

объекты с одного листа чертежа, что мне и нужно.

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

Мой вариант

extern int UF_DRAW_ask_current_drawing (tag_t * drawing_tag );

extern int UF_DRAW_ask_view_of_drawing (const tag_t drawing, tag_t * view );

extern int UF_VIEW_ask_type (tag_t view_tag, UF_VIEW_type_t * type, UF_VIEW_subtype_t * subtype );

если type == UF_VIEW_DRAWING_SHEET_TYPE, то

extern int UF_VIEW_fit_view (tag_t view_tag, double fraction );

extern int UF_VIEW_ask_visible_objects (tag_t view, int * n_visible, tag_t ** visible, int * n_clipped, tag_t ** clipped );

здесь Вы получите объекты которые располагаются на текущем листе

Проверено работает в NX4.0.4.2 :clap_1:

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • maxx2000
      этому 5 лет в институте учат, ну или как минимум под руководством опытного конструктора на производстве. Функционал по ютубу ты может и освоишь, а понимания не будет, как и сейчас. В принципе база для проектирвоания прессформ в CREO на ютубе представлена нормально, язык в принципе не важен, включить субтитры и перевод на них. Остальное только с опытом. Разбирать чужие проекты и читать литературку по теме, ну и надеяться что кто-то передаст свой хлеб.
    • david1920
      Я ему сразу про это сказал Масса вопросов при этом уйдёт
    • gudstartup
      да вы правы но если бы стояла перемычка s2 тогда датчики подключались бы к jf1 jf2 а у автора s1 установлена!     в любом случае тогда они должны быть подключены  к карт управления осями а фоток так и нет    
    • Даниил_91
      Всем привет! Есть ли какие-то русскоязычные уроки по моделированию пресс-форм для пластмасс?   Я находил много зарубежных видео, но не совсем ясны некоторые операции, для чего они нужны и возможно ли их игнорировать вообще?   Интересуют уроки как в EMX, так и без него
    • mamomot
      От чего же? Я был безработный. Мне это было жизненно необходимо... Кстати, когда я пришел в первый день на новую работу, то первое задание выполнил в Компасе, на котором ни разу не работал...
    • maxx2000
      так если они скажут бабу им рыжую и вина красного. На то они и технологи, чтобы сами рисовать технологию с учётом применяемого метода обработки. В чертежах есть и отверстие и центры отверстий, вот пусть сами и рисуют какие им надо с учётом всех нюансов, они должны знать что там подкаливается или обезуглироживается и на какую глубину или ещё какие изменения происходят, например дырки эллипсом получаются . А так на хрена они нужны если за них всё делать. 
    • yunoleg
    • maxx2000
      ещё раз повторяю потому что  и я уже не единственный кто об этом упомянул
    • Killerchik
      Предложу поставить на стойку отдельный БП.
    • Jesse
      это вообще жижа какая-то... просто преднапряженный модальник сделал чел, и назвал "Диаграмма Кэмпбелла"..)) )) вал крутится, искривляется, колесо наклоняется, создаёт доп. момент и дополнительно нагружает вал. Гляньте мои картинки из Биргера выше..)) Заменяй колеса точечной массой, не заменяй. Будет так. И должны быть "вилка" на диаграмме. В оригинальной работе Кэмпбелла именно этот вопрос и поднимался - когда большое колесо (например, паровой турбины) наклоняется,  создаётся прецессия и "гироскопика", которое может в каких-то случаях сильно влиять на собств. частоты......... В итоге позже начали по своему интерпретировать.  Я бы действительно разграничил понятия "резонансная диаграмма" и ДК, где под первое подпадает 95% случаев описанных вами выше с картинками..))
×
×
  • Создать...