Ресурсы Unigraphics: Создание постпроцессоров. Использование PostBuilder |
Темы: |
История PostBuilder началась в 16-ой версии Unigraphics, именно в ней появились его первая реализация в исходных кода на Tcl/Tk. Но уже в обновлении Unigraphics 16.3.3 - создатели расчухались и вдруг не с того, и сего, закрыли исходники. Просто зашифровав их. При запуске функция ...._decrypt (или иная другая по названию) - расшифровывает функции в память, поэтому при запуске PostBuilder-а - компьютер 'вставал', и продолжает 'вставать', колом, если у него не хватало оперативной памяти. Сначала, Все новички, используют PB, не поняв его - начинают вручную править и создавать ПП, но потом, после приобретения определенного опыта, поняв принципы и устои Юга, начинают пользоваться PB в полную силу. Изначально, да и сейчас, структура работы
PB не
отличалась оригинальностью от обычной схемы работы оболочек Gui Unix\Linux. |
Я подразумеваю, что человек, читающий Это. Может запустить ПостБилдер. Может создать Адрес, Блок, Вспомогательную команду. Может редактировать. При создании постпроцессора в Постбилдере, он первым делом начинает редактировать описание адреса G_cutcom , убирая ненавистные уже +-999999999.9999. Ругаясь и чертыхаясь.
Глубоко вникнуть в состав pui - файла меня вынудило несколько случаев. Один из них был просто дурацкий: мне нужно было получить такой порядок адресов в кадре : G90 G41..... Используя PB, получалось только так: G41 G90 ....
Я много раз пытался сделать это - не выходило.
Создавать свой адрес, когда был такой же в наличие (по функционалу), было
как то глупо. Ругнулся и
открыл pui-файл. Внимательно
изучив содержимое, я обнаружил описание и порядок адресов, решил их переставить
..... и у меня получилось :):):)
Точно так же, мне удалось решить и проблему адресов еще для одного
постпроцессора, и получить требуемое: M3 S...
До | После |
## MASTER SEQUENCE START G_cutcom "$mom_sys_cutcom_code(OFF)" 0 "Cutcom G-Code" 0 G_plane "$mom_sys_cutcom_plane_code($mom_cutcom_plane)" 0 "Plane G-Code" 0 G_adjust "$mom_sys_adjust_code" 0 "Tool Length Adjust G-Code" 0 G_feed "$mom_sys_feed_rate_mode_code($feed_mode)" 0 "Feedrate Mode G-Code" 0 G_spin "$mom_sys_spindle_mode_code($mom_spindle_status)" 0 "Spindle Output Mode G-Code" 0 G_return "$mom_sys_cycle_ret_code(MANUAL)" 0 "Return Plane for Canned Cycles" 0 G_motion "$mom_sys_linear_code" 0 "Motion G-Code" 0 G_cycle "$mom_usd_add_var" 0 "(G_cycle)" 1 G_mode "$mom_sys_output_code($mom_output_mode)" 0 "Positioning Mode G-code" 0 G "$mom_sys_blank_code" 0 "Other G-Codes" 0 X "$mom_sys_blank_code" 0 "X Axis Position or Canned Cycle X Axis Position" 0 Y "$mom_sys_blank_code" 0 "Y Axis Position or Canned Cycle Y Axis Position" 0 Z "$mom_sys_blank_code" 0 "Z Axis Position or Canned Cycle Z Axis Position" 0 fourth_axis "$mom_sys_blank_code" 0 "4th Axis Position" 0 fifth_axis "$mom_sys_blank_code" 0 "5th Axis Position" 0 I "$mom_sys_blank_code" 0 "X Axis Position of the Circle Center" 0 J "$mom_sys_blank_code" 0 "Y Axis Position of the Circle Center" 0 K "$mom_sys_blank_code" 0 "Z Axis Position of the Circle Center" 0 ..... F "$mom_sys_blank_code" 0 "Feedrate" 0 S "$mom_sys_blank_code" 0 "Spindle Speed" 0 ... M_spindle "$mom_sys_spindle_direction_code($mom_spindle_direction)" 0 "Spindle Direction M-Code" 0 .... N "" 0 "Sequence Number" 0 .... Text "" 0 "Text String" 0 ## MASTER SEQUENCE END |
## MASTE SEQUENCE START G_mode "$mom_sys_output_code($mom_output_mode)" 0 "Positioning Mode G-code" 0 G_cutcom "$mom_sys_cutcom_code(OFF)" 0 "Cutcom G-Code" 0 G_plane "$mom_sys_cutcom_plane_code($mom_cutcom_plane)" 0 "Plane G-Code" 0 G_adjust "$mom_sys_adjust_code" 0 "Tool Length Adjust G-Code" 0 G_feed "$mom_sys_feed_rate_mode_code($feed_mode)" 0 "Feedrate Mode G-Code" 0 G_spin "$mom_sys_spindle_mode_code($mom_spindle_status)" 0 "Spindle Output Mode G-Code" 0 G_return "$mom_sys_cycle_ret_code(MANUAL)" 0 "Return Plane for Canned Cycles" 0 G_motion "$mom_sys_linear_code" 0 "Motion G-Code" 0 G_cycle "$mom_usd_add_var" 0 "(G_cycle)" 1 G "$mom_sys_blank_code" 0 "Other G-Codes" 0 X "$mom_sys_blank_code" 0 "X Axis Position or Canned Cycle X Axis Position" 0 Y "$mom_sys_blank_code" 0 "Y Axis Position or Canned Cycle Y Axis Position" 0 Z "$mom_sys_blank_code" 0 "Z Axis Position or Canned Cycle Z Axis Position" 0 fourth_axis "$mom_sys_blank_code" 0 "4th Axis Position" 0 fifth_axis "$mom_sys_blank_code" 0 "5th Axis Position" 0 I "$mom_sys_blank_code" 0 "X Axis Position of the Circle Center" 0 J "$mom_sys_blank_code" 0 "Y Axis Position of the Circle Center" 0 K "$mom_sys_blank_code" 0 "Z Axis Position of the Circle Center" 0 ..... F "$mom_sys_blank_code" 0 "Feedrate" 0 M_spindle "$mom_sys_spindle_direction_code($mom_spindle_direction)" 0 "Spindle Direction M-Code" 0 S "$mom_sys_blank_code" 0 "Spindle Speed" 0 ... N "" 0 "Sequence Number" 0 Text "" 0 "Text String" 0 ## MASTER SEQUENCE END |
Вывод: порядок Адресов в кадре - задается
в pui. И его нужно при необходимости менять.
Исключение: Вывод адреса N.
1. Меня всегда интересовало, почему в
PB так неудобно и не понятно работает с
Nurbs и Helix -
интерполяцией. В принципе, она была обычным видом движения. Но реализация через
uplevel { } - раздражала.
В pui-файле за это отвечает следующая часть:
Для решения этого насущного вопроса, откроем pui-файл, и добавим строчки, чтобы получилось как показано ниже.
#Motions Start {Linear Move} {linear_move} {Linear Move} {Circular Move} {circular_move} {Circular Move} {Rapid Move} {rapid_traverse rapid_spindle} {Rapid Move} {Nurbs Move} {} {Nurbs Move} {Helix Move} {} {Helix Move} #Motions End
После открытия модифицированного Pui в PB получим следующую картинку, и более того, в tcl - файле будут образованы следующие команды, которые мы можем редактировать и наполнять прямо из PB: #========================================== proc MOM_nurbs_move { } { #========================================== } #========================================== proc MOM_helix_move { } { #========================================== }
|
Точно также, Вы можете добавлять и обработчики, и другие вспомогательные команды:
##Tool Path Start #Control Functions Start {Tool Change} {} {$gPB(event,tool_change,name)} {Length Compensation} {} {Length Compensation} {Set Modes} {} {Set Modes} {Spindle RPM} {PB_CMD_spindle} {Spindle RPM} {Spindle Off} {spindle_off} {Spindle Off} {Coolant On} {coolant_on} {Coolant On} {Coolant Off} {coolant_off} {Coolant Off} {Inch Metric Mode} {} {Inch Metric Mode} {Feedrates} {} {Feedrates} {Cutcom On} {} {Cutcom On} {Cutcom Off} {cutcom_off PB_CMD_D_flag_v_nol} {Cutcom Off} {Delay} {delay} {Delay} {Opstop} {opstop} {Opstop} {Auxfun} {auxfun} {Auxfun} {Prefun} {prefun} {Prefun} {Load Tool} {} {Load Tool} {Stop} {stop} {Stop} {Tool Preselect} {tool_preselect} {Tool Preselect} {Pprint} {PB_CMD_pprint} {Pprint} {Operator Message} {PB_CMD_operator_message} {Operator Message} {Insert} {PB_CMD_insert} {Insert} {Origin} {PB_CMD_origin} {Origin} {Text} {PB_CMD_text} {Text} {Zero} {PB_CMD_zero} {Zero} #Control Functions End
|
|
2. Используя выше приведенную методику.
Теперь вы можете, добавлять в меню PB нужные Вам
функции. И не только, начинающееся на знакомое
PB_CMD_*.
Ограничение, я думаю одно - процедура не должна содержать аргументы.
Если, Вы, хотите добавить свою собственную процедуру, то предварительно, опишите
её в tcl - файле, дополните
pui,
а уж , затем открывайте Ваш проект в PB.
{Command} \ {"Custom Command" "" "New Custom Command"} \ {"MOM_set_seq_off" "" "MOM Command"} \ {"MOM_set_seq_on" "" "MOM Command"} \ {"MOM_coolant_off" "" "MOM Command"} \ {"MOM_coolant_on" "" "MOM Command"} \ {"MOM_set_modes" "" "MOM Command"} \ {"MOM_spindle_css" "" "MOM Command"} \ {"MOM_spindle_off" "" "MOM Command"} \ {"MOM_spindle_rpm" "" "MOM Command"} \ {"SET_SIGN_OF_RADIUS" "" "Custom Command"} \ {"int_value" "" "Custom Command"} \ {"PRBCUT" "" "Custom Command"} \ {"PROBE" "" "Custom Command"} \ {"SET_Tool_type" "" "Custom Command"} \ {"PB_CMD_5axis_flag" "" "Custom Command"} \ {"PB_CMD_5axis_flag3_V_nol" "" "Custom Command"} \ ......
|
|
Copyright © 2001—2009 че