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

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


NX-Open-Dummer

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

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

подскажите, как вывести атрибуты инструментов из каждой операции из выбранной программы? :)

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


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

подскажите, как вывести атрибуты инструментов из каждой операции из выбранной программы? :)

Для начала вот попробуй это

struct DATA

{

	tag_t obj_tag;

	int num_level_gr;

	tag_t work_part;

	char name_root_gr[UF_OPER_MAX_NAME_LEN+1];

	tag_t setup_tag;

};



  

extern DllExport void ufusr( char *parm, int *returnCode, int rlen )

{

	int ind_path = 0;

	tag_t path_tag;

	path_tag = NULL_TAG;

	int type, subtype;

	tag_t root_gr_tag;

	char name_op[UF_OPER_MAX_NAME_LEN+1];

	tag_t *sel_node_tag;

	int count_selected;

	logical answer;



	DATA my_data;



  int rez = UF_initialize();

	if (rez) return;



  // возвращается таги выделенных строчек

	UF_CALL(UF_UI_ONT_ask_selected_nodes(&count_selected, &sel_node_tag));

	if (count_selected > 1 || count_selected == 0)

	{

		uc1601("Выберите одну группу программ",1);

		UF_free (sel_node_tag);

		return;

	}

	// проверяем тип выделенного объекта

	UF_CALL(UF_OBJ_ask_type_and_subtype(sel_node_tag[0], &type, &subtype));

	if (type != UF_machining_task_type)

	{

		uc1601("Выберите группу программ",1);

		UF_free (sel_node_tag);

		return;

	}

	

	root_gr_tag = sel_node_tag[0]; // запоминаем таг выделенной группы

	UF_CALL(UF_OBJ_ask_name(root_gr_tag, name_op)); // запоминаем имя выделенной группы

	UF_free (sel_node_tag); // освобождаем память



	// цикл по всем членам ONT начиная с root_gr_tag

	// при этом вызывается функция oper_check_cb

	my_data.work_part = work_part; // исходные данные для цикла

	my_data.num_level_gr = 0;

	my_data.obj_tag = root_gr_tag;

	strcpy(my_data.name_root_gr,name_op);

	UF_CALL(UF_SETUP_ask_setup(&my_data.setup_tag));



	// сам цикл по группам

	UF_CALL(UF_NCGROUP_cycle_members (my_data.obj_tag, oper_check_cb, &my_data));

	

	UF_CALL(UF_terminate());

}

  

  

  

  

// Итерационная функция, которая вызывается каждый раз когда находится 

// элемент в ONT

static logical oper_check_cb (tag_t op_tag, void *data)

{

	int type, subtype, ind;

	char name_op[UF_OPER_MAX_NAME_LEN+1], new_name_gr[UF_OPER_MAX_NAME_LEN+1],new_name_op[UF_OPER_MAX_NAME_LEN+1];

	char name_root[UF_OPER_MAX_NAME_LEN+1], new_name_root[UF_OPER_MAX_NAME_LEN+1];

	tag_t root_tag;

	logical result;

	DATA* my_data;



	

	// присваиваем адрес структуры наших данных

	my_data = (DATA*) data;

	

	// спрашиваем имя у найденного элемента

	UF_CALL(UF_OBJ_ask_name(op_tag, name_op));

	// если имя == "NONE", то нам эта папка не интересна -> следующая итерация

	if (strcmp(name_op,"NONE") == 0)

	{

		return (TRUE);

	}



	// в переменной my_data->obj_tag содержиться таг родительского элемента

	root_tag = my_data->obj_tag;



	// проверяем тип и подтип

	UF_CALL(UF_OBJ_ask_type_and_subtype(op_tag, &type, &subtype));

	if (type == UF_machining_operation_type) // нашли операцию

	{

		// на всякий случай проверяем принадлежить операция родительскому элементу

		// в переменной ind возращается порядковый номер операции в группе (начиная с 0)

		UF_CALL(UF_NCGROUP_is_a_member(root_tag, op_tag, &result, &ind));

		if (result)

		{

			// да, операция принадлежит род. элементу

			// делаем над op_tag все что захочется, в том числе и считываем параметры инструмента

		}

	return (TRUE);

}
Взял из реальной программы, убрал лишнее, может чего и сгоряча
Ссылка на сообщение
Поделиться на других сайтах

...

// делаем над op_tag все что захочется, в том числе и считываем параметры инструмента

...

спасибо! и всё-таки!! как считать атрибуты (не параметры) инструмента из операции?? :))

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

