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

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


NX-Open-Dummer

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

Подскажите, имеется сборка с входящими компонентами. Как можно извлечь дерево построения для каждого компонента?

У меня почему-то извлекает дерево построения сборки, а дерево построения компонентов не извлекает.

Делаю следующим образом:

feature = (UF_OBJ_cycle_all(part_tag, feature));

if (feature == NULL_TAG)

{

break;

}

UF_CALL(UF_OBJ_ask_type_and_subtype(feature, &o_type, &o_subtype));

if (o_type == UF_feature_type)

{

UF_CALL(UF_MODL_ask_feat_type(feature, &f_type));

uc4403(f_type);

UF_free(f_type);

}

перед этим извлекаю компоненты сборки с помощью

UF_OBJ_cycle_objs_in_part(UF_PART_ask_display_part() ,UF_component_type, &part_tag);

Что я делаю неправильно?

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


Подскажите, имеется сборка с входящими компонентами. Как можно извлечь дерево построения для каждого компонента?

У меня почему-то извлекает дерево построения сборки, а дерево построения компонентов не извлекает.

Делаю следующим образом:

feature = (UF_OBJ_cycle_all(part_tag, feature));

if (feature == NULL_TAG)

{

break;

}

UF_CALL(UF_OBJ_ask_type_and_subtype(feature, &o_type, &o_subtype));

if (o_type == UF_feature_type)

{

UF_CALL(UF_MODL_ask_feat_type(feature, &f_type));

uc4403(f_type);

UF_free(f_type);

}

перед этим извлекаю компоненты сборки с помощью

UF_OBJ_cycle_objs_in_part(UF_PART_ask_display_part() ,UF_component_type, &part_tag);

Что я делаю неправильно?

Можеть быть это из-за того, что вы не изменяете рабочую часть?!. Попробуйте UF_ASSEM_set_work_part или UF_ASSEM_set_work_part_quietly и вместо UF_PART_ask_display_part() использовать UF_ASSEM_ask_work_part
Ссылка на сообщение
Поделиться на других сайтах

Можеть быть это из-за того, что вы не изменяете рабочую часть?!. Попробуйте UF_ASSEM_set_work_part или UF_ASSEM_set_work_part_quietly и вместо UF_PART_ask_display_part() использовать UF_ASSEM_ask_work_part

Когда я использую функцию UF_ASSEM_set_work_part выскакивает следующая ошибка:

ERROR code 580001

Internal error: an attempt was made to access an attribute not in the relevant class

Что это значит, как избавиться от нее???

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

Когда я использую функцию UF_ASSEM_set_work_part выскакивает следующая ошибка:

ERROR code 580001

Internal error: an attempt was made to access an attribute not in the relevant class

Что это значит, как избавиться от нее???

Посмотрите пример ufx_cycle*.* в папке \UGOPEN там подобный пример приведен.
Ссылка на сообщение
Поделиться на других сайтах

Посмотрите пример ufx_cycle*.* в папке \UGOPEN там подобный пример приведен.

Так и не получилось вытащить дерево построения каждой детали входящей в сборку. Атрибуты вытаскивает, а вот дерево нет.

Для ф-ции UF_OBJ_cycle_all нужен тэг части, а у меня есть только тэг компонента. Незнаю как получить для компонента тэг части???

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

Так и не получилось вытащить дерево построения каждой детали входящей в сборку. Атрибуты вытаскивает, а вот дерево нет.

Для ф-ции UF_OBJ_cycle_all нужен тэг части, а у меня есть только тэг компонента. Незнаю как получить для компонента тэг части???

Вот маленький пример прохождения по дереву. Может поможет

class Tree_assem_class

