找回密码
 立即注册

QQ登录

只需一步,快速开始

微信扫码登录

搜索
楼主: F1634465

[分享] UG后处理刀具列表

[复制链接]

3

主题

255

回帖

9104

积分

少校

积分
9104
发表于 2026-4-22 08:10:46 | 显示全部楼层
F1634465 发表于 2026-4-21 11:11
看你的后处理就知道你连UG刀具库都不会用,就别说做后处理了。

上面那一段我都改的了  你觉得区区刀库 我改不了吗

28

主题

667

回帖

1万

积分

中校

积分
12271
发表于 2026-4-22 09:45:58 | 显示全部楼层
资源就是多

3

主题

130

回帖

4174

积分

中尉

积分
4174
 楼主| 发表于 2026-4-22 11:25:21 | 显示全部楼层
UG963569 发表于 2026-4-22 08:10
上面那一段我都改的了  你觉得区区刀库 我改不了吗

别人想分享什么时别人的事,你要是觉得你牛逼你也可以发出来,不分享就别BB。

3

主题

64

回帖

453

积分

二级士官

积分
453
发表于 2026-4-22 17:48:57 | 显示全部楼层
不会用啊,能不能搞个傻瓜版的

3

主题

349

回帖

925

积分

五级士官

积分
925
发表于 2026-4-23 02:39:56 | 显示全部楼层
感谢分享

16

主题

474

回帖

1163

积分

六级士官

积分
1163
发表于 2026-4-24 21:16:11 | 显示全部楼层
感觉像豆包干的活

38

主题

155

回帖

3382

积分

中尉

积分
3382
发表于 2026-4-25 10:34:44 | 显示全部楼层
您好大佬,用了你的刀单代码,为什么我的钻头角度输出前几把刀正常输出,后面角度输出就是0了?大佬解惑 122.PNG

38

主题

155

回帖

3382

积分

中尉

积分
3382
发表于 2026-4-25 10:35:40 | 显示全部楼层
jindewei 发表于 2026-4-25 10:34
您好大佬,用了你的刀单代码,为什么我的钻头角度输出前几把刀正常输出,后面角度输出就是0了?大佬解惑 ...

#PB_CMD_TOOL_INFO

set outputthd 1
global toollist mom_tool_cutcom_register mom_cutcom_adjust_register mom_tool_name mom_tool_diameter mom_tool_corner1_radius mom_tool_adjust_register mom_tool_adj_reg_defined mom_tool_number mom_tool_type
global mom_tool_taper_angle mom_tool_point_angle mom_tool_lower_corner_radius
global mom_sys_max_travel mom_sys_min_travel mom_machine_time
global ptp_file_name ino mom_group_name mom_output_file_suffix mom_output_file_basename

set tdi [format "%.2f" $mom_tool_diameter]

#---------------------
# 安全读取角度变量(弧度转角度)
#---------------------
if {[info exists mom_tool_taper_angle]} {
    set angle_val [expr (180 / 3.14159) * $mom_tool_taper_angle]
} elseif {[info exists mom_tool_point_angle]} {
    set angle_val [expr (180 / 3.14159) * $mom_tool_point_angle]
} else {
    set angle_val 0
}

#---------------------
# 安全读取圆角变量(自动去尾零)
#---------------------
if {[info exists mom_tool_corner1_radius]} {
    set r_val [string trimright [format "%.2f" $mom_tool_corner1_radius] "0"]
} else {
    set r_val 0
}
if {[info exists mom_tool_lower_corner_radius]} {
    set cr_val [string trimright [format "%.2f" $mom_tool_lower_corner_radius] "0"]
} else {
    set cr_val 0
}

#---------------------
# 刀具号 / 补偿处理
#---------------------
if [info exists mom_tool_number] {
    set tt $mom_tool_number
} else {
    set tt 0
}
if [info exists mom_tool_adj_reg_defined] {
    set th $mom_tool_adjust_register
} else {
    set th 0
}
if [info exists mom_tool_adj_reg_defined] {
    set td $mom_tool_cutcom_register
} else {
    set td 0
}

set tt [format "%02.0f" $tt]
set th [format "%02.0f" $th]
set td [format "%01.0f" $td]
set hhh $th

