找回密码
 立即注册

QQ登录

只需一步,快速开始

微信扫码登录

搜索
查看: 42|回复: 0

[分享] 重复刀号报警代码修改版,同一把刀多次调用仅报警一次,另增加同刀名不同的号报警

[复制链接]

2

主题

55

回帖

446

积分

二级士官

积分
446
发表于 4 小时前 | 显示全部楼层 |阅读模式
今天看到了别人以前的一个重复刀号报警的帖子,我以前也引用了那段代码,但那段代码有点瑕疵,就是同一把刀如果有多条刀路,每次都会弹窗,如果这个用来做拦截,终止后处理输出是没什么问题都,我觉得代码都原作者应该也是这个想法,只是用于终止后处理输出的,但后面都延伸功能,想继续输出后处理,这代码就需要做些更改了。我自己后来做了些修改,同一把刀多条刀路只提醒一次,如果有第三把刀冲突才会再次提醒,另外增加了同一名字不同刀号的弹窗(有些人在操作上改刀号会出现这种,而且不好发现),图片是我看到都帖子 1.png ,下面是我改过都代码,分享给大家。global mom_tool_number mom_tool_name tool_seq tool_name_array tool_num_array \
       R_alerted_tools_list R_alerted_numbers_list R_tool_numbers_by_name

if {![info exists tool_seq]} {
    set tool_seq 0
    array set R_tool_numbers_by_name {}
}

set tool_name_array($tool_seq) $mom_tool_name
set tool_num_array($tool_seq) T[format "%.2d" $mom_tool_number]

set R_current_tool_num "T[format "%.2d" $mom_tool_number]"
set R_current_tool_name $mom_tool_name


set R_found_same_number 0
for {set i 0} {$i < $tool_seq} {incr i} {
    if {$tool_num_array($i) == $R_current_tool_num} {
        set R_found_same_number 1
        incr tool_seq -1

        if {![string equal $tool_name_array($i) $R_current_tool_name] && ![info exists R_alerted_tools_list($R_current_tool_name)]} {
            set R_used_names


                for {set R_j 0} {$R_j < $tool_seq} {incr R_j} {
                    if {$tool_num_array($R_j) == $R_current_tool_num} {
                        if {[lsearch -exact $R_used_names $tool_name_array($R_j)] == -1} {
                            lappend R_used_names $tool_name_array($R_j)
                        }
                    }
                }
                set R_names_display [join $R_used_names ", "]

                set msg [MOM_display_message \
                    "Rez15916841614提醒您:\n\n刀具【$R_current_tool_name】与【$R_names_display】使用了相同刀具号 $R_current_tool_num\n\n是否继续后处理?" \
                    "警告!" I "继续处理" "中止处理"]

                switch $msg {
                    1 { set R_alerted_tools_list($R_current_tool_name) 1 }
                    2 { MOM_abort "用户中止:检测到刀具号冲突" }
                }
            }
            break
        }
    }

    if {!$R_found_same_number && [info exists R_tool_numbers_by_name($R_current_tool_name)]} {
        set R_used_numbers $R_tool_numbers_by_name($R_current_tool_name)

        if {[lsearch -exact $R_used_numbers $R_current_tool_num] == -1} {
            set R_alert_key "${R_current_tool_name}_${R_current_tool_num}"

            if {![info exists R_alerted_numbers_list($R_alert_key)]} {
                set R_numbers_display [join [lsort $R_used_numbers] ", "]

                set msg [MOM_display_message \
                    "Rez15916841614提醒您:\n\n刀具【$R_current_tool_name】在不同工序使用了不同刀号\n\n当前刀号: $R_current_tool_num\n已用刀号: $R_numbers_display\n\n是否继续后处理?" \
                    "警告!" I "继续处理" "中止处理"]

                switch $msg {
                    1 {
                        lappend R_tool_numbers_by_name($R_current_tool_name) $R_current_tool_num
                        set R_alerted_numbers_list($R_alert_key) 1
                    }
                    2 { MOM_abort "用户中止:检测到刀具名称使用多刀号" }
                }
            }
        }
    } elseif {!$R_found_same_number} {
        set R_tool_numbers_by_name($R_current_tool_name) [list $R_current_tool_num]
    }

    incr tool_seq

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

咨询QQ:1359218528|发帖须知!|Archiver|手机版|小黑屋|UG爱好者论坛 ( 京ICP备10217105号-2 )

GMT+8, 2025-11-20 15:54

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表