{



int ask_components (tag_t root_part_tag, Tree_assem_class * my_assem) {



	tag_t root_part_occ_tag;

	tag_t * child_part_occs;

	int count_child_part_occs;

	tag_t prototype_tag;

	char part_name[ 256 + 1 ];

	char refset_name[ 30 + 1 ];

	char instance_name[ ( 128 + 1 ) ];

	double origin[ 3 ];

	double csys_matrix[ 9 ];

	double transform[ 4 ][ 4 ];

	tag_t matrix_id;



	if (my_assem->ask_root_tag() == NULL_TAG)

	{

		mes.Report_Message("Не задан таг головной сборки");

		return -30;

	}



	count_recurrence++; // счетчик рекурсий увеличиваем

	if (count_recurrence == MAX_RECURRENCE)

	{

		mes.Report_Message("Ошибка превышенно максимальное (MAX_RECURRENCE) количество \"веток\" в главной сборке");

		return -40;

	}

	



	// По тагу части сборки определяем таг окуренса в сборке

	root_part_occ_tag = UF_ASSEM_ask_root_part_occ (root_part_tag);

	if (root_part_occ_tag == NULL_TAG) 

	{

		// Попали сюда значит нашли часть без компонентов.

		count_recurrence--; // уменьшаем счетчик рекурсий

		//mes.Report_Message("Нашли деталь без компонент");

		return 10; // выход с положительным кодом завершения, значить можно выходить из рекурсию без ошибки

	}

	// Определяем кол-во и таги окуренсов компоненет в сборке root_part_tag (это таг части)

	count_child_part_occs = UF_ASSEM_ask_part_occ_children (root_part_occ_tag, &child_part_occs );

	if (count_child_part_occs == 0)

	{

		// Странный случай, когда количество входящих компоненет равно 0?

		mes.Report_Message("Ошибка при определении кол-ва компонентов подсборки");

		return -10;

	}

	my_assem->edit_count_component(count_child_part_occs); // увеличиваем счетчик найденных деталей

	// Цикл по всем найденным тагам окуренсам компонент

	for (int i=0;i<count_child_part_occs;i++)

	{

		// определяем таг части по тагу окуренса (фактически таг компоненета)

		prototype_tag = UF_ASSEM_ask_prototype_of_occ (child_part_occs[i]);

		if (prototype_tag == NULL_TAG)

		{

			mes.Report_Message("Ошибка компонент не загружен");

			count_recurrence--; // уменьшаем счетчик рекурсий

			my_assem->part_tag_components.push_back(NULL_TAG);

			my_assem->child_part_occ.push_back(NULL_TAG);

			return 10;

		}



		[b]my_assem->part_tag_components.push_back(prototype_tag); // запоминаем таг части компонента[/b]

		my_assem->child_part_occ.push_back(child_part_occs[i]); // запомиаем таг окуренса компонента



		// Рекурсивный вызов 

		int rez = ask_components (prototype_tag, my_assem);

		if (rez < 0) 

		{

			mes.Report_Message("Ошибка возникла при рекурсивном вызове функции ask_comonents");

			return -10;

		}

	}

	// Освобождаем память из под массива тагов окуренсов

	UF_free(child_part_occs);



	return 0;

}
Все непонятные функции типа mes можете закоментировать. Выделил как раз то что вам нужно вроде... надо проверять

И рекомендую почитать следующую статейку в документации по NX /html_files/ugopen_doc/uf_assem/uf_assem_ref1.html

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

Все непонятные функции типа mes можете закоментировать. Выделил как раз то что вам нужно вроде... надо проверять

И рекомендую почитать следующую статейку в документации по NX /html_files/ugopen_doc/uf_assem/uf_assem_ref1.html

Спасибо, у меня с помощью функции member = UF_ASSEM_ask_prototype_of_occ (component); получилось вытащить дерево, но только тогда когда в опциях загрузки снята галка "Использовать Частичную Загрузку". Можно ли как-нибудь вытащить дерево, когда сборка уже была загружена "частично"?

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

Спасибо, у меня с помощью функции member = UF_ASSEM_ask_prototype_of_occ (component); получилось вытащить дерево, но только тогда когда в опциях загрузки снята галка "Использовать Частичную Загрузку". Можно ли как-нибудь вытащить дерево, когда сборка уже была загружена "частично"?

Я думаю что нет. Здесь надо понимать, что частичная загрузка, она на то и частичная, что загружается только часть, а точнее то, что входит в ссылочный набор. Такова жизнь!

Можно канечно части (файлы) NX открывать по тихому с полной загрузкой, а потом закрывать, чтобы пользователь ничего не заподозрил)))

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

Я думаю что нет. Здесь надо понимать, что частичная загрузка, она на то и частичная, что загружается только часть, а точнее то, что входит в ссылочный набор. Такова жизнь!

Можно канечно части (файлы) NX открывать по тихому с полной загрузкой, а потом закрывать, чтобы пользователь ничего не заподозрил)))

Не, мы лучше будем загружать "Облегченное представление".

Спасибо за помощь ...

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

Не, мы лучше будем загружать "Облегченное представление".

