|
|
# 核心结论
**后处理Tcl拿不到MCS的Purpose(主要/局部)属性,也无法直接检测“有没有Main MCS、是不是Local直接放在顶层”**。
> 缺失Main MCS、ACS充当主机床MCS这件事,发生在**CL预处理阶段**,很多场景预处理不报错,直接进入后处理,属于**静默隐患**;MOM运行时没有开放这个状态给Tcl读取。
> 分4种手段,优先级从高到低:**CAM模板(最有效) > NXOpen脚本检查(编程前拦截) > 后处理仅能做有限预警 > 工艺规范**。
> ❗:**单靠修改后处理,不能彻底杜绝这个错误**。
## 方案1:CAM模板从根源锁死(企业最推荐,零成本)
新版本NX插入MCS默认用途=局部,**软件没有开关可以把新建MCS默认用途改成Main**,但是模板可以规避人为忘记改的问题。
1. 修改你的cam模板(`.prt`模板文件)
- 加工几何视图,**保留系统自带MCS_MILL,把它用途改成【主要(Main)】**,放到GEOMETRY根节点,**不要删除它**。
- 不要新建MCS当顶层主坐标系。
- 需要工件坐标系:**复制这个Main MCS,粘贴出来,复制出来自动变成Local局部**,拖拽到MCS_MAIN下面做子节点。
> 工作流:新建零件调用模板 → 顶层已经有一个Main MCS;所有工件MCS全部复制生成,天然是子局部MCS,不会有人把Local直接扔顶层。
> 禁止:编程人员自己点【插入MCS几何体】去做顶层坐标系,插入出来默认是Local,很容易犯错。
## 方案2:NXOpen(NX二次开发,编程前检查,最理想拦截)
用NXOpen C#/Journal脚本,打开零件,扫描几何视图:
1. 检查整个setup中是否存在**Purpose=Main的MCS**;
2. 检查是否有Purpose=Local的MCS直接挂在GEOMETRY根节点;
3. 如果违规直接弹窗警告,**后处理之前就拦住,不让出刀轨/不让后处理**。
> 缺点:需要二次开发环境,Post‑builder的Tcl做不到这件事,Tcl运行时已经是刀轨输出阶段,拿不到Purpose属性。
## 方案3:后处理Tcl能做什么(只能做**有限预警,不能拦截静默偏移**)
### ① 可以检测 `mom_cs_rotation_active ==1`
只要开启CSYS Rotation模式,如果是钻孔工序,弹窗提示,这个是有效的。
> 但是!**Local裸奔顶层、特殊输出=无 / Fixture Offset,五轴静默偏移,Tcl没有任何变量可以识别这个状态**,只能眼睁睁输出NC。
示例代码(放到`MOM_start_of_program`程序开头)
```tcl
proc MOM_start_of_program {} {
global mom_cs_rotation_active
if {$mom_cs_rotation_active == 1} {
MOM_display_message "⚠️警告:当前MCS开启CSYS Rotation局部旋转模式,钻孔工序禁止使用!确认顶层有Main MCS" 1
}
}
```
> 局限:
> - 只针对CSYS‑Rotation;
> - Local裸奔顶层,但特殊输出不是CSYS‑Rotation → 不会触发任何报警,五轴姿态偷偷偏移。
### ②后处理没有任何变量可以判断:
1. 是否存在有效的Main MCS;
2. 是否Local MCS直接在根节点;
3. 当前是否ACS充当主机床MCS。
> 这些是NX CAM内核对象属性,**不暴露给MOM后处理接口**。
## 方案4:NX自带MCS验证工具(编程侧自检)
菜单:`工具 → 加工验证 → MCS验证(MCS Verify)`
它会检查MCS层级、Purpose、CSYS‑Rotation冲突,会标红异常MCS。
> 缺点:需要编程人手动点,不能自动弹窗。
# 梳理你关心的两种风险
1. **显性报错:`unable to determine valid rotary positions`**
触发条件:MCS特殊输出=CSYS Rotation,顶层没有Main MCS。
> 这个是NX预处理直接终止,**Tcl脚本根本跑不到,后处理无能为力**。
2. **隐形风险:Local直接放顶层,特殊输出=无 / Fixture Offset**
> 预处理不报任何错,后处理完整输出G代码;三轴看着没问题,**五轴联动刀轴变换基准落到ACS,姿态偏移,重大安全隐患**。
> ✘后处理Tcl完全识别不出这个状态,无法告警。
# 现实工作落地最佳实践(精简)
1. **模板强制顶层预置Purpose=Main的MCS_MILL,禁止新建MCS当顶层**,工件坐标系全部复制Main得到Local子MCS。(第一防线,最重要)
2. 规定:**钻孔工序MCS特殊输出绝对不能选CSYS Rotation**。
3. 后处理增加`mom_cs_rotation_active`的弹窗预警,针对CSYS‑Rotation场景做提醒。
4. 五轴上机前,手动运行MCS验证工具快速扫一遍。
# 一句话总结
> 后处理**无法检测“忘记设置Main MCS,Local直接放顶层”这个隐形错误**。
> 显性CSYS‑Rotation报错是NX内核拦截;而最危险的是**不报错的静默偏移,后处理看不到,只能靠模板+编程规范去堵**。
|
|