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

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

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




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