7.5 KiB
7.5 KiB
NX 2506 参数化母模建模操作说明书
目的:为欧霓博目录软件建立"一个母模覆盖全系列所有型号组合"的参数化零件, 配套
nx-batch-export.vb批量导出 STEP。 读者:NX 建模工程师。建模前先通读一遍,严格按命名规范执行。
0. 核心概念(先想清楚再动手)
CSV 参数表 (数值源头) ←── 列名必须与母模表达式名一致 ──→ NX 母模 (公式/特征)
↓ ↓
nx-batch-export.vb (翻译官) ── 改表达式 → 更新模型 ──→ 导出 STEP
- 表达式名 = CSV 列名(一字不差,区分大小写):
bore、stroke、magnet、mount - 开关类表达式另起名字并在 journal CONFIG 区映射:
magOn、mountIdx - 所有"会变"的尺寸必须表达式化;所有"有无"的特征必须按表达式抑制
- 建模完成后验收标准:手动改 3 组不同参数组合,模型能正确重建且无错误
1. 建模前规划
1.1 确定本系列的几何键(决定哪些组合要分别导出)
几何键 = 影响外形的一切参数组合。以 KC 系列为例:
| 参数 | 是否影响外形 | 母模处理 |
|---|---|---|
| type 型号段 (00/02/03 单杆/双轴/双轴可调) | ✅ | 双轴 = 第二根活塞杆特征组按表达式抑制 |
| bore 缸径 | ✅ | 尺寸表达式 |
| stroke 行程 | ✅ | 尺寸表达式 |
| magnet 磁石 | ✅(磁石槽+开关导轨) | 特征组按表达式抑制 (magOn=0/1) |
| mount 固定形式 | ✅(端盖耳座/支座/法兰特征) | 特征组按表达式抑制 (mountIdx=0~6) |
1.2 表达式命名清单(先建全,再开始画)
在母模里先建立全部表达式(工具→表达式 Ctrl+E),带注释:
| 名称 | 类型/初值 | 公式 | 注释 |
|---|---|---|---|
| bore | Number / 32 | 32 | 缸径 mm(基准值,journal 会覆盖) |
| stroke | Number / 50 | 50 | 行程 mm |
| rodLen | Number | stroke + 60 | 活塞杆长(联动示例,按实际结构改) |
| bodyLen | Number | stroke + 缸体常数 | 缸筒长(联动) |
| magOn | Number / 1 | 1 | 磁石开关:1=有磁石 0=无 |
| magPos | Number | stroke + 40 | 磁石中心位置(联动;若独立规格则写常数+journal 映射) |
| guideLen | Number | stroke + 30 | 开关导轨长(联动) |
| mountIdx | Number / 0 | 0 | 安装形式:0=基本 1=FA 2=FB 3=CA 4=CB 5=LB 6=YB |
| typeTwin | Number / 0 | 0 | 双轴开关:1=双轴(第二根杆特征组抑制式引用它) |
命名建议:全小写、驼峰(bore/stroke/magOn),与 CSV 列名一致;开关类加 On/Idx 后缀。
2. 建模步骤(KC 母模示例)
步骤 1:建缸体主体
- 新建零件 → 存为
KC_master.prt - 草图:缸筒截面(全约束!)——外径引用
bodyR = bore/2 + 壁厚等派生表达式,不要写死数 - 拉伸长度引用
bodyLen表达式
步骤 2:端盖与活塞杆
- 前盖/后盖草图定位引用基准坐标系或已有表达式(严禁引用会被抑制的特征面)
- 活塞杆:圆柱特征,直径/长度引用表达式,定位在轴心
- 双轴型号(02/03):把第二根活塞杆+对应孔做成特征组,按表达式抑制:
右键特征 → 特征组 → 命名为 group_twin 右键 group_twin → 抑制 → 按表达式抑制 → 表达式列表里新建 twinOn = 1,抑制表达式写 if(twinOn==1)(1)else(0)
步骤 3:磁石槽(有/无 切换)
- 在缸筒上画磁石槽:草图 → 拉伸求差(布尔 Subtract)
- 槽位置引用
magPos(中心),长度引用guideLen - 磁石槽+导轨特征全选 → 特征组
group_magnet - 按表达式抑制:
if(magOn==1)(1)else(0) - 开关导轨(如有独立件外形)同样入组
⚠️ 若倒角/圆角引用磁石槽的边,把倒角也放进 group_magnet,否则抑制后更新报错。
步骤 4:安装形式特征组(7 种切换)
- 以"基本型"端盖为底
- 每种形式单独建模(FA 法兰、FB 后法兰、CA 单耳、CB 双耳、LB 脚架孔、YB 支座孔),每组做完立即:
- 全选该组特征 → 特征组
group_mount_FA等 6 个组 - 按表达式抑制,条件式:
if(mountIdx==1)(1)else(0)(FA 对应 1,依此类推)
- 全选该组特征 → 特征组
- 建模次序建议:先建完基本型全部结构,再逐个叠加形式特征,最后统一分组抑制
特征跨实体布尔(求和/求差)时,目标体选基本体,别选会被抑制的特征体。
步骤 5:验证(必须做!)
| 验证项 | 操作 | 通过标准 |
|---|---|---|
| 尺寸联动 | 改 bore=125 → Ctrl+F7 更新 | 无报错,模型整体放大 |
| 行程联动 | 改 stroke=1000 | 缸筒/活塞杆/导轨跟着变 |
| 磁石切换 | magOn=0/1 | 槽消失/出现,无悬空特征 |
| 形式切换 | mountIdx=0~6 逐个试 | 每值对应正确外形 |
| 双轴切换 | typeTwin=0/1 | 第二杆出现/消失 |
| 极限组合 | bore=320 + stroke=1000 + magOn=1 + mountIdx=6 | 极端组合不破面 |
验收后再交给 journal 跑批量。
3. Journal 配置(nx-batch-export.vb)
文件头有完整注释。建模工程师只需改 CONFIG 区:
' ============================ CONFIG 区 ============================
Dim csvPath As String = "D:\catalog\params.csv" ' ← 改成 catalog\csv\KC.csv
Dim outDir As String = "D:\catalog\step_out\" ' ← 改成 catalog\step\
' 1) 尺寸映射: NX 表达式名 → CSV 列名
exprMap.Add("bore", "bore")
exprMap.Add("stroke", "stroke")
' 有独立表达式就加: exprMap.Add("magPos", "magpos") ← CSV 里也要有这一列
' 2) 枚举开关映射: {CSV列名, 列值, NX表达式名, 表达式值}
switchRules.Add({"magnet", "", "magOn", "0"}) ' 无磁石
switchRules.Add({"magnet", "M", "magOn", "1"}) ' 有磁石
switchRules.Add({"mount", "", "mountIdx", "0"}) ' 基本型
switchRules.Add({"mount", "FA", "mountIdx", "1"}) ' 前盖固定
...(按你们母模实际的表达式名和取值改)
' ================================================================
运行:NX 里 工具 → 日记 → 播放 → 选 nx-batch-export.vb(不是 Ctrl+U,Ctrl+U 只认 .dll)。
4. 全流程走查(建模 → 目录上线)
1. NX 母模验收 (步骤 5 的验证表)
2. journal CONFIG 改好 → 播放 → 挂机批量导出 (已去重, 同文件只导一次)
3. STEP 落盘 catalog\step\ → 双击 OnebotCatalog\bin\维护入口.bat
→ 目录制作器 → 【重建全量目录】
4. 自测 (发布门禁自动跑 25 项, 缺文件会拦)
5. 停预览服务器 → publish.ps1 → 三份产物
6. 网页 localhost:8080 验证 3D + 下载
5. 常见问题排查
| 现象 | 原因 | 处理 |
|---|---|---|
| 导出后模型没变化 | journal 里表达式名与母模对不上 | 对照 Ctrl+E 列表逐名核对 |
| 更新报"更新失败/内部错误" | 被抑制特征被其它特征引用(边/面) | 把引用它的特征也入同一个抑制组 |
| 改 mountIdx 后外形不对 | 抑制条件式写错(== 写成 =) | 条件式格式: if(mountIdx==1)(1)else(0) |
| 抑制后草图悬空 | 草图定位引用了会被抑制的边 | 定位改引用基准轴/面 |
| journal 报"参数表缺少列" | CSV 表头与 exprMap/switchRules 不一致 | 表头名与 CONFIG 统一 |
| 导出的 STEP 在网页渲染异常 | 用了特殊特征(钣金/焊接件) | 导出前抽空合并实体,尽量常规特征 |
| 中文乱码 | 编辑 .vb 后没跑 fix-bom.ps1 | 每次改完 journal 跑一次 fix-bom |