Ресурсы Unigraphics: Создание постпроцессоров. Создание дополнительных MOM функций.

Исходники:

МОМ расширения: pb_base_stub.zip

Комментарии.

Все Ваши расширяемые функции следует использовать по схеме:

if {[llength [info commands ВашаФункция  ] ]} {
    ВашаФункция  ; # выполняемые действия
}

- это избавит Вас от ошибок, если по каким то причинам Юниграфика не сможет загрузить библиотеку.

Для построения функций диалога необходимо использовать или WinApi, или UGStyler, или .Net (C++,VB,Java,C#).
Если Вы хотите использовать в MOM-расширении функции диалога UG uc1608 или uc1609. То использовать их, необходимо по схеме показанной ниже:

.....
int ia4[2]={0,0},
    ip6[2] = { 1, 1 },
    resp;
double ra5[2] = { 30000.0 , 60000.0 } ;
char menu[2][16];

strcpy(&menu[0][0], ":F (реза)=");
strcpy(&menu[1][0], ":F (ускоренной)=");
 //ra5[0] = *f0;
 //ra5[1] = *f1;

UF_UI_close_listing_window();
UF_UI_lock_ug_access(UF_UI_FROM_CUSTOM);
resp = uc1608(":Введите подачи F:", menu, 2, ia4, ra5, ip6);
//*f0 = ra5[0];
//*f1 = ra5[1];
UF_UI_unlock_ug_access(UF_UI_FROM_CUSTOM);
UF_MOM_set_double(mom_id, "feed_rate", ra5[0]);
UF_MOM_set_double(mom_id, "rapid_rate", ra5[1]);
........


Функции:

здесь только часть их, я убрал функции работы с реестром, математические, а также экспериментальные.

 MOM команда

 Описание

Ограничения
 MOM_ui_set_status ?str  Вывод сообщения в строку статуса.
 Например:
 
proc MOM_before_output { } {
   global mom_o_buffer
  
MOM_ui_set_status
$mom_o_buffer
 }
 
 MOM_box_message ?m1 ?m2 ?m3 ?m4 ?m5 ....  Вывод сообщения на экран.
 выводит сообщение на экран (используя функцию uc1601) и останавливает  постпроцесс.
 Параметры обьединяются:  m =m1 \n m2 \n m3 \n m4 \n m5 \n ...
 
 set ret [ MOM_ui_message ?typesign ?button ?m1 ?m2 ?m3  .... ]
 
 Вывод сообщения на экран.
typesign =
{ ERROR|WARNING|INFORMATION|QUESTION } - тип значка (сообщения)
или { ERROR|WARN|INFO|? } - их сокращения
button =
ABORTRETRYIGNORE The message box contains three push buttons: Abort, Retry, and Ignore.
OK The message box contains one push button: OK. This is the default.
OKCANCEL The message box contains two push buttons: OK and Cancel.
RETRYCANCEL The message box contains two push buttons: Retry and Cancel.
YESNO The message box contains two push buttons: Yes and No.
YESNOCANCEL The message box contains three push buttons: Yes, No, and Cancel.

выводит сообщение на экран (используя функцию UF_UI_message_dialog) и останавливает постпроцесс.

вариант выбора кнопки пользователем возвращается функцией как результат.
ret = {1 2 3} if message box contains three push buttons
ret = {1 3} if message box contains two push buttons
 
 В NX 9 разработчики  ввели MOM команду:

      MOM_display_message <message> <title> <type> [<button1>][<button2>][<button3>]

Показывает диалоговое сообщение в NX, где <type> это тип выводимого сообщения  I|E|W|Q,  I - информация, E - ошибка, W - предупреждение, Q - вопрос. Функция возвращает номер выбранной кнопки (1, 2, или 3).
 
 MOM_abort_ex ?m1 ?m2 ?m3 ?m4 ?m5 .... Вывод сообщения на экран и прерывание постпроцесса.
 частный случай функции MOM_ui_message
когда:     typesign = ERROR     button = ABORT

выводит сообщение на экран (используя функцию UF_UI_message_dialog)
и останавливает постпроцесс, после нажатия кнопки возвращает в интерпретатор код ошибки для завершения постпроцесса.
 если использовать эту функцию в конструкции:
 catch {
  MOM_abort_ex "Конец"
 }  - то Tcl - выловит исключение и постпроцесс не остановиться.
 MOM_info_message ?where ?m1 ?m2 ?m3 ?m4 ?m5 .... Вывод сообщения на экран.
where  = { CURSOR|CASCADE|RIGHT|LEFT } - где появляется окно

выводит сообщение на экран (используя функцию UF_UI_display_nonmodal_msg),
постпроцесс не останавливается.
параметры обьединяются:     m =m1 \n m2 \n m3 \n m4 \n m5 \n ...
 
 
 set file [ MOM_ui_filebox ?file ?ext ]  Создание диалога выбора файла.
возвращаемое значение:
file - полное имя выбранного файла,
МОМ переменные:
mom_ui_filebox_return - код нажатия кнопки (ок,cancel) .
mom_ui_filebox_filename - имя файла = полное имя выбранного файла
 
 
set ret [ MOM_assign_attribute $title {$value|NULL|TIME} {operation_name|group_name} ]
 
Создание атрибутов операции/программы.
 - при постпроцессе устанавливает атрибут операции или программы
Параметры:
  title - имя атрибута
  value - значение атрибута, создается атрибут типа UF_ATTR_string
  NULL - создается атрибут типа UF_ATTR_null
  TIME - создается атрибут типа UF_ATTR_time - с текущим временем
  {operation_name  , group_name} - имя операции или группы (программы),для которой создается атрибут.

возвращается результат:
ret=
  0 - атрибут установлен.
  1 - ошибка, атрибут НЕ установлен.
 
 В процессе создания своих постпроцессоров: не изменяйте созданные UG значения mom_operation_name  , mom_group_name, ... - других  переменных. Лучше создайте свою и работайте с ней.

Начиная с NX8.5.3 UgOpen <uf_attr.h>  Юниграфики обновлен новыми функциями для работы с 'Атрибутами'.
Функционально разбиты на 3-и части: новые для работы с PDM Teamcenter, новые для работы внутри модели и старые.
 
Разработчики советуют использовать новые.

 

MOM_set_attribute_program

1) вызов без параметров - установка атрибутов согласно выделенным обьектам