#---------------------
# 按刀具类型自动判断:R / A(你的核心逻辑)
#---------------------
if {$mom_tool_type == "Milling Tool-T Cutter"} {
    set r $cr_val
    set rr2 "R$r"
} elseif {[string first "Drill" $mom_tool_type] != -1} {
    set angle $angle_val
    set rr2 "A[format "%.0f" $angle]"
} elseif {[string first "Chamfer" $mom_tool_type] != -1} {
    set angle [expr $angle_val * 2]
    set rr2 "A[format "%.0f" $angle]"
} else {
    set r $r_val
    set rr2 "R$r"
}


#---------------------
# 输出刀具清单文件(干净规整)
#---------------------
set tool_lists_file_name ${ptp_file_name}_toollists
if {![info exists ino]} {
    set ino 1
    if {[file exists $tool_lists_file_name]} {
        MOM_remove_file $tool_lists_file_name
    }
}

set tfile [open $tool_lists_file_name a]
if {$ino > 1} {
    puts $tfile "(    ZMAX=[format "%.2f" $mom_sys_max_travel(2)] ZMIN=[format "%.2f" $mom_sys_min_travel(2)])"
}

set mom_sys_max_travel(2) -9999.999
set mom_sys_min_travel(2)  9999.999

if {$outputthd == 1} {
    puts $tfile "(T$tt D$tdi $rr2 H$th D$td >$mom_tool_name)"
}

incr ino
close $tfile

3

主题

130

回帖

4174

积分

中尉

积分
4174
 楼主| 发表于 2026-4-25 19:00:31 | 显示全部楼层
jindewei 发表于 2026-4-25 10:35
#PB_CMD_TOOL_INFO

set outputthd 1

嗯 是有问题,我研究研究。

38

主题

155

回帖

3382

积分

中尉

积分
3382
发表于 2026-4-26 14:17:43 | 显示全部楼层
F1634465 发表于 2026-4-25 19:00
嗯 是有问题,我研究研究。

兄弟,我问了AI,给我改过来了,不过AI有的地方也搞不懂,我给你发个TCL语句,我想在每个换刀前的刀具信息那里,开了刀具补偿的工序输出D值,不开刀具补偿的工序就不输出D值,现在它是不管你有没有开刀具补偿都给你输出D值,您看看能不能帮忙改下,万分感谢
#---------------------
# 全局变量声明
#---------------------
global mom_tool_name
global mom_tool_diameter
global mom_tool_corner1_radius
global mom_tool_lower_corner_radius
global mom_tool_type
global mom_tool_number
global mom_tool_taper_angle
global mom_tool_point_angle
global mom_tool_adjust_register
global mom_tool_cutcom_register
global mom_tool_diameter_defined
global mom_tool_diameter_nominal

#---------------------
# 补偿号赋值
#-----------------------
set H_code $mom_tool_adjust_register

# 安全获取D_code
if {[info exists mom_tool_cutcom_register] && $mom_tool_cutcom_register != ""} {
    set D_code $mom_tool_cutcom_register
} else {
    set D_code ""
}

#---------------------
# 安全获取刀具直径
#-----------------------
# 尝试多种方式获取刀具直径
if {[info exists mom_tool_diameter] && $mom_tool_diameter != ""} {
    set tool_dia $mom_tool_diameter
} elseif {[info exists mom_tool_diameter_nominal] && $mom_tool_diameter_nominal != ""} {
    set tool_dia $mom_tool_diameter_nominal
} elseif {[info exists mom_tool_diameter_defined] && $mom_tool_diameter_defined != ""} {
    set tool_dia $mom_tool_diameter_defined
} else {
    # 如果没有直径参数,设置为0
    set tool_dia 0
}

# 改进的格式化函数
proc format_diameter {dia} {
    if {$dia == 0} {
        return "0"
    }

    # 尝试保留1位小数
    set formatted [format "%.1f" $dia]

    # 检查是否为整数
    if {[expr {abs($dia - int($dia))}] < 0.0001} {
        # 是整数,直接输出整数部分
        return [format "%.0f" $dia]
    } elseif {[expr {abs($dia * 10 - int($dia * 10))}] < 0.0001} {
        # 是一位小数,去除尾部的0
        return [string trimright [format "%.1f" $dia] 0]
    } else {
        # 多位小数,保留2位
        return [string trimright [format "%.2f" $dia] 0]
    }
}

# 格式化刀具直径
if {$tool_dia != 0} {
    set formatted_dia [format_diameter $tool_dia]
    # 确保不会出现空字符串
    if {$formatted_dia == ""} {set formatted_dia 0}
} else {
    set formatted_dia 0
}

