Как postbuilder не выводить точку
Не много отвлечемся и я вам расскажу о том, как и где создаются MOM (TCL) расширения. Основную роль в этом играют библиотеки , libcamsmom.dll, libcamsint.dll и libcams.dll. Основные классы описаны в библиотеке — libcamsint.dll и libcamsmom.dll . Их иерархию — я не знаю. Строго говоря, подготовка и обработка данных для постпроцесса состоит из нескольких частей: первая часть это функции MOM_POST_*, вторая часть из более современной — классы. Каждый из них содержит огромное количество методов и свойств, некоторые дополняются своими специфическими. Ниже привожу их как пример (часть) методы класса UGS::TCL :
public: protected: ::ask_output_directory(void) ::ask_output_buffer(void) ::ask_proc_names(char const *) ::clear_end_buffer(void) ::close_output_file(char *) ::do_internal_event(char *) ::does_handler_handle_event(char *) ::dump(int (__cdecl*)(char const *. )) ::eval_boolean(char const *) ::eval_interp_proc_arg(char const *) ::eval_num_expr_in_xlator(char *,double *,int *) ::eval_str_expr_in_xlator(char *,char *,int *) ::init(void) ::implement_unload(void) ::implement_destroy(void) ::init_output_buffer(void) ::load_default_handlers(void) ::load_definition_file(void) ::load_event_handlers(void) ::load_global_vars_into_xlator(void) ::parser_error(char *,int,char *,char *) ::raise_warning(char const *) ::remove_var(char *) ::set_associative_array(char const *,char const *,char const *) ::set_dbl_array(char *,int,double *) ::set_dbl_array_2d(char *,int,int,double *) ::set_debug_mode(int) ::set_double(int,char const *,double) ::set_int(char *,int) ::set_int_array(char *,int,int *) ::set_integer(int,char const *,int) ::set_internal_string(char *,char *) ::set_last_result(char *) ::set_last_result_from_interp(void) ::set_channel_being_postprocessed(class UGS::XTP_channel *) ----xtp ::set_postprocessing_mode(bool) ------xtp ::set_str_array(char *,int,char * *) ::set_string(char *,char *) ::set_double_fast(enum MOM_FAST_VARS_e,double) ::set_int_fast(enum MOM_FAST_VARS_e,int) ::set_string_fast(enum MOM_FAST_VARS_e,char const *) ::set_timing_group(int) ::set_unprefixed_var(char const *,char const *) ::start_translator(void) ::stop_translator(void) ::unload(void) ::unload_definition_file(void) ::write_definition_file(void) ::write_obuf_to_ofile(void) static class UGS::OM::AttributeId ::start_bufferAttId ::symbol_tableAttId ::time_stampAttId ::timing_groupAttId ::xtpTransAttId ::primary_output_file_nameAttId ::previous_xtp_eventAttId
Иерархия классов примерно такая :
Сами MOM- функции создаются в методе класса ::add_funcs_to_xlator(void *this)
А вот присоединяются непосредственно к командам TCL посредством структуры: struct TCL_vtbl_s * pvtbl_tcl — со смещением 17. Что за команда TCL скрыта под этим номером можно только догадываться.
. (*(void (__cdecl **)(int, _DWORD, int (__cdecl *)(int, int, int, int), int, _DWORD)) ((void (__cdecl **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))pvtbl_tcl+ 17))
Если Вы хотите узнать какие именно процедуры (Ваши\не Ваши) загружаются и используются в интерпретаторе, то используйте Tcl команду в событии [end_of_program] :
set s [ info commands ]
MOM_output_to_listing_device $s
В исходниках UG — файлы, отвечающие за МОМ, расположены примерно здесь:
/src/cams/no/ind/ | |
mom_post_tclex.c | — создание MOM — команд |
mom_doc.c | |
mom_doc_definitions.c | |
mom_post.c | — основной файл MOM |
mom_post_convert_point.c | — конвертирует \ поворачивает точку, проверяет лицензию |
mom_post_dh_kinematics.c | — ведет расчет и выводит точки |
mom_post_kinematics.c | |
mom_post_syscycle.c | |
mom_post_turbo_cbs.c | — отвечает за режим TURBO |
mom_post_ytab.c | |
opr_mom.c | — создает MOM — переменные для параметров операций |
opr_mom_doc.c | — создает MOM — переменные для параметров операций для Shop |
Методы классов.
Рассмотрим их, по мере создания и подключения.
Пример цикла обхода всех членов в программе в поисках нужного инструмента, используя язык запросов QRY:
QRY='[$mom_tool_name] &= [^T.*$] &&[$mom_tool_diameter] > [0.5]’
>
]
Синтаксис QRY (запросов):
libcams .dll | |
UGS::MOM_DOC | |
UGS::MOM_DOC::add_funcs_to_xlator(void *this) | |
UGS::MOM_INFO::add_funcs_to_xlator(); | |
«MOM_list_oper_path» | MOM_list_oper_path Команда выводит листинг операции. И позволяет выбрать формат листинга. Эта команда позволяет Вам постпроцессировать операцию используя существующий постпроцессор (Tcl и Def файл). Вы можете выводить или машинный код G\M, или список UDEs Пример: вывод листинга операции в CLSF-формате. set list_tcl [MOM_ask_env_var UGII_CAM_TOOL_PATH_DIR]clsf.tcl set list_def [MOM_ask_env_var UGII_CAM_TOOL_PATH_DIR]clsf.def MOM_list_oper_path $mom_operation_name $list_tcl $list_def |
«MOM_load_oper_ude_exps» NX 9 | |
«MOM_list_user_defined_events» | MOM_list_user_defined_events < Start/End > < operation_name > [] Это расширение позволяет выводить список UDEs определенных в операции. » Start » — список начальных UDE, » End » — конечные Пример: MOM_list_user_defined_events «Start» $mom_operation_name \ «$mom_source_directory\\test_info.def» «$mom_source_directory\\test_info.tcl» «c:\\Temp\\XYZ.txt» |
«MOM_refresh_display» | мом — функция п о обновлению экрана, для вывода рисунка в документации. |
«MOM_capture_image» | судя по названию функция делает захват изображения с окна UG, используются технологии VRML GIF |
«MOM_capture_path_gif_image» NX 9 | MOM_capture_path_gif_image [] — позволяет выбрать путь\папку куда сохранять gif -файлы [ tool path ] операции. |
> |
Но классы описанные в библиотеке выше являются более общными для всех, а вот непосредственно отвечающими за обработку и вывод постпроцессора являются классы лежащие внутри ниже показанной библиотеки.
- mom_kin_4th_axis_center_offset
- mom_kin_5th_axis_center_offset
- mom_kin_pivot_gauge_offset
- mom_ result — массив [ X, Y, Z, 4th, 5th ] — первичное решение
- mom_ result1 — массив [ X, Y, Z, 4th, 5th ] — альтернативное
- mom_result = mom_special_output < 0 = None, 1 = Use Main MCS, 2 = Fixture Offset, 3 = CSYS Rotation>.
- mom_result1 = mom_csys_matix[12]
- mom_result2 = mom_machine_csys_matrix[12].
Класс UGS::UI_WIZD.
- ISV или методы симуляции УП в Unigraphic -е реализуются методом » хука «. То-есть, классы MOM_SIM — в реализации тоже самое, что и MOM_POST, только обработка события проходит через специфичные для данного класса метода, а уж потом вызываются методы класса MOM_POST.
В библиотеках Юниграфики, собственно за обработку данных координат (для постпроцессора) отвечает большое количество функций с именем: MOM_POST_*. В их теле происходит интенсивная обработка mom -переменных, переменных — кинематики, разного рода вычисления. Вот примерные имена их:
.
MOM_POST_convert_point
MOM_POST_edm_4axis_pt
MOM_POST_rotate_tool_axis
MOM_POST_convert_5axis_pt
MOM_POST_dh_convert_point
MOM_POST_round
MOM_POST_rotary_pos
MOM_POST_rotate_point
MOM_POST_limit_angle
.
— на них, я не буду останавливаться. Их много, а тратить время на их анализ просто не хотелось, кто хочет — может попробовать сам. Покажу только список всех кинематических переменных читаемых функцией MOM_POST_init_kinematic_data. В этой функции MOM читает мом-переменные и заполняет сложную внутреннюю структуру. Все значения приводятся к верхнему регистру MCE_convert_toupper(char *), а затем сравниваются с определенными значениями. Активно применяется PART_ask_units. Внутри функции читается переменная «UGII_CAM_POST_ENABLE_RESOLUTION_ROUND» — за что она отвечает можно только догадываться. Практически все строковые кинематические MOM переменные переводятся в числовые < 1, 0 >= , либо в массив значений.
"kin_cycle_plane_change_to_lower" ; "TRUE" "kin_cycle_plane_change_per_axis" ; "TRUE" "kin_output_unit" ; IN or MM "kin_post_data_unit" ; IN or MM "kin_machine_type" ; "lathe" "3_axis_mill" "4_axis_head" "4_axis_table" "mill_turn" "3_axis_mill_turn" "5_axis_dual_table" "5_axis_dual_head" "5_axis_head_table" "2_axis_wedm" "4_axis_wedm" "kin_wire_tilt_output_type" ; ANGLES, COORDINATES "kin_min_angular_incr" ; "COORDINATES" "ADVANCED" "kin_machine_resolution" "kin_min_arc_length" "kin_track_center_of_ball" ; "TRUE" "kin_4th_axis_plane" ;"ZX" "kin_4th_axis_rotation" ;"reverse" STANDARD "kin_4th_axis_min_incr" "kin_4th_axis_min_limit" "kin_4th_axis_max_limit" "kin_4th_axis_zero" "kin_4th_axis_center_offset" "kin_4th_axis_direction" ; "SIGN_DETERMINES_DIRECTION" "SIGN_PLUS_CCLW" "CCLW_LARGER_ANGLE" "ALWAYS_CLW" "ALWAYS_CCLW" "ALWAYS_SHORTEST" "CODE_FORCES_DIR" "kin_linearization_tol" "kin_linearization_flag" ;"TRUE" "kin_5th_axis_plane" ;"ZX" "kin_5th_axis_rotation"; "reverse" STANDARD "kin_5th_axis_min_incr" "kin_5th_axis_min_limit" "kin_5th_axis_max_limit" "kin_5th_axis_zero" "kin_5th_axis_center_offset" "kin_5th_axis_inclination_to_4th" "kin_5th_axis_direction" ; "SIGN_DETERMINES_DIRECTION" "MAGNITUDE_DETERMINES_DIRECTION" "SIGN_PLUS_CCLW" "CCLW_LARGER_ANGLE" "ALWAYS_CLW"; "ALWAYS_CCLW" "ALWAYS_SHORTEST" "CODE_FORCES_DIR" "kin_iks_usage" "iks_usage" "kin_4th_axis_plane" "kin_5th_axis_plane" "kin_pivot_dist_vec" "kin_pivot_gauge_offset" "kin_coordinate_type" ; "POLAR" ;POSX, POSY, POSZ, NEGX, NEGY, NEGZ "kin_holder1_orientation" , "kin_holder1_offset_x" , "kin_holder1_offset_y" , "kin_holder1_offset_z" "kin_holder2_orientation" , "kin_holder2_offset_x" , "kin_holder2_offset_y" , "kin_holder2_offset_z" "kin_holder3_orientation" , "kin_holder3_offset_x" , "kin_holder3_offset_y" , "kin_holder3_offset_z" "kin_holder4_orientation" , "kin_holder4_offset_x" , "kin_holder4_offset_y" , "kin_holder4_offset_z" "kin_holder5_orientation" , "kin_holder5_offset_x" , "kin_holder5_offset_y" , "kin_holder5_offset_z" "kin_holder6_orientation" , "kin_holder6_offset_x" , "kin_holder6_offset_y" , "kin_holder6_offset_z" "kin_polar_radius_side" ; "POSITIVE" "NEGATIVE" "kin_nurbs_output_type" ; BSPLINE, HEIDENHAIN_POLY, SIEMENS_POLY "kin_independent_head" ; FRONT, REAR, RIGHT, LEFT, SIDE, SADDLE, NONE "kin_ind_to_dependent_head_x" "kin_ind_to_dependent_head_z" "kin_clsf_generation" "kin_no_defaults" "kin_read_ahead_next_motion" ;"TRUE" "kin_is_turbo_output" ;"TRUE" "FALSE" "kin_arc_output_mode" ; FULL_CIRCLE, QUADRANT, LINEAR "kin_helical_arc_output_mode" ;FULL_CIRCLE, QUADRANT, LINEAR, END_POINT "kin_arc_valid_plane" ; XYZ, XY, YZ, ZX, ANY "kin_min_arc_radius" "kin_max_arc_radius" "kin_tool_tracking_height" "kin_rapid_feed_rate" "kin_max_fpm" "kin_max_fpr" "kin_max_frn" "kin_max_dpm" "kin_min_fpm" "kin_min_fpr" "kin_min_frn" "kin_min_dpm" "kin_tool_change_time" "kin_clamp_time" "kin_flush_time" "kin_spindle_axis" ;"XAXIS" "YAXIS" "ZAXIS" "kin_4th_axis_incr_switch" ; ON (incremental) or OFF (absolute) "kin_5th_axis_incr_switch" "kin_tool_tip_distance_compute_method" "sys_linearization_method"; "axis"
Основным классом можно признать UGS::MOM_TCL. Косвенным фактом этого служит обработчик по умолчанию:
proc MOM__halt <> < set pfx_util_done_heading 0;>proc MOM__util_do_heading <> global pfx_part_name; global pfx_logname; global pfx_date; global pfx_util_done_heading; if < $pfx_util_done_heading == 1 >< return >; MOM__util_print «Informational Output for PART: $pfx_part_name»; MOM__util_print «Created By: $pfx_logname»; MOM__util_print «Creation Date: $pfx_date»; MOM__util_print «===============================================»; set pfx_util_done_heading 1; > proc MOM__util_print_line_context set fl [open $filename r]; set from [expr $linenum-$context]; set to [expr $linenum+$context]; set current 1; if < $from < 1 >< set from 1 >; while < $current = 0 > if < $current >= $from > < MOM__util_print "$: $line"; > set current [incr current]; >; close $fl; > proc MOM__util_print < line >set f [open «./pfx_information.out» a]; puts $f $line; flush $f; close $f; > proc MOM__boot <>
set pfx_debug_init_done 0; set pfx_debug_events 0; set pfx_debug_vars 0; set pfx_debug_num_flag 0; set pfx_debug_range_flag 0; set pfx_debug_range_lower 0; set pfx_debug_range_upper 0; set pfx_debug_event_num 0; set pfx_parse_error ""; set pfx_parse_file_name ""; set pfx_parse_line_number ""; set pfx_parse_line ""; set pfx_error_info ""; set pfx_error_code ""; set pfx_error_event ""; set pfx_error_event_handler_name ""; set pfx_parse_error ""; set pfx_parse_file_name ""; set pfx_parse_line_number ""; set pfx_parse_line ""; set pfx_error_info ""; set pfx_error_code ""; set pfx_error_event ""; set pfx_error_event_handler_name ""; proc PFX_on_event_error <> global pfx_error_info; global pfx_error_code; global pfx_error_event; global pfx_error_event_handler_name; MOM__util_print "***** A TCL Error Has Occurred *****"; MOM__util_print "Event Handler: $pfx_error_event_handler_name"; MOM__util_print "Event: $pfx_error_event"; MOM__util_print "Error Info: $pfx_error_info"; MOM__util_print "Error Code: $pfx_error_code"; > proc PFX_on_parse_error <> global pfx_parse_error; global pfx_parse_file_name; global pfx_parse_line_number; global pfx_parse_line; MOM__util_print "***** A Parse Error Has Ocurred *****"; MOM__util_print "Definition file: $pfx_parse_file_name"; MOM__util_print "In Or Near Line Number: $pfx_parse_line_number"; MOM__util_print_line_context $pfx_parse_file_name $pfx_parse_line_number 3 stdonly; MOM__util_print "Parser error message: $pfx_parse_error"; > proc PFX_catch_warning <> global pfx_warning_info; MOM__util_do_heading; MOM__util_print ""; MOM__util_print "+++MOM WARNING+++"; MOM__util_print "Info: $pfx_warning_info"; MOM__util_print ""; > proc PFX_on_event_error_debug <> global pfx_error_info; global pfx_error_code; global pfx_error_event; global pfx_error_event_handler_name; MOM__util_print ""; MOM__util_print "***ERROR***: Error in the Event Handler"; MOM__util_print "---------------------------------------"; MOM__util_print "Event Handler: $pfx_error_event_handler_name"; MOM__util_print "Event: $pfx_error_event"; MOM__util_print "Error Info: $pfx_error_info"; MOM__util_print "Error Code: $pfx_error_code"; MOM__util_print ""; > proc PFX_on_parse_error_debug <> global pfx_parse_error; global pfx_parse_file_name; global pfx_parse_line_number; global pfx_parse_line; MOM__util_print ""; MOM__util_print "***ERROR***: Parse Error in the Definition File"; MOM__util_print "--------------------------------------------------"; MOM__util_print "Definition file: $pfx_parse_file_name"; MOM__util_print "In Or Near Line Number: $pfx_parse_line_number"; MOM__print_line_context $pfx_parse_file_name $pfx_parse_line_number 3 fileonly MOM__util_print "Line: $pfx_parse_line"; MOM__util_print "Parser error message: $pfx_parse_error"; MOM__util_print ""; > proc PFX_end_debug <> < global pfx_util_done_heading; set pfx_util_done_heading 0; >proc PFX_init_debug <> global pfx_debug_init_done; global pfx_part_name; global pfx_logname; global pfx_date; global pfx_util_done_heading; global pfx_debug_events pfx_debug_vars pfx_debug_num_flag; global pfx_debug_range_flag pfx_debug_range_lower pfx_debug_range_upper; MOM__util_print "Set Debugging Options"; PFX_set_defaults; if < [file exists mom_debug_answers] >PFX_read_answers; MOM__util_print "Use the answers found in mom_debug_answers."; > else MOM__util_print "Use default answers."; >; MOM__util_print "Answers: $pfx_debug_events $pfx_debug_vars $pfx_debug_num_flag \ $pfx_debug_range_flag $pfx_debug_range_lower $pfx_debug_range_upper"; set pfx_util_done_heading 0; set pfx_debug_init_done 1; > proc PFX_read_answers <> global pfx_debug_events; global pfx_debug_vars; global pfx_debug_num_flag; global pfx_debug_range_flag; global pfx_debug_range_lower; global pfx_debug_range_upper; set f [open mom_debug_answers r]; gets $f pfx_debug_events; gets $f pfx_debug_vars; gets $f pfx_debug_num_flag; gets $f pfx_debug_range_flag; if < $pfx_debug_range_flag == 1 >gets $f pfx_debug_range_lower; gets $f pfx_debug_range_upper; >; close $f; > proc PFX_set_defaults <> global pfx_debug_events; global pfx_debug_vars; global pfx_debug_num_flag; global pfx_debug_range_flag; global pfx_debug_range_lower; global pfx_debug_range_upper; set pfx_debug_events 1; set pfx_debug_vars 0; set pfx_debug_num_flag 1; set pfx_debug_range_flag 0; set pfx_debug_range_lower 0; set pfx_debug_range_upper 0; > proc PFX_before_each_add_var <> global pfx_debug_assign_var; global pfx_debug_vars; global pfx_debug_event_num; global pfx_debug_range_lower pfx_debug_range_upper pfx_debug_range_flag; if < $pfx_debug_vars == 0 >< return >; MOM__util_do_heading; set num $pfx_debug_event_num; incr num; if < $pfx_debug_range_flag == 1 >if < $num < $pfx_debug_range_lower || $num >$pfx_debug_range_upper > < return >; >; MOM__util_print "Var: $pfx_debug_assign_var"; > proc PFX_before_each_event <> global pfx_debug_event_name; global pfx_debug_events pfx_debug_range_flag pfx_debug_event_num; global pfx_debug_range_lower pfx_debug_range_upper pfx_debug_num_flag; incr pfx_debug_event_num; if < $pfx_debug_events == 0 >< return >; if < $pfx_debug_range_flag == 1 >if < $pfx_debug_event_num < $pfx_debug_range_lower || $pfx_debug_event_num >$pfx_debug_range_upper > < return >; >; MOM__util_do_heading; if < $pfx_debug_num_flag == 1 > < set num $pfx_debug_event_num; >else < set num ""; >; MOM__util_print ""; MOM__util_print "Event $: $pfx_debug_event_name"; MOM__util_print "--------------------------------------------------"; MOM__util_print ""; >
Что делает этот код — я не знаю. Наверно он служит для каких-то отладочных мероприятий.
Подведем итоги.
Как вы можете видеть, при постпроцессировании доступны MOM -функции из 3-х классов
более того, некоторые функции слабо документированы, либо сознательно не афишируются разработчиками даже в утилите Post Builder : mom_vars_browser . tcl
VIII Международная студенческая научная конференция Студенческий научный форум — 2016
ОСОБЕННОСТИ РАЗРАБОТКИ ПОСТПРОЦЕССОРА ДЛЯ РАБОТЫ В МОДУЛЕ NXCAM.
Урманов М.Д. 1
1 Набережночелнинский институт (филиал) Казанского (Приволжского) федерального университета
Работа в формате PDF
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке «Файлы работы» в формате PDF
В настоящее время рациональным решением для подготовки производства на станках с ЧПУ является разработка управляющих программ в автоматизированном режиме непосредственно на рабочем месте технолога. Одним из решений для этой процедуры можно принять использование модуля «Обработка» (САМ) в системе UNIGRAPHICS NX от компании Siemens PLM Software. Одной из проблем, возникающих на производстве, становится то, что для формирования управляющей программы для каждой системы ЧПУ необходим отдельный постпроцессор – программный модуль, переводящий описание траектории инструмента на внутреннем языке САМ в формат управляющей программы. В среде NX существует определенное количество шаблонов для создания постпроцессора. Однако каждый станок с ЧПУ имеет свои особенности в составлении управляющей программы. Именно поэтому существует необходимость в доработки постпроцессора.
В данной работе для создания своего постпроцессора используется программный продукт NX/PostBuilder.В этой среде автоматически будет создаваться стандартный шаблон постпроцессора, который необходимо редактировать под особенности своего станка.После создания нового файла появится следующее диалоговое окно (рис. 1):
Рисунок 1 – Диалоговое окно задания параметров постпроцессора
Вводиться имя постпроцессора, лучше, если оно совпадает с моделью станка, в нашем случае это фрезерный станок с ЧПУ JMD3CNC. Описание станка не изменяем. Единицы вывода постпроцессора задаем в миллиметрах. Ставим галочку в окне «Разрешить изменение для событий, задаваемых пользователем», в этом случае можно задавать функциональные особенности постпроцессора для нашего станка. На этом подготовительная часть для создания шаблона постпроцессора заканчивается.
В следующем окне вводиться характеристики станка, они необходимы для формирования особенностей задания границ обработки и выхода в референтную точку:
Рисунок 2 – Диалоговое окно задания характеристик станка
Теперь непосредственно переходим к редактированию программы. Для нашего случая в начале программного управления станком необходимо, чтобы присутствовали:
- название программы:
- расширение файла программы;
- путь к файлу программы в системе ЧПУ.
Для этого необходимо добавить дополнительные текстовые блоки, в которых и непосредственно будет записаны эти строки (рис. 3).
%_N_K_MPF – где для К- название программы , MPF – расширение.
;$PATH=/N_MPF_DIR – путь к программе;
Однако если записать данные строки, то у нас выйдет ошибка. Это будет связано с тем, что система NX будет воспринимать все стоящее после знака $ как функцию. Чтобы этого не происходило, необходимо ввести обратный слеш, тогда программа не будет выполнять подстановку значений.
Рисунок 3 – Программные коды в задании инициализации программы
Следующим шагом является замена или удаление команд, которые не используются в управляющей программе станка.
В начале программы необходимо добавить в кадре строки безопасности«G40 G17 G90 G71» команду G00. По этой команде перемещения по координатам, идущие сразу после строки безопасности и записанные без определяющих подготовительных функций, будут производиться на быстром ходу, как это и нужно для подвода инструмента. На вкладке «Последовательность в начале операции» в команде «Автоматической смене инструмента» необходимо убрать кадр G91 G28 Z0, так как эта функция отсутствует в системе ЧПУ Sinumerik 802S нашего станка. Так как инструмент в управляющей программе станка обозначается иначе, нам нужно изменить во вкладке «Управлением станком» в команде «Коррекция на длину» команды G43 H01 на команду T01 D01. Во вкладке «Перемещения инструмента» в команде «Круговое перемещение» необходимо убрать команду К. Во вкладке «Встроенные циклы» в команде «Выключение цикла» убрать команду G80, и в командах, расположенных ниже командуQ. Во кладке «Последовательность в конце операции» в команде «ПеремещениеGomove» необходимо добавить кадр с командами G00 и Z. Зададим выражение Z = 100. По этой команде после окончания операции инструмент будет отводится на безопасное расстояние от заготовки. Во вкладке «Последовательность в конце программы» в команде «Конец программы» убираем кадр %_N_K_MPF, а также заменяем кадр M02 на M30.
Следующим шагом будет создание в управляющей программе строк с наименованием начала программы и видом обработки.
Для этого необходимо перейти к командам пользователя. В данном разделе будет использоваться встроенный язык программированияTCL.
Рисунок 4 – Задание команд пользователя
Для начала необходимо создать свою команду. НазовемееPB_CMD_MY_OWN_PROGRAMM. Для упрощения работы в системе есть специальная база команд, которую можно открыть: Utilities-BrowseMOMVariables. Для задания строки потребуется команда mom_output_literal. Нам необходимо, что бы наша команда выводила строковое значение. Для этого запишем следующую строку: mom_output_literal “;===START OF THE PROGRAMM===”. Команда, помещенная в кавычках будет считаться системой как строка. Для работы данной команды необходимо добавить ее во вкладку «Последовательность в начале программы» после цикла MOM_set_seq_on. На данном этапе после запуска постпроцессирования, мы получим строку в начале программы:;===STARTOFTHEPROGRAMM===. Следующей задачей является получение строки с название обработки. Для этого создадим еще одну команду и назовем ее PB_CMD_Start_of_operation. В данной команде для отображения названия операции будем использовать команду mom_operation_name. Объявим ее глобальной, используя команду global. ВследующейстрокенеобходимозаписатьMOM_output_literal «;OPERATIONNAME =>$mom_operation_name». В данной команде все записанной в кавычках считается системой текстом, а значение, идущие после знака $ считаются переменной. Так же для работы данной команды необходимо добавить ее во вкладку «Последовательность в начале программы» после цикла PB_CMD_MY_OWN_PROGRAMM.
Чтобы убедиться в работоспособности постпроцессора сохраним его и постпроцессируем заранее подготовленную операцию обработку корпусной детали (рис. 5).
Рисунок 5 – Управляющая программа обработки детали
Таким образом, используя модуль NX/PostBuilder, с его возможностями задания команд пользователя, можно сгенерировать постпроцессор для любого исполнения системы ЧПУ и тем самым повысить эффективность использования модуля NXCAM.
Литература:
- Ведмидь П.А.,Сулинов А.В. Программирование обработки в NX CAM. – М.: ДМК Пресс, 2014 – 304 с.
FAQ/Unigraphics/POST
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.
Сейчас на странице 0 пользователей
Нет пользователей, просматривающих эту страницу.
Сообщения
Автор: fzbm · Опубликовано: 14 минут назад
Как говорят некоторые источники с шарнирами в ls-dyna беда. Есть ограничения типа для каждой части допускается только один шарнир. Общее количество шарниров не более 3-х (для нужной нам формулировки). Еще одна проблема в задании нагрузок в локальной системы координат. Но проблема вроде решилась использованием Шарниров Joint c приставкой MOTOR Может кому то интересно будет вот такой источник по шарнирам в LS-DYNA https://trepo.tuni.fi/bitstream/handle/123456789/24196/Sormunen.pdf?sequence=3&isAllowed=y
Автор: Россиянин1975 · Опубликовано: 30 минут назад
Ребята всем доброго времени суток. Вот такая проблема: есть втулка, все по классике — черновая и чистовая проточка по наружке. Там есть канавка наружняя примерно посередине длины втулки. Так вот, если делаю черновую наружнюю проточку и сразу чистовую, все хорошо. Но если после черновой делаю канавку, то чистовая генерируется только до канавки, те канавка делит пов-ть на 2 части, и вторую часть пройти по чистовому не дает, не знаю что делать. @5axisCNC получается если РЕГИОН ОБРАБОТКИ я меняю с по умолчания на задать, то он показывает 2 региона обработки, и в одной операции можно задать только 1 регион обработки указанием точки на регионе. Те чистовая операция будет состоять из 2 переходов по раздельности, вместе за один проход не получается. Нормально это или нет я не знаю(, но с точки зрения токаря это не разумно.
Автор: 5axisCNC · Опубликовано: 1 час назад
рискну предположить выбор области множественный а не одиночный?
Автор: Slavdos · Опубликовано: 2 часа назад
нет справа и слева поставить зажимы . но без пуансонов
Автор: fantom.ul · Опубликовано: 2 часа назад
Автор: куркуль · Опубликовано: 2 часа назад
в ошибку: 025050 Ось MSP1 Контроль контура. Без нагрузки тоже самое — контроль контура — у нас всегда проблема по механики. посмотри какой ток.
Автор: Россиянин1975 · Опубликовано: 3 часа назад
Ребята всем доброго времени суток. Вот такая проблема: есть втулка, все по классике — черновая и чистовая проточка по наружке. Там есть канавка наружняя примерно посередине длины втулки. Так вот, если делаю черновую наружнюю проточку и сразу чистовую, все хорошо. Но если после черновой делаю канавку, то чистовая генерируется только до канавки, те канавка делит пов-ть на 2 части, и вторую часть пройти по чистовому не дает, не знаю что делать.
15 ноября 2023 года в Москве в отеле «МонАрх» состоится конференция пользователей DATADVANCE 2023 — ежегодное мероприятие для клиентов, специалистов из отрасли и всех, кто интересуется программными продуктами pSeven. Участие в конференции — это отличная возможность для инженеров-конструкторов, специалистов по численному моделированию, дата-аналитиков и других профессионалов из различных отраслей промышленности собраться вместе для обмена опытом, налаживания сотрудничества и решения актуальных вопросов в сфере анализа данных, инженерной оптимизации и предиктивного моделирования. В этом году мы разделим конференцию на два блока: Первый будет посвящен pSeven — программной платформе для анализа данных и оптимизации, дополняющей средства проектирования и инженерного анализа, которая дает возможность даже не специалистам по математике решать сложные инженерные задачи и находить оптимальные конструкции изделий. Второй — pSeven Enterprise — облачной low-code [. ] View the full article
Оригинал: Roopinder Tara. Bentley Announces Winners of 2023 Going Digital Awards in Infrastructure В размещенном ниже переводе приведены картинки, относящиеся к 12 победителям. В оригинале вы найдете также красочные иллюстрации проектов остальных 24 финалистов. Bentley Systems объявила победителей премии Going Digital Awards 2023 в области инфраструктуры. Выбор производился 12 независимыми жюри по отдельным категориям наград, которые выбрали 36 финалистов из более чем 300 номинаций, представленных 235 различными компаниями из 51 страны. Судьи выбрали победителей в каждой категории на ежегодном мероприятии Bentley «Год в инфраструктуре», проходившем в Сингапуре. Победители были объявлены на торжественном гала-ужине в отеле Marina Bay Sands 12 октября 2023 года. Победители премии «Год в инфраструктуре 2023». Изображение: Bentley Ниже представлены финалисты и победители в каждой категории. 1. Мосты и [. ] View the full article
Автор: SAPRonOff · Опубликовано: 7 часов назад
ну тут речь про стратегические возможности САПР-системы, рядовому инженеру это будет заметно при выполнение каких-нибудь нетиповых «хитрых» построений, хотя даже при выполнении типовых, тоже можно почувствовать «нюансы» в некоторых САПР:). Например(обычно) считается, что сила CATIA(ядро CGM) в построение хитрых поверхностей, а NX(ядро Parasolid) в твёрдотельном моделировании: если брать, так называемые «тяжёлые» САПР-системы — обе системы ограничены возможностями своих ядер. Т.о., говоря про своё ядро — мы говорим, что наши отечественные математики могут дорабатывать любые эвристические потребности заказчика по запросу, могут иметь преимущества в архитектуре и быстродействии при построениях — в сравнении с конкурентами(в том числе импортными). Очевидно, переход с одного ядра на другое должен быть аккуратным/постепенным и обдуманным, Parasolid остаётся по прежнему самым оттестируемым и лучшим ядром по полярности в мире(SW, NX, SE и т.д.). Ну и конкурирование мат. ядер на рынке это всегда для конечного пользователя — хорошо, все должны стараться угодить заказчику, имея свои плюсы:)
Как в PostBuilder сделать чтобы кординаты поворота оси выводились с меньшей дискретизаацией?
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.
Сейчас на странице 0 пользователей
Нет пользователей, просматривающих эту страницу.
Сообщения
Автор: fzbm · Опубликовано: 14 минут назад
Как говорят некоторые источники с шарнирами в ls-dyna беда. Есть ограничения типа для каждой части допускается только один шарнир. Общее количество шарниров не более 3-х (для нужной нам формулировки). Еще одна проблема в задании нагрузок в локальной системы координат. Но проблема вроде решилась использованием Шарниров Joint c приставкой MOTOR Может кому то интересно будет вот такой источник по шарнирам в LS-DYNA https://trepo.tuni.fi/bitstream/handle/123456789/24196/Sormunen.pdf?sequence=3&isAllowed=y
Автор: Россиянин1975 · Опубликовано: 30 минут назад
Ребята всем доброго времени суток. Вот такая проблема: есть втулка, все по классике — черновая и чистовая проточка по наружке. Там есть канавка наружняя примерно посередине длины втулки. Так вот, если делаю черновую наружнюю проточку и сразу чистовую, все хорошо. Но если после черновой делаю канавку, то чистовая генерируется только до канавки, те канавка делит пов-ть на 2 части, и вторую часть пройти по чистовому не дает, не знаю что делать. @5axisCNC получается если РЕГИОН ОБРАБОТКИ я меняю с по умолчания на задать, то он показывает 2 региона обработки, и в одной операции можно задать только 1 регион обработки указанием точки на регионе. Те чистовая операция будет состоять из 2 переходов по раздельности, вместе за один проход не получается. Нормально это или нет я не знаю(, но с точки зрения токаря это не разумно.
Автор: 5axisCNC · Опубликовано: 1 час назад
рискну предположить выбор области множественный а не одиночный?
Автор: Slavdos · Опубликовано: 2 часа назад
нет справа и слева поставить зажимы . но без пуансонов
Автор: fantom.ul · Опубликовано: 2 часа назад
Автор: куркуль · Опубликовано: 2 часа назад
в ошибку: 025050 Ось MSP1 Контроль контура. Без нагрузки тоже самое — контроль контура — у нас всегда проблема по механики. посмотри какой ток.
Автор: Россиянин1975 · Опубликовано: 3 часа назад
Ребята всем доброго времени суток. Вот такая проблема: есть втулка, все по классике — черновая и чистовая проточка по наружке. Там есть канавка наружняя примерно посередине длины втулки. Так вот, если делаю черновую наружнюю проточку и сразу чистовую, все хорошо. Но если после черновой делаю канавку, то чистовая генерируется только до канавки, те канавка делит пов-ть на 2 части, и вторую часть пройти по чистовому не дает, не знаю что делать.
15 ноября 2023 года в Москве в отеле «МонАрх» состоится конференция пользователей DATADVANCE 2023 — ежегодное мероприятие для клиентов, специалистов из отрасли и всех, кто интересуется программными продуктами pSeven. Участие в конференции — это отличная возможность для инженеров-конструкторов, специалистов по численному моделированию, дата-аналитиков и других профессионалов из различных отраслей промышленности собраться вместе для обмена опытом, налаживания сотрудничества и решения актуальных вопросов в сфере анализа данных, инженерной оптимизации и предиктивного моделирования. В этом году мы разделим конференцию на два блока: Первый будет посвящен pSeven — программной платформе для анализа данных и оптимизации, дополняющей средства проектирования и инженерного анализа, которая дает возможность даже не специалистам по математике решать сложные инженерные задачи и находить оптимальные конструкции изделий. Второй — pSeven Enterprise — облачной low-code [. ] View the full article
Оригинал: Roopinder Tara. Bentley Announces Winners of 2023 Going Digital Awards in Infrastructure В размещенном ниже переводе приведены картинки, относящиеся к 12 победителям. В оригинале вы найдете также красочные иллюстрации проектов остальных 24 финалистов. Bentley Systems объявила победителей премии Going Digital Awards 2023 в области инфраструктуры. Выбор производился 12 независимыми жюри по отдельным категориям наград, которые выбрали 36 финалистов из более чем 300 номинаций, представленных 235 различными компаниями из 51 страны. Судьи выбрали победителей в каждой категории на ежегодном мероприятии Bentley «Год в инфраструктуре», проходившем в Сингапуре. Победители были объявлены на торжественном гала-ужине в отеле Marina Bay Sands 12 октября 2023 года. Победители премии «Год в инфраструктуре 2023». Изображение: Bentley Ниже представлены финалисты и победители в каждой категории. 1. Мосты и [. ] View the full article
Автор: SAPRonOff · Опубликовано: 7 часов назад
ну тут речь про стратегические возможности САПР-системы, рядовому инженеру это будет заметно при выполнение каких-нибудь нетиповых «хитрых» построений, хотя даже при выполнении типовых, тоже можно почувствовать «нюансы» в некоторых САПР:). Например(обычно) считается, что сила CATIA(ядро CGM) в построение хитрых поверхностей, а NX(ядро Parasolid) в твёрдотельном моделировании: если брать, так называемые «тяжёлые» САПР-системы — обе системы ограничены возможностями своих ядер. Т.о., говоря про своё ядро — мы говорим, что наши отечественные математики могут дорабатывать любые эвристические потребности заказчика по запросу, могут иметь преимущества в архитектуре и быстродействии при построениях — в сравнении с конкурентами(в том числе импортными). Очевидно, переход с одного ядра на другое должен быть аккуратным/постепенным и обдуманным, Parasolid остаётся по прежнему самым оттестируемым и лучшим ядром по полярности в мире(SW, NX, SE и т.д.). Ну и конкурирование мат. ядер на рынке это всегда для конечного пользователя — хорошо, все должны стараться угодить заказчику, имея свои плюсы:)
- IPS Theme by IPSFocus
- Язык
- Стиль
- Политика конфиденциальности
- Реклама на форуме
CAD/CAM/CAE Russian Community Board Powered by Invision Community