绮梦 发表于 2025-7-27 17:31:12

关于后处理相同地址值模态和非模态冲突解决方法

   本人学习研究后处理接近2年了,经常看到论坛有人提问G83的R值和圆弧R值,模态和非模态问题,设为模态,后面圆弧不输出R值,设为非模态,G83输出一大堆R值,现在给各位演示下解决方法,新人可以拿去参考下,大佬们勿喷
首先找到圆周移动,右击这个R值,更改单元,用户表达式,把里面的蓝色式子复制,$符号别漏了,然后把这个R值拖到垃圾桶立删除掉

上方选择一个新地址,按住添加文字,拖下来

然后把刚才复制的式子粘贴到最下方的表达式里面,文字名称设为R_1(其它名字也行,但不要和其它字符冲突,最好下划线加数字)
引导符为R,最小值0.01(如果圆弧低于这个值不输出,可以根据实际情况设定),最大值9999就行了,如果是干大件的,设到99999
模态设为否,然后保存就行了               (或者设为模态也可以,但是保存后右击R值必须设为强制输出),我自己设的模态,用的强制输出


完美解决问题,普通三轴和四轴基本没有问题了


最后:五轴上面,如果新建的地址值多了,依旧会冲突,还是这个R值为例,另外一个方法是,新建的R值放到G83上面,不管模态还是非模态,
在刀轨开始上面添加强制输出一次也可以解决

不能一次发多张图太难受




远方有愈 发表于 2025-7-27 18:16:36

学习一下

爱好者储先生 发表于 2025-7-28 11:45:25

学习一下大佬的思路

大只佬 发表于 2025-8-5 10:34:32

谢谢分享

xjc* 发表于 2025-10-21 21:24:44

大佬,工件名跟程序名不一致时,终止后处理,有什么代码可以实现

绮梦 发表于 2025-10-22 21:51:56

xjc* 发表于 2025-10-21 21:24
大佬,工件名跟程序名不一致时,终止后处理,有什么代码可以实现

有的,先声明程序名称和工件名称的全局变量,在用set将两者分别赋值任意字符,再用campare语句比较两者,再用if{!}判断结果,相同就输出,不相同就用else   MOM_abort终止后处理输出

xjc* 发表于 7 天前

绮梦 发表于 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]
查看完整版本: 关于后处理相同地址值模态和非模态冲突解决方法