спасибо! и всё-таки!! как считать атрибуты (не параметры) инструмента из операции?? :))

что ты имеешь ввиду "не параметры", приведи пример (файл) где они есть.
Ссылка на сообщение
Поделиться на других сайтах

что ты имеешь ввиду "не параметры", приведи пример (файл) где они есть.

параметры инструмента:

post-33784-1323321732_thumb.jpg

атрибуты инструмента:

post-33784-1323321743_thumb.jpg

чтение значения атрибута:

UF_CALL(UF_ATTR_read_value(тэг_операции, "CODE_MAX", UF_ATTR_integer, &атрибут));

а как получить тэг инструмента из выбранной операции, чтобы прочитать атрибут инструмента??

post-33784-1323322848_thumb.jpg

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

а как получить тэг инструмента из выбранной операции, чтобы прочитать атрибут инструмента??

ура! нашёл! :))

UF_CALL(UF_OPER_ask_cutter_group(тэг_операции, &тэг_инструмента));

работает! как говорится, если долго мучиться... :)))

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

Можете просветить для каких задач приходится использовать NXopen для РИ? Если в ЧПУ программу вывести инструмент то это просто через постпроцессор, если в "Цеховую документацию" то там тоже вроде NXopen не нужен

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

Можете просветить для каких задач приходится использовать NXopen для РИ? Если в ЧПУ программу вывести инструмент то это просто через постпроцессор, если в "Цеховую документацию" то там тоже вроде NXopen не нужен

Эта программа будет предназначена для выгрузки в таблицу SQL-базы информации о инструментах из выбранных программ, для последующей автоматизации...

Как бы всё должно быть круто в итоге... :)))

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

Товарищи!!!

как перевести TCL

MOM_output_text ";DATE [string toupper $mom_date] : USER - [string toupper $mom_logname]"

на С?

подскажите функции вывода даты-времени и юзера, плиз!

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

Товарищи!!!

как перевести TCL

MOM_output_text ";DATE [string toupper $mom_date] : USER - [string toupper $mom_logname]"

на С?

подскажите функции вывода даты-времени и юзера, плиз!

Посмотри эти функции

UF_ask_system_info

UF_ask_syslog_filename

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

Посмотри эти функции

UF_ask_system_info

UF_ask_syslog_filename

спасибо!! :)

а можно ещё вопросик? :))

каким макаром можно получить время выполнения программ в целом и операций в частности?

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

post-33784-1324463660_thumb.jpg

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

спасибо!! :)

а можно ещё вопросик? :))

каким макаром можно получить время выполнения программ в целом и операций в частности?

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

post-33784-1324463660_thumb.jpg

Какая версия? В NX7.5 вроде все считает.

Но мне кажется, как раз, в сверловки все не так просто

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

Какая версия? В NX7.5 вроде все считает.

Но мне кажется, как раз, в сверловки все не так просто

NX 6

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

Можно получить в посте

Нужно на Си :)

Хотя бы функции...

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

Программа экспорта инструментов из UG в VERICUT.

Можно ли получить разом все параметры инструмента (для каждого типа (MILL, DRILL..) свои параметры)?

Инструмент в CAM.

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

Программа экспорта инструментов из UG в VERICUT.

Можно ли получить разом все параметры инструмента (для каждого типа (MILL, DRILL..) свои параметры)?

Инструмент в CAM.

Можно вот так

// определяем инструмент, используемый в операции

if UF_CALL(UF_OPER_ask_cutter_group (tag_oper, &tag_tool)) return; 

// определяем диаметр инструмента

