关于后处理相同地址值模态和非模态冲突解决方法
本人学习研究后处理接近2年了,经常看到论坛有人提问G83的R值和圆弧R值,模态和非模态问题,设为模态,后面圆弧不输出R值,设为非模态,G83输出一大堆R值,现在给各位演示下解决方法,新人可以拿去参考下,大佬们勿喷首先找到圆周移动,右击这个R值,更改单元,用户表达式,把里面的蓝色式子复制,$符号别漏了,然后把这个R值拖到垃圾桶立删除掉
上方选择一个新地址,按住添加文字,拖下来
然后把刚才复制的式子粘贴到最下方的表达式里面,文字名称设为R_1(其它名字也行,但不要和其它字符冲突,最好下划线加数字)
引导符为R,最小值0.01(如果圆弧低于这个值不输出,可以根据实际情况设定),最大值9999就行了,如果是干大件的,设到99999
模态设为否,然后保存就行了 (或者设为模态也可以,但是保存后右击R值必须设为强制输出),我自己设的模态,用的强制输出
完美解决问题,普通三轴和四轴基本没有问题了
最后:五轴上面,如果新建的地址值多了,依旧会冲突,还是这个R值为例,另外一个方法是,新建的R值放到G83上面,不管模态还是非模态,
在刀轨开始上面添加强制输出一次也可以解决
不能一次发多张图太难受
学习一下 学习一下大佬的思路 谢谢分享 大佬,工件名跟程序名不一致时,终止后处理,有什么代码可以实现
xjc* 发表于 2025-10-21 21:24
大佬,工件名跟程序名不一致时,终止后处理,有什么代码可以实现
有的,先声明程序名称和工件名称的全局变量,在用set将两者分别赋值任意字符,再用campare语句比较两者,再用if{!}判断结果,相同就输出,不相同就用else MOM_abort终止后处理输出 绮梦 发表于 2025-10-22 21:51
有的,先声明程序名称和工件名称的全局变量,在用set将两者分别赋值任意字符,再用campare语句比较两者, ...
proc MOM_start_of_program { } {
#=============================================================
global mom_logname mom_date is_from
global mom_coolant_status mom_cutcom_status
global mom_clamp_status mom_cycle_status
global mom_spindle_status mom_cutcom_plane pb_start_of_program_flag
global mom_cutcom_adjust_register mom_tool_adjust_register
global mom_tool_length_adjust_register mom_length_comp_register
global mom_flush_register mom_wire_cutcom_adjust_register
global mom_wire_cutcom_status
global mom_program_name
global mom_part_name
set pb_start_of_program_flag 0
set mom_coolant_status UNDEFINED
set mom_cutcom_statusUNDEFINED
set mom_clamp_status UNDEFINED
set mom_cycle_status UNDEFINED
set mom_spindle_status UNDEFINED
set mom_cutcom_plane UNDEFINED
set mom_wire_cutcom_statusUNDEFINED
catch {unset mom_cutcom_adjust_register}
catch {unset mom_tool_adjust_register}
catch {unset mom_tool_length_adjust_register}
catch {unset mom_length_comp_register}
catch {unset mom_flush_register}
catch {unset mom_wire_cutcom_adjust_register}
set is_from ""
安全获取程序名和工件名(原始值)set raw_prog_name ""
set raw_part_name ""
if { } { set prog_name "UNKNOWN_PROG" }
if { } { set part_name "UNKNOWN_PART" }
标准化名称set prog_name } ] ""]
set part_name } ] ""]
调试输出,确认原始值和标准化后的值MOM_output_literal "(调试:原始程序名 =原始工件名raw_part_name)\n"
MOM_output_literal "(调试:处理后程序名 =工件名part_name)\n"
修改条件判断,比较原始值(如果希望如此)或者保持比较标准化后的值,但确保标准化过程正确if { part\_name] != 0 } { MOM\_output\_literal "(错误:程序名称与工件名称不符!原始程序名:raw_prog_name,原始工件名:$raw_part_name)\n"
MOM_abort "后处理终止:程序名与工件名必须一致"
}
catch { OPEN_files } ;# Open warning and listing files
LIST_FILE_HEADER ;# List header in commentary listing
global mom_sys_post_initialized
if { $mom_sys_post_initialized > 1 } { return }
set ::mom_sys_start_program_clock_seconds
# Load parameters for alternate output units
PB_load_alternate_unit_settings
rename PB_load_alternate_unit_settings ""
#************
帮我看看,加了后处理失败,哪里语法有问题,谢谢
页:
[1]