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