2) вызов с параметрами -
MOM_set_attribute_program $mom_group_name $ptp_file_name $mom_machine_time $mom_machine_name
или
MOM_set_attribute_program $mom_operation_name $ptp_file_name $mom_machine_time $mom_machine_name
 
 Создание атрибутов операции/программы (специальных).
 - при постпроцессе устанавливает атрибуты операции или программы

названия атрибутов:
OPU_FILE_UP_NAME - имя файла управляющей программы
OPU_FILE_UP_CREATE - время создания CNC - управляющих программ (УП)
OPU_FILE_UP_TIME - машинное время
OPU_FILE_UP_MACHINE - станок

Эти атрибуты необходимы, для того, чтобы после, запустив другую программу технолог - автоматически создал операционную карту, и занес данные в базу данных отдела (SQL), что он сделал.
 Начиная с NX8.5.3 UgOpen <uf_attr.h>  Юниграфики обновлен новыми функциями для работы с 'Атрибутами'.
Функционально разбиты на 3-и части: новые для работы с PDM Teamcenter, новые для работы внутри модели и старые.
 
Разработчики советуют использовать новые.
 set name_part [ MOM_ask_part_attr ]  Выводить имя части.
используя UGMGR устанавливает mom переменные
(переменные должны уже быть описаны global .... и существовать до вызова)
Переменные:
mom_ask_part_number
mom_ask_part_revision
mom_ask_part_file_type
mom_ask_part_file_name
mom_ask_part_name
mom_ask_part_desc

Возвращает строку = {part_file_name}_{part_revision}

Например:
name_part=T_T7.92.0562.078.000.73_raz_cam2_A
mom_ask_part_number =T_T7.92.0562.078.000.73_raz
mom_ask_part_revision =A
mom_ask_part_file_type =manifestation
mom_ask_part_file_name =T_T7.92.0562.078.000.73_raz_cam2
mom_ask_part_name =ОКАНТОВКА_БАГАЖ_ЛЮКА
mom_ask_part_desc =ж/н RRJ "разв.стр."п.148;п.154;РЦ-103гр.97-006-2005
 
 
 MOM_call_grip ?gripfile ?param1 ?param2 .. ?param30  Вызов GRIP.
 Важно! Все параметры - param(i) - передаются в grip строковыми.
 
 
 set value [ MOM_uf_param_ask_value ?operation_name ?param ]  Чтение параметров из операции.
Параметры:
 
operation_name - имя операции
  param - параметр (целое число) (из файла  uf_param_indices.h)

чтение параметра происходит в порядке:
+UF_PARAM_ask_int_value
+UF_PARAM_ask_double_value
-UF_PARAM_ask_2d_value
-UF_PARAM_ask_3d_value
+UF_PARAM_ask_logical_value
+UF_PARAM_ask_tag_value
+UF_PARAM_ask_str_value
в случае нормального завершения функции - возвращается результат (значение параметра),
иначе - пустая строка.
 
 
set value [ MOM_get_ini_string ?inifile ?section ?key ] Читает значение ключа из заданной секции ini-файла.
постпроцесс - не прерывается.
Возвращаемое значение:
значение ключа key, иначе пустая строка
....
[section]
key=string
....
set string [ MOM_get_ini_string "C:\\Windows\\win.ini" "section" "key" ]
 
 
 set ret [ MOM_remove_file_ex ?file ]  Удаляет файл с именем ?file
 если удаление прошло успешно или файла нет - возвращает 0,
иначе возвращает 1.
 Есть стандартная МОМ команда для удаления файлов:  MOM_remove_file
 MOM_deletefile ?file  Удаляет файл с именем ?file
 если удаление прошло успешно или файла нет - возвращает 0,
иначе возвращает 1.
 ( используется функция WinApi "DeleteFile" )
 
 MOM_createfile ?file Создает файл с именем ?file
 если создание прошло успешно - возвращает 0,
иначе возвращает 1.
( используется функция WinApi "CreateFile"с ключами :
GENERIC_WRITE,  FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL ) ;
 

 MOM_run_exec ?"exe ?param1 ?param2 .."
или
 MOM_run_exec ?exe ?param1 ?param2 ..
 
 Запуск внешних программ
 запускает exe-файл с параметрами в отдельном процессе.
 постпроцесс - не прерывается
 Для расширения и исправления ошибки внутренней функции exec.
 

 MOM_shell_exec "winword" ?"param"
 MOM_shell_exec "excel" ?"param"
 
 Запускает exe-файл (зарегистрированные в системе) с параметрами в отдельном процессе.
постпроцесс - не прерывается
 
 
 MOM_about_stub  Выводит информацию об авторе
 постпроцесс - останавливается.
 
 
     

Copyright © 2001—2009 че