Files
OnebotCatalog/sample-data/tools/NX母模建模操作说明书.md

7.5 KiB
Raw Permalink Blame History

NX 2506 参数化母模建模操作说明书

目的:为欧霓博目录软件建立"一个母模覆盖全系列所有型号组合"的参数化零件, 配套 nx-batch-export.vb 批量导出 STEP。 读者NX 建模工程师。建模前先通读一遍,严格按命名规范执行。


0. 核心概念(先想清楚再动手)

CSV 参数表 (数值源头)  ←── 列名必须与母模表达式名一致 ──→  NX 母模 (公式/特征)
        ↓                                                          ↓
   nx-batch-export.vb (翻译官) ── 改表达式 → 更新模型 ──→ 导出 STEP
  • 表达式名 = CSV 列名(一字不差,区分大小写):borestrokemagnetmount
  • 开关类表达式另起名字并在 journal CONFIG 区映射:magOnmountIdx
  • 所有"会变"的尺寸必须表达式化;所有"有无"的特征必须按表达式抑制
  • 建模完成后验收标准:手动改 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建缸体主体

  1. 新建零件 → 存为 KC_master.prt
  2. 草图:缸筒截面(全约束!)——外径引用 bodyR = bore/2 + 壁厚 等派生表达式,不要写死数
  3. 拉伸长度引用 bodyLen 表达式

步骤 2端盖与活塞杆

  • 前盖/后盖草图定位引用基准坐标系或已有表达式(严禁引用会被抑制的特征面)
  • 活塞杆:圆柱特征,直径/长度引用表达式,定位在轴心
  • 双轴型号02/03:把第二根活塞杆+对应孔做成特征组,按表达式抑制:
    右键特征 → 特征组 → 命名为 group_twin
    右键 group_twin → 抑制 → 按表达式抑制
    → 表达式列表里新建 twinOn = 1抑制表达式写 if(twinOn==1)(1)else(0)
    

步骤 3磁石槽有/无 切换)

  1. 在缸筒上画磁石槽:草图 → 拉伸求差(布尔 Subtract
  2. 槽位置引用 magPos(中心),长度引用 guideLen
  3. 磁石槽+导轨特征全选 → 特征组 group_magnet
  4. 按表达式抑制:if(magOn==1)(1)else(0)
  5. 开关导轨(如有独立件外形)同样入组

⚠️ 若倒角/圆角引用磁石槽的边,把倒角也放进 group_magnet否则抑制后更新报错。

步骤 4安装形式特征组7 种切换)

  1. 以"基本型"端盖为底
  2. 每种形式单独建模FA 法兰、FB 后法兰、CA 单耳、CB 双耳、LB 脚架孔、YB 支座孔),每组做完立即:
    • 全选该组特征 → 特征组 group_mount_FA 等 6 个组
    • 按表达式抑制,条件式:if(mountIdx==1)(1)else(0)FA 对应 1依此类推
  3. 建模次序建议:先建完基本型全部结构,再逐个叠加形式特征,最后统一分组抑制

特征跨实体布尔(求和/求差)时,目标体选基本体,别选会被抑制的特征体。

步骤 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+UCtrl+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