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

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 пользователей

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




  • Сообщения

    • clavr
      ну а как? вопрос то был как лучше/правильнее
    • Orchestra2603
      Опять экзаменуете.. Легко увидеть, что если lambda_1- СЗ, то при сдвиге "+w" lambda1-w становится СЗ. Только к чему вы клоните?  На этом примере это плохо видно, поскольку ранг матрицы уменьшается строго на 1. Если взять балочный элемент, парящий в воздухе, то там нулевое СЗ имеет 2ю кратность. И ранг матриц уменьшается на 2. Так вот там собственное пространство для нулевого значения двумерно. Но нам не нужен один какой-то вектор решения. Нам нужен базис этого пространства. Но, да, на практике на бумажке мы сначала где-то в одноим месте ставим 1, в дргом ставим ноль, находим вектор. Потом меняем местами и находим второй.   Я не считаю, что тут это как-то сводится к закреплениям. В статике нам важно, где и как вносится закрепление в систему. В задачах на собственные значения - это задается во многм произвольно. Но это разговор уже о понятийном аппарате, а не о сути дела. 
    • Krusnik
      Не делать так.   Скорее всего там циклическая ссылка. Вырез в одной детали, потом к вырезу сопряжениями привязывается вторая деталь, а к ней третья.  Сам вырез образмерен от третьей детали.   Если такой фокус проделать - то перестраиваться будет очень долго.
    • fenics555
      т.е. откуда и из чего инструмент- вообще без разницы? это не плазма, там всё более- менее нормально.
    • mannul
      Раскатник М6 выдерживает 1000-1500 отверстий глубиной 14мм в стали 30хгса, метчик М6 - около 500. Сколько выдержит раскатник М6 в конструкционной стали толщиной 6мм, в отверстиях, вырезанных на лазере?
    • brigval
      Я бы предложил рассмотреть вариант описания крепления изделия на паллете в руководстве по эксплуатации, отдельным разделом. Или в инструкции по транспортированию, если такая есть (если нет, сделать).
    • Даниил_91
      С шаблонами тоже разбираюсь, много инфы по ним, у каждого своя, кто как настраивает, поэтому я посмотрю параметр, на который вы мне указали, спасибо Спасибо всем за ответы, буду пробовать по вашим рекомендациям
    • fenics555
      м5 и м6 лучше делать расскатником. расскатники пойдут.
    • mannul
      Меня интересует стойкость обычного машинного метчика с покрытием PVD или ALTiN. Сколько отверстий, допустим M5, M6 и глубиной 6мм выдержит метчик в таких отверстиях. Раскатники дороже метчиков в разы, а твердосплавные метчики слишком дорогое удовольствие и труднодоступны, плюс очень мало производителей делают твердосплавные метчики. К тому же твердосплавные очень хрупкие и не подойдут для нарезания резьбы манипулятором, только на станке. Есть похожая работа, вот и интересуюсь.
    • fenics555
      там закарка на слой 0,1 есть твердосплавные метчики, есть расскатники, у которых стойкость в разы больше.
×
×
  • Создать...