|
|
发表于 2026-6-24 15:53:19
|
显示全部楼层
#=============================================================
proc PB_CMD_custom_command_1 { } {
#=============================================================
# 声明全局变量,包括各种报警状态标记
global mom_operation_name_list mom_mcsname_attach_opr
global mcs_alert_shown tool_speed_alert_shown
global mom_tool_diameter mom_spindle_speed
global mom_operation_name
# 初始化报警状态标记(仅在第一次运行时)
if {![info exists mcs_alert_shown]} {
set mcs_alert_shown 0
}
if {![info exists tool_speed_alert_shown]} {
set tool_speed_alert_shown 0
}
# 1. 多MCS检测
if {!$mcs_alert_shown} {
# 初始化存储MCS名称的列表
set unique_mcs_list [list]
# 遍历当前后处理中的所有操作
foreach op $mom_operation_name_list {
# 获取每个操作所附着的MCS名称
set current_mcs $mom_mcsname_attach_opr($op)
# 如果这个MCS名称不在唯一列表中,则加入列表
if { [lsearch $unique_mcs_list $current_mcs] == -1 } {
lappend unique_mcs_list $current_mcs
}
}
# 检查唯一MCS列表中的数量
if { [llength $unique_mcs_list] > 1 } {
# 组装报警信息
set warning_msg "警告:程序组中包含多个不同的加工坐标系(MCS)!\n"
append warning_msg "检测到的坐标系有:\n"
foreach mcs $unique_mcs_list {
append warning_msg "$mcs\n"
}
append warning_msg "请仔细检查刀路程序!"
# 弹出对话框提示用户
set user_choice [MOM_display_message " $warning_msg " "坐标系警告" "W" "继续处理" "终止后处理"]
# 标记为已报警,避免重复
set mcs_alert_shown 1
if { $user_choice != 1 } {
# 用户选择中止
MOM_abort "用户因多坐标系问题中止后处理"
}
}
}
# 2. 刀具直径和转速检测
if {!$tool_speed_alert_shown} {
# 检查当前操作的刀具直径和转速是否超标
if { $mom_tool_diameter > 30 && $mom_spindle_speed > 6000 } {
# 组装刀具转速报警信息
set tool_msg "警告:刀具直径和转速不匹配!\n"
append tool_msg "当前操作: $mom_operation_name\n"
append tool_msg "刀具直径: [format "%.2f" $mom_tool_diameter]mm (超过30mm)\n"
append tool_msg "主轴转速: $mom_spindle_speed rpm (超过6000rpm)\n"
append tool_msg "请检查刀具参数和转速设置!"
# 弹出对话框提示用户
set speed_choice [MOM_display_message " $tool_msg " "刀具转速警告" "W" "继续处理" "终止后处理"]
# 标记为已报警,避免重复
set tool_speed_alert_shown 1
if { $speed_choice != 1 } {
# 用户选择中止
MOM_abort "用户因刀具转速问题中止后处理"
}
}
}
}
|
|