PC后处理无法像PB那样获取毛坯大小
上图是用PB后处理输出的程序头
下面是实现代码
#============================================================# 声明变量#============================================================global mom_blank_block_lengthglobal mom_blank_block_widthglobal mom_blank_block_heightglobal mom_blank_block_centerglobal mom_msys_originglobal mom_msys_matrix#============================================================# 1.计算MCS原点相对毛坯中心在ACS中的向量#============================================================for {set i 0} {$i < 3} {incr i} { set blank_mcs($i) }#============================================================# 2.矩阵×向量:将ACS向量投影到MCS#============================================================proc MTX3_vec_multiply {u m w} { upvar $u ul; upvar $m ml; upvar $w wl set wl(0) set wl(1) set wl(2) }MTX3_vec_multiply blank_mcs mom_msys_matrix blank_mcs_center#============================================================# 3.毛坯半尺寸#============================================================set blank_xx set blank_yy set blank_zz set blank_x_left set blank_y_front set fol_height # Z修正:把参考点从毛坯中心移到毛坯顶面set blank_mcs_center(2) #============================================================# 4.输出工件尺寸#============================================================MOM_output_literal "(工件尺寸: X*Y*Z)"#============================================================# 5.X位置判断#============================================================if {} { MOM_output_literal "(工件X设定: 分中 )"} elseif {} { MOM_output_literal "(工件X设定: 左端为0 )"} elseif {} { MOM_output_literal "(工件X设定: 右端为0 )"} else { MOM_output_literal "(工件X设定: 分中偏移 )"}#============================================================# 6.Y位置判断#============================================================if {} { MOM_output_literal "(工件Y设定: 分中 )"} elseif {} { MOM_output_literal "(工件Y设定: 下端为0 )"} elseif {} { MOM_output_literal "(工件Y设定: 上端为0 )"} else { MOM_output_literal "(工件Y设定: 分中偏移 )"}#============================================================# 7.Z位置判断#============================================================if {} { MOM_output_literal "(工件Z设定: 顶部为0 )"} elseif {} { MOM_output_literal "(工件Z设定: 底部为0 )"} else { MOM_output_literal "(工件Z设定: 顶部偏移 )"}
我想移植到PC后处理上 死活搞不定 有大神会吗 PC获取不到毛坯大小
白色治愈之风 发表于 2026-9-1 11:24
foreach key {
LIB_GE_message "lib_pretreatment key: $key = $: ...
感谢膜拜大佬已搞定:handshake
白色治愈之风 发表于 2026-9-1 11:02
好像只能读取这里的数值。
铣的毛坯搞定了 昨天晚上回去研究一晚上车削的毛坯获取 查官方文档 应该是实现不了:dizzy: (LIB_PRETREATMENT KEY: 202466,MOM_BLANK_BLOCK_WIDTH = 100.0)
(LIB_PRETREATMENT KEY: 202466,MOM_BLANK_BLOCK_LENGTH = 100.0)
(LIB_PRETREATMENT KEY: 202466,MOM_BLANK_BLOCK_HEIGHT = 50.0)
(LIB_PRETREATMENT KEY: 202466,MOM_BLANK_BLOCK_CENTER,0 = 50.0)
(LIB_PRETREATMENT KEY: 202466,MOM_BLANK_BLOCK_CENTER,1 = 49.999999999999986)
(LIB_PRETREATMENT KEY: 202466,MOM_BLANK_BLOCK_CENTER,2 = 25.0) 好像只能读取这里的数值。
本帖最后由 0小刚/tp 于 2026-9-1 11:15 编辑
白色治愈之风 发表于 2026-9-1 11:02
好像只能读取这里的数值。
:dizzy:先膜拜一下大神 看大神搞出来了我还在研究
毛坯变量是怎么注册的?(LIB_SPF_pretreatment_add_var 放在哪个事件?)
是怎么获取的?(LIB_SPF_get_pretreatment 的具体用法?)
那个遍历所有预处理变量的调试代码是怎么写的?
膜拜大神 不懂,帮顶一下!! 0小刚/tp 发表于 2026-9-1 11:12
先膜拜一下大神 看大神搞出来了我还在研究
foreach key {
LIB_GE_message "lib_pretreatment key: $key = $::lib_pretreatment($key)"
}这个是遍历,但是如果你的程序里面没有包含所有预处理变量,那么不会输出。
我现在上不去官网了。有些参数记不清,你需要自己去查,这个毛坯的变量没有用到增加变量的指令。 1、对应于PB是不是自己画的毛坯也能获得外形尺寸。2、如果是半精铣,毛坯是上一道工序制作的小平面体,PB也可以得到外形尺寸吗? PB是不是读取的这里面的值
白色治愈之风 发表于 2026-9-1 11:26
1、对应于PB是不是自己画的毛坯也能获得外形尺寸。2、如果是半精铣,毛坯是上一道工序制作的小平面体,PB也 ...
---
**问题1:自己画的毛坯(几何体类型)能不能获得外形尺寸?**
不能。经过测试,`mom_blank_block_*` 和 `mom_blank_cylinder_*` 变量**只针对包容块和包容圆柱体两种类型**。
- 几何体(自己画的实体)→ 无毛坯尺寸变量
- 几何体小平面体 → 无毛坯尺寸变量
- 部件偏置 → 无毛坯尺寸变量
- 部件轮廓 → 无毛坯尺寸变量
- 部件凸包 → 无毛坯尺寸变量
这些类型只有 `limit,x/y/z,min/max` 刀轨范围变量,但那是**刀轨的加工范围**,不是毛坯的外形尺寸,两者不等价。
---
**问题2:半精铣,毛坯是上一道工序的IPW(小平面体),能不能得到外形尺寸?**
不能。IPW属于几何体/小平面体类型,没有对应的毛坯包围盒变量。
`mom_blank_block_*` 读取的是 **Workpiece中最初定义的毛坯**,不会随工序间IPW的变化而更新。所以半精铣时即使实际毛坯是上道工序加工后的IPW,后处理读到的仍然是初始毛坯的尺寸(如果初始毛坯是包容块的话)。
---
**补充:目前能自动获取外形尺寸的只有两种毛坯类型:**
1. **包容块** → `mom_blank_block_length/width/height` + `mom_blank_block_center`
2. **包容圆柱体** → `mom_blank_cylinder_diameter/height` + `mom_blank_cylinder_center`
其他类型均无毛坯外形尺寸变量。
---