if UF_CALL(UF_PARAM_ask_double_value (tag_tool, UF_PARAM_TL_DIAMETER, &diametr_tool)) return;
Меняя UF_PARAM_TL_DIAMETER на другие можно считывать другие параметры инструментов
Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Ander
    • ak762
      я бы попросил у заказчика дать конкретную марку применяемого материала и использовать эти данные для расчета судя по данным с MatWeb https://www.matweb.com/search/DataSheet.aspx?MatGUID=08fb0f47ef7e454fbf7092517b2264b2 там разброс механических свойств материала существенный включая зависимость от наполнителя и способа изготовления    
    • Jesse
      потестил со смещённым колесом.. Если коротко, то печаль)) В модальнике прикладываю вращение в разные сторона, частота та же. Пробовал даже "гнуть в разные стороны" - извлекать деформированные модели, когда уск. своб. падения направлено вверх и вниз. В модальниках частота та же, без изменения.. @Борман@AlexKazну что ж, если выкрутиться никак, будем осваивать Ansys. Чё ещё остаётся делать?!)))) Вроде какие-то видосики есть на ютюбе. Спс за овтеты)
    • soldo
      Приветствую всех! Часто искала информацию на форуме, связанную с переводом, но кое-что не могу найти и хочу попросить о помощи. Я перевожу инструкцию для токарного автомата продольного точения и не очень хорошо понимаю все, что связано с креплением инструмента к станку. Конкретно меня интересуют следующие вопросы. Станок оснащен разными инструментальными блоками, есть суппорт с резцами, блок с инструментами для поперечного сверления и т.д.  И есть один блок, который на корявом английском называется 5 spindle sleeve holder, На этом блоке 5 шпинделей и на них можно закрепить инструмент для сверления, нарезания резьбы и растачивания. В названии этого блока фигурируют какие-то втулки (sleeve), предполагаю, что это патроны? Вот, что примерно написано в инструкции по поводу установки инструмента в этом блоке: (1) Ослабьте стопорный винт ② и установите режущий инструмент ① на втулку ③. (2) Затяните стопорный винт ② и закрепите режущий инструмент ① на втулке ③. (3) Ослабьте резьбу ⑤ и вставьте втулку ③ в блок ④ . (4) Переместите втулку ③ в направлении длины и отрегулируйте прямоугольное положение режущего инструмента ①. (5) После регулировки затяните резьбу ⑤ и зафиксируйте втулку ③. Мой вопрос: как можно назвать этот блок и что это за "втулка"?  Прикрепляю ссылку, на ней скриншоты из инструкции с общим видом инструментальной системы, 5-шпиндельного блока и соответствующих инструментов для сверления. https://imgur.com/a/fpBgmLA
    • Snake 60
      @alek77  У меня норм, просто надо соблюсти условия: 1) масштаб вида 1:1 2) масштаб листа 2:1 почему такие условия хз.
    • nicomed
      Пробовал (хотел "накостылить" разрыв линии), но получалась, примерно, такая ерунда, как и у Вас. Брал примеры и с офф сайта, и с сайта Артема.
    • AlexKaz
      Всё же. не ANSYS, а Autodyn. Лог   К сожалению, у меня Autodyn нет. Вероятно, как правило, это либо проблемы с масскейлингом, либо НУ, либо ГУ, либо свойства материалов не коректны, либо выбраны не согласованные единицы измерения (где-то СИ, где-то миллиметры или подобное), либо скорости заданы очень большими.
    • mrVladimir
      Если никто с таким же станком не откликнется, то проще Вам ладдер , наверное, выложить. И если какие-то комментарии там имеются - совместно, я думаю, разберемся.
    • alek77
      По этой теме есть хорошая статья: https://cadbooster.com/complete-overview-of-matrix-transformations-in-the-solidworks-api/ У Артема есть несколько примеров. Но Все примеры у меня не работают, т.е. работают, но при пристальном взгляде везде есть ошибка. Или в примерах никто не углублялся до вывода полученных координат на экран и проверки. Да ну на, не может быть. Если полученные координаты не смотреть, то и у меня мой изначальный макрос работает, и ошибок нет. А если смотреть, то координаты не верные. Если у кого есть возможность, проверьте работу макроса от Артема: https://www.codestack.net/solidworks-api/document/drawing/sheet-context-sketch/ У меня выдает следующий результат: И я думаю, что это у меня в системе что-то сбито, а что - нужно понять. Такая же ерунда со смещенными координатами у любых макросов с трансформацией, кроме макроса из справки SW, Dimension Edge In Drawing Example. Там все отлично.    
    • Fedor
      А ваши грустно. Демонстрируете наступление компьютерного фетишизма - когда могут больше чем понимают :) 
×
×
  • Создать...