Rez 发表于 2025-11-20 11:51:03

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

今天看到了别人以前的一个重复刀号报警的帖子,我以前也引用了那段代码,但那段代码有点瑕疵,就是同一把刀如果有多条刀路,每次都会弹窗,如果这个用来做拦截,终止后处理输出是没什么问题都,我觉得代码都原作者应该也是这个想法,只是用于终止后处理输出的,但后面都延伸功能,想继续输出后处理,这代码就需要做些更改了。我自己后来做了些修改,同一把刀多条刀路只提醒一次,如果有第三把刀冲突才会再次提醒,另外增加了同一名字不同刀号的弹窗(有些人在操作上改刀号会出现这种,而且不好发现),图片是我看到都帖子,下面是我改过都代码,分享给大家。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 {!} {
    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

set R_current_tool_num "T"
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 {! && !} {
            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 { == -1} {
                        lappend R_used_names $tool_name_array($R_j)
                  }
                }
            }
            set R_names_display

            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 && } {
    set R_used_numbers $R_tool_numbers_by_name($R_current_tool_name)

    if { == -1} {
      set R_alert_key "${R_current_tool_name}_${R_current_tool_num}"

      if {!} {
            set R_numbers_display ", "]

            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)
}

incr tool_seq

荣班长 发表于 2025-12-6 23:09:55

:D感谢分享

黄如宇1983 发表于 6 天前

什么软件可以取相同的刀具名?

Rez 发表于 5 天前

本帖最后由 Rez 于 2025-12-10 09:42 编辑

黄如宇1983 发表于 2025-12-9 21:42
什么软件可以取相同的刀具名?
你使用的场景不同,你理解不了也正常,刀具是同一把刀具,但刀具号会不一样。用继承没有这样的问题,但有些人或者外挂会在操作上改刀号,不打开那条刀路你都看不出来同一把刀有不一样的刀号。遇到这个场景就知道这段代码的重要性了。

Rez 发表于 3 天前

管理员,帮我删除这个帖子
页: [1]
查看完整版本: 重复刀号报警代码修改版,同一把刀多次调用仅报警一次,另增加同刀名不同的号报警