#---------------------
# 判断是否输出D值
#-----------------------
set output_D_string ""

# 检查D_code是否存在且有效
if {$D_code != ""} {
    # 尝试转换为整数
    if {![catch {set d_num [expr {int($D_code)}]}]} {
        if {$d_num > 0} {
            set output_D_string "D=[format "%02d" $d_num]"
        }
    }
}

#---------------------
# 按刀具类型输出注释
#---------------------
if {$mom_tool_type eq "Milling Tool-T Cutter"} {
    # T型铣刀 - 使用下角半径
    if {[info exists mom_tool_lower_corner_radius] && $mom_tool_lower_corner_radius != ""} {
        set cr_val [string trimright [format "%.2f" $mom_tool_lower_corner_radius] 0]
        set cr_val [string trimright $cr_val .]
        if {$cr_val == ""} {set cr_val 0}
    } else {
        set cr_val 0
    }

    if {$output_D_string != ""} {
        MOM_output_literal "(T[format "%01d" $mom_tool_number]mom_tool_name D$formatted_dia R$cr_val H=[format "%02d" $H_code] $output_D_string)"
    } else {
        MOM_output_literal "(T[format "%01d" $mom_tool_number]mom_tool_name D$formatted_dia R$cr_val H=[format "%02d" $H_code])"
    }
    set rr2 "R=$cr_val"

} elseif {[string first "Drill" $mom_tool_type] != -1 || [string first "drill" $mom_tool_type] != -1} {
    # 钻头
    set current_angle 0
    if {[info exists mom_tool_taper_angle] && $mom_tool_taper_angle != ""} {
        set current_angle [expr {180.0 / 3.1415926535 * $mom_tool_taper_angle}]
    }
    if {$current_angle == 0 && [info exists mom_tool_point_angle] && $mom_tool_point_angle != ""} {
        set current_angle [expr {180.0 / 3.1415926535 * $mom_tool_point_angle}]
    }

    if {$output_D_string != ""} {
        MOM_output_literal "(T[format "%01d" $mom_tool_number]mom_tool_name D$formatted_dia A[format "%.0f" $current_angle] H=[format "%02d" $H_code] $output_D_string)"
    } else {
        MOM_output_literal "(T[format "%01d" $mom_tool_number]mom_tool_name D$formatted_dia A[format "%.0f" $current_angle] H=[format "%02d" $H_code])"
    }
    set rr2 "A=[format "%.0f" $current_angle]"

} elseif {[string first "Chamfer" $mom_tool_type] != -1 || [string first "chamfer" $mom_tool_type] != -1} {
    # 倒角刀
    set current_angle 0
    if {[info exists mom_tool_taper_angle] && $mom_tool_taper_angle != ""} {
        set current_angle [expr {180.0 / 3.1415926535 * $mom_tool_taper_angle}]
    }
    if {$current_angle == 0 && [info exists mom_tool_point_angle] && $mom_tool_point_angle != ""} {
        set current_angle [expr {180.0 / 3.1415926535 * $mom_tool_point_angle}]
    }
    set angle [expr {$current_angle * 2}]

    if {$output_D_string != ""} {
        MOM_output_literal "(T[format "%01d" $mom_tool_number]mom_tool_name D$formatted_dia A[format "%.0f" $angle] H=[format "%02d" $H_code] $output_D_string)"
    } else {
        MOM_output_literal "(T[format "%01d" $mom_tool_number]mom_tool_name D$formatted_dia A[format "%.0f" $angle] H=[format "%02d" $H_code])"
    }
    set rr2 "A=[format "%.0f" $angle]"

} else {
    # 其他刀具
    if {[info exists mom_tool_corner1_radius] && $mom_tool_corner1_radius != ""} {
        set r_val [string trimright [format "%.2f" $mom_tool_corner1_radius] 0]
        set r_val [string trimright $r_val .]
        if {$r_val == ""} {set r_val 0}
    } else {
        set r_val 0
    }

    if {$output_D_string != ""} {
        MOM_output_literal "(T[format "%01d" $mom_tool_number]mom_tool_name D$formatted_dia R$r_val H=[format "%02d" $H_code] $output_D_string)"
    } else {
        MOM_output_literal "(T[format "%01d" $mom_tool_number]mom_tool_name D$formatted_dia R$r_val H=[format "%02d" $H_code])"
    }
    set rr2 "R=$r_val"
}
111.PNG
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-7-5 00:37

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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