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

Програмирование в NX4


Vikont-F

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

NX4

Есть деталь, на нее назначается ссылочный набор с именем "т45"(формат-ссылочный набор). Таких деталек за 100 шт. Хочется написать программу которая автоматически назначит, ну или хотя бы создаст такой набор. В журнале название функции не пишется. Где найти ее(кто знает)? А то в документации тяжко искать. Вопросы "на фига так делать", не надо плиз писать, такое пожелание заказчика.

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


NX4

Есть деталь, на нее назначается ссылочный набор с именем "т45"(формат-ссылочный набор). Таких деталек за 100 шт. Хочется написать программу которая автоматически назначит, ну или хотя бы создаст такой набор. В журнале название функции не пишется. Где найти ее(кто знает)? А то в документации тяжко искать. Вопросы "на фига так делать", не надо плиз писать, такое пожелание заказчика.

Defined in: uf_assem.h

Overview

Creates a reference set at the coordinates specified, with the given

name, orientation, and members.

Environment

Internal and External

History

Original release was in V14.0.

Required License(s)

assemblies

int UF_ASSEM_create_ref_set

(

const char * ref_set_name,

double origin [ 3 ] ,

double matrix [ 9 ] ,

tag_t * ref_set_members,

int num_members,

tag_t * ref_set_tag

)

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

:clap_1: спасибо!

и еще вопрос, есть какой-то способ узнать название функции помимо журнала?

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

NX4

Есть деталь, на нее назначается ссылочный набор с именем "т45"(формат-ссылочный набор). Таких деталек за 100 шт. Хочется написать программу которая автоматически назначит, ну или хотя бы создаст такой набор. В журнале название функции не пишется. Где найти ее(кто знает)? А то в документации тяжко искать. Вопросы "на фига так делать", не надо плиз писать, такое пожелание заказчика.

Я так понимаю, что в части только одно твердое тело и это тело вы хотите включить в ссылочный набор под названием "т45"? Правильно ли я понял?

Если да, то в настройках NX есть такая штука как автоматический ссылочный набор. Можно настроить так, чтобы NX сам создавал ссылочный набор и включал в него все твердые тела. Но это не будет работать с уже созданными частями.

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

еще вопрос,

Мне нужно получить все объекты, чтобы потом их экспортировать. Сейчас заставляю пользователя выбирать все тела вручную функцией SelectObjects() путем нажатия Ctrl+A. А как бы мне сделать, чтобы программа сама выбрала все объекты? (Которые подходят для экспорта, я предполагаю что это "отображаемые объекты".)

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

еще вопрос,

Мне нужно получить все объекты, чтобы потом их экспортировать. Сейчас заставляю пользователя выбирать все тела вручную функцией SelectObjects() путем нажатия Ctrl+A. А как бы мне сделать, чтобы программа сама выбрала все объекты? (Которые подходят для экспорта, я предполагаю что это "отображаемые объекты".)

int UF_OBJ_is_displayable

(

tag_t object_id,

logical * is_displayable

)

int UF_OBJ_is_transferable

(

tag_t object_id,

logical * is_transferable

)

tag_t UF_OBJ_cycle_all

(

tag_t part_tag,

tag_t object

)

int UF_OBJ_cycle_objs_in_part

(

tag_t part_tag,

int type,

tag_t * object

)

int UF_PART_open

(

const char * part_name,

tag_t * part,

UF_PART_load_status_t * error_status

)

tag_t UF_ASSEM_ask_work_part

(

void

)

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

....

благодарю, выглядит очень понятно и доступно, но у меня ничего не выдает....

Если obj_tag2 строго приравниваю к Null перед первым вызовом, все равно ничего не меняется.

Если вместо AskWorkPart писать basepart2 - ничего не меняется.

VB.NET, пишу так:

Dim partloadstatus2 As UFPart.LoadStatus

Dim basepart2 As NXOpen.Tag

Dim Disp_obj As NXOpen.UF.UFObj

Dim disp_bool As Boolean

Dim i3 As Integer = 0

Dim obj_tag2 As NXOpen.Tag



nxopenSession.Part.Open("F:\123.prt", basepart2, partloadstatus2)



nxopenSession.Obj.CycleAll(nxopenSession.Assem.AskWorkPart(), obj_tag2)

	Do

		If obj_tag2 <> NXOpen.Tag.Null Then Disp_obj.IsDisplayable(obj_tag2, disp_bool)

		If disp_bool = True Then i3 = i3 + 1

		disp_bool = False

		nxopenSession.Obj.CycleAll(basepart2, obj_tag2)



	Loop While obj_tag2 <> NXOpen.Tag.Null

MsgBox("i3=" + i3.ToString)

i3=0

Как быть?

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

Я для obj.cycle... тег части беру через UF_PART_ask_display_part и всегда работало.

И если тип объектов знаешь, лучше использовать cycle_object_in_part.

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

Я для obj.cycle... тег части беру через UF_PART_ask_display_part и всегда работало.

И если тип объектов знаешь, лучше использовать cycle_object_in_part.

Продолжу беседу под своим родным ником, под тем я с работы писал.

Взял тэг через AskDisplayPart(), тэг получил тот же самый, результат Obj.CycleAll по прежнему Null уже при первом вызове.....

Значит с тэгом проблемы нет: я либо что-то не так объявил, либо что-то не туда подставил.

Как быть?

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

По твоему коду который выше:

1. перед первым вызовом cycle тег объекта не инициализирован нулем.

2. я б попробывал без IsDisplayable, можно просто посчитать кол-во итераций.

3. Ну еще можно поробывать сделать это не в сборке (так, для проверке).

А так, вроде все правльно, должно работать.

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

По твоему коду который выше:

1. перед первым вызовом cycle тег объекта не инициализирован нулем.

2. я б попробывал без IsDisplayable, можно просто посчитать кол-во итераций.

3. Ну еще можно поробывать сделать это не в сборке (так, для проверке).

А так, вроде все правльно, должно работать.

koner, Благодарю, сегодня утром разобрался самостоятельно. Стоит признаться: причину не понял, по сути заработал этот же код. Мистика. :rolleyes:

Не инициализированный тэг начальный на результат не влиял.

IsDisplayable тоже начало работать.

Теперь уперся в проблему по сборкам. Какой функцией перебирать дочерние компоненты?

Читал справку насчет occurence и еще чего-то, так и не понял - occurence мне нужны или нет. А с ними связаны уже тэг part, тэг occurence, их имена и разнообразие функций для перехода от одного к другому.

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

Пытаюсь простыми msgbox( ) вывести поочереди имена (или пути, или тэги) входящих деталей. Тэг текущей рабочей детали мне очевидно известен, благодаря это теме. Мой код увы остался на работе.

Если подскажите еще и функцию для замены ("подстановки") дочерних компонентов, то вообще буду безмерно счастлив.

ps тема далеко ушла от своего названия, возможно мне стоило перейти в соседнюю где обсуждают сборки...

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

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

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

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

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

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

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

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

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

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

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




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