А что при этом дерево построения можно считать?
Ссылка на сообщение
Поделиться на других сайтах

А что при этом дерево построения можно считать?

Да, при этом дерево извлекает.

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

Еще один вопрос по компонентам сборки.

У меня все компоненты перебирает, извлекает дерево, но доходит до altrep и после него зависает. С чем это может быть связано?

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

Еще один вопрос по компонентам сборки.

У меня все компоненты перебирает, извлекает дерево, но доходит до altrep и после него зависает. С чем это может быть связано?

а что отладчик говорит? Т.е. В ЮГ-мастер, ЮГ-парт все ок, а альтрепе валится... странно... но я собственно в ТС не очень силен, но вроде альтрепы это теже ЮДЖИ мастеры по сути своей
Ссылка на сообщение
Поделиться на других сайтах

а что отладчик говорит? Т.е. В ЮГ-мастер, ЮГ-парт все ок, а альтрепе валится... странно... но я собственно в ТС не очень силен, но вроде альтрепы это теже ЮДЖИ мастеры по сути своей

У меня получилось когда сделал следующим образом:

try

{

ifail = cycle_components(child_components, indentation);

}

catch(...)

Теперь все делает, я так понял, что в сборке для altrepa появляется еще один объект и когда доходит до этого объекта, тогда зависает.

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

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

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

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

В каком виде?

Если ввиде графиечского файла, то проверям если включен моделинг, то UF_DISP_create_image

Если нужен таг то есть UF_VIEW_ask_work_view

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

В каком виде?

Если ввиде графиечского файла, то проверям если включен моделинг, то UF_DISP_create_image

Если нужен таг то есть UF_VIEW_ask_work_view

Допустим в сборку входит 5 компонентов. Мне необходимо узнать с какой закраской (Закраска с ребрами, статический каркасный и т.д. ) был сохранен каждый из этих 5 компонентов?

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

Еще вопрос, теперь по ссылочным наборам.

С помощью функции : UF_ASSEM_ask_ref_set_data(feature, ref_set_name,origin,matrix,&num_members,&members); извлекаю имя ссылочного объекта (ref_set_name) и количество элементов в нем (num_members).

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

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

Еще вопрос, теперь по ссылочным наборам.

С помощью функции : UF_ASSEM_ask_ref_set_data(feature, ref_set_name,origin,matrix,&num_members,&members); извлекаю имя ссылочного объекта (ref_set_name) и количество элементов в нем (num_members).

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

А вы проверте в интерактиве что выдает команда Формат - Ссылочные набор?

Если у вас есть массив тагов элементов, то камандой UF_OBJ_ask_type_and_subtype тип и подтип, а UF_OBJ_ask_name (UF_OBJ_ask_name_origin) имя (если оно конечно есть)

Допустим в сборку входит 5 компонентов. Мне необходимо узнать с какой закраской (Закраска с ребрами, статический каркасный и т.д. ) был сохранен каждый из этих 5 компонентов?

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

А вы проверте в интерактиве что выдает команда Формат - Ссылочные набор?

Если у вас есть массив тагов элементов, то камандой UF_OBJ_ask_type_and_subtype тип и подтип, а UF_OBJ_ask_name (UF_OBJ_ask_name_origin) имя (если оно конечно есть)

