0小刚/tp 发表于 2026-9-1 10:29:12

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获取不到毛坯大小

0小刚/tp 发表于 2026-9-1 12:37:33

白色治愈之风 发表于 2026-9-1 11:24
foreach key {
    LIB_GE_message "lib_pretreatment key: $key = $: ...


感谢膜拜大佬已搞定:handshake

0小刚/tp 发表于 2026-9-2 10:32:09

白色治愈之风 发表于 2026-9-1 11:02
好像只能读取这里的数值。

铣的毛坯搞定了    昨天晚上回去研究一晚上车削的毛坯获取    查官方文档   应该是实现不了:dizzy:

白色治愈之风 发表于 2026-9-1 10:36:18

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

白色治愈之风 发表于 2026-9-1 11:02:14

好像只能读取这里的数值。

0小刚/tp 发表于 2026-9-1 11:12:41

本帖最后由 0小刚/tp 于 2026-9-1 11:15 编辑

白色治愈之风 发表于 2026-9-1 11:02
好像只能读取这里的数值。
:dizzy:先膜拜一下大神   看大神搞出来了我还在研究   


毛坯变量是怎么注册的?(LIB_SPF_pretreatment_add_var 放在哪个事件?)
是怎么获取的?(LIB_SPF_get_pretreatment 的具体用法?)
那个遍历所有预处理变量的调试代码是怎么写的?

北心弦 发表于 2026-9-1 11:14:30

膜拜大神

ug小白菜0.0 发表于 2026-9-1 11:18:13

不懂,帮顶一下!!

白色治愈之风 发表于 2026-9-1 11:24:39

0小刚/tp 发表于 2026-9-1 11:12
先膜拜一下大神   看大神搞出来了我还在研究   




foreach key {
    LIB_GE_message "lib_pretreatment key: $key = $::lib_pretreatment($key)"
}这个是遍历,但是如果你的程序里面没有包含所有预处理变量,那么不会输出。
我现在上不去官网了。有些参数记不清,你需要自己去查,这个毛坯的变量没有用到增加变量的指令。

白色治愈之风 发表于 2026-9-1 11:26:36

1、对应于PB是不是自己画的毛坯也能获得外形尺寸。2、如果是半精铣,毛坯是上一道工序制作的小平面体,PB也可以得到外形尺寸吗?

白色治愈之风 发表于 2026-9-1 11:30:59

PB是不是读取的这里面的值

0小刚/tp 发表于 2026-9-1 12:26:02

白色治愈之风 发表于 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`

其他类型均无毛坯外形尺寸变量。

---

页: [1] 2 3
查看完整版本: PC后处理无法像PB那样获取毛坯大小