UF_VIEW_ask_visualization?

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

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

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • malvi.dp
      Допилил. Поддерживает многолистовые чертежи Начинает работу при нажатии на кнопку макроса: -при нахождении измененных (установлена галочка "Измененное значение") размеров окрашивает их в красный цвет; -если с измененного размера снята галочка "Измененное значение", т.е. он стал обычным - цвет становится обычным; -по окончании работы в сообщении выводится статистика найденных измененных размеров, если они есть. Тестировался на sw2016 и sw2020.   ChangeColorForOverridedDimensions.zip   Да, что-то прошло не так... Уже поправил.
    • maxx2000
      Я скорее согласен с Надеждой Януарьевной
    • Koels
      Мотора 54 градуса, что на 6 градусов больше соседнего станка, вентеляторы в норме да. Ещё хочу сравнить нагрузку координаты с соседним станком, но пока не дают. У этих двух станков проблемы с охлаждением, на соседнем стоит автомобильный радиатор для охлаждения масла. xD
    • Bot
      Dassault Systèmes Reports Solid First Quarter Results And Reaffirms Full-Year Objectives Просмотр полной статьи
    • Ninja
    • Ninja
      В зимнее время водители устанавливают на колёса специальные цепи против скольжения. В мире разработано множество видов цепей и способов их установки. Японцы применяют "цепи Абэ". Кто этот великий инженер? Это знаменитый японский писатель Кобо Абэ. Для уединенного писательского труда Абэ купил домик в горах. А в горах зима ранняя, снежная, затяжная. Без цепей на колёсах можно и улететь с обрыва. Абэ периодически заводил машину и спускался в долину. Почту получить/отправить, в магазине продукты купить, ящик рисовой водки. (Известное дело: насухую великую книгу не напишешь). В долине приходилось цепи снимать. По правилам цепи запрещается применять при отсутствии на дороге снежного покрова. В те времена для установки/снятия цепи требовалось домкратом поднимать каждое колесо. В машине 4 колеса. Товарищу Абэ приходилось корячиться с домкратом. При этом в самых нелитературных выражениях комментируя политику правящей партии и все домкраты в мире. Купил в магазине бухлишко-закусь. Поехал домой в горы. А там снег, скользко. Цепи требуются. Опять писатель и драматург Абэ домкрат крутит. Всё это насмерть надоело Абэ. Обратился к компаниям-производителям: придумайте способ установки цепей без домкрата! Но производители ничего не придумали. Или не захотели. Тогда Абэ сам придумал способ установки цепей без необходимости поднимать колесо. Послал изобретение на конкурс. И неожиданно получил призовое место и патент. Новый способ установки цепей быстро завоевал популярность. Так и пошло у японцев - "цепи Абэ". Кобо Абэ не получил Нобелевскую премию по литературе. Уже выдвигался, уже все были уверены в том, что он её получит. Но не успели, писатель умер. А это всё дурацкие цепи виноваты. Сколько времени он потерял в установке/снятии цепей? Сколько времени, вместо того чтобы писать, он крутил домкрат? Вот и не успел. https://ru.ruwiki.ru/wiki/Абэ,_Кобо
    • gudstartup
      приемлимо. температуру мотора посмотрите. если вентилятор нормально вращается и его скорость соответствует оригинальному а также контакт в разъеме нормальный а F все равно появляется то даже не знаю что у вас может быть так как привод у вас новый
    • Koels
      Хмм, я думал раз она вылазит даже в простое, то Z координата висит на тормозе и дело не в этом. Спасибо за мысль, щас узнаю. Вообще у нас рядом стоит точно такая же макина, точь в точь и там таким проблем нет. Много заказов и отсутствие специалистов сделало свое дело. :) @gudstartup, 58% нагрузка на координату
    • mrVladimir
      Что-то я немного засомневался. Если решим брать новое ЧПУ, то искать точно такое же необходимо по номеру сзади корпуса (пластикового пластмассового) - так? А если брать только плату (материнскую или как ее лучше назвать...), на которой установлена (запаена) микросхема 1 на моих фото выше, то искать плату необходимо по номеру, который указан на самой плате - так? В моем случае : ЧПУ : A02B-0321-B520. Код на плате : A20B-8201-0081/01A. Если, допустим, мы покупаем ЧПУ A02B-0321-B520 - будет ли это гарантией того, что в нем установлена плата A20B-8201-0081/01A. И можно ли будет его считать таким же. И с отдельно приобретаемой платой тоже самое - если номер на ней полностью совпадает с нашим, значит ли это, что она полностью идентична. P.S. : извиняюсь за , возможно, навязчивые вопросы. Просто не хотелось бы попасть впросак из-за своей некомпетентности. такой файл есть, но мне говорили, что после снятия архивов, его лучше вообще никогда нигде ни использовать. А на каком этапе он нам может понадобиться?. Если, как говорил Виктор, мы зальем архив SRAM на старый модуль (ROM-SRAM), установленный в новое ЧПУ, то и файл OPRMINF не нужен. Правильно же?
    • Slavdos
      Доброе. делюсь 1 внедренным китайцем. купили у ЛЛС MARVEL PRO 6000-3015.HGT , 2 шт , с автоматизацией. станки неплохие, интерфейс русские, достаточно дружелюбен. за автоматизацию зря переплатили, китай похоже в этом сильно уступает европе. из неожиданностей- резка воздухом дает неудаляемый грат, по сути необходимы зачистные станки.
×
×
  • Создать...