主要功能: - 新增Shrinkwrap外壳导出API (/api/creo/shrinkwrap/shell) - 使用OTK SurfaceSubsetInstructions实现真正的外壳导出 - 智能重名处理,自动生成唯一文件名 - 完全使用用户参数配置,无硬编码限制 性能优化: - 移除耗时的装配体分析和差异计算 - 简化文件保存逻辑,统一保存到工作目录 - 精简API响应格式,专注核心导出功能 - 大幅提升导出速度和系统稳定性 技术突破: - 解决Windows API宏冲突问题 (GetCurrentDirectory) - 实现SurfaceSubset vs MergedSolid性能差异优化 - 建立稳定的跨线程OTK操作机制 - 支持装配体和零件的统一外壳导出 文件变更: + ShrinkwrapManager.h/cpp - 核心Shrinkwrap功能实现 + ShellExportHandler.h/cpp - HTTP API处理逻辑 * MFCCreoDll.cpp - 集成新的消息处理和路由 * CLAUDE.md - 更新项目文档 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
147 lines
8.7 KiB
Markdown
147 lines
8.7 KiB
Markdown
|
||
|
||
|
||
|
||
在 Creo 5 实现“只保留装配外壳、剔除内部”的完整方案(不含代码)。我把 GUI 操作、参数取值、产物管理、验证与批处理、以及二次开发(OTKJ-Link)落地步骤都拆开写清楚,尽量覆盖坑点与细节。
|
||
|
||
---
|
||
|
||
## 0. 目标与产物约定
|
||
- 目标:从一个复杂装配生成一个“仅含外表面”的轻量模型,用于快速打开与尺寸测量;内部零件全部被忽略移除。
|
||
- 产物(建议二选一)
|
||
1) 独立外壳零件(.prt):与原装配解耦,适合下游共享、测量与仿真前置。
|
||
2) 装配内的 Envelope 简化表示:与原装配保持关联,装配更新后外壳可随动。
|
||
|
||
---
|
||
|
||
## 1. 推荐主线:Shrinkwrap(Outer shell)生成独立外壳零件
|
||
|
||
### 1.1 GUI 操作步骤(Creo 5)
|
||
1) 打开顶层装配(建议在 Master Simp Rep 下)。
|
||
2) File → Save As → Save a Copy,Type 选择 Shrinkwrap。
|
||
3) 在 Shrinkwrap 对话框中设置:
|
||
- Collection method:选 Outer shell(关键!只采集装配外表面,内部自动忽略)。
|
||
- Quality level:建议 7–9(1–10,越高越细;外观准确性与文件大小时间平衡)。
|
||
- Fill holes Gap control:
|
||
- 若希望保留通孔、开窗等细节以便测量,关闭 Fill holes;
|
||
- 若要形成更“紧”的外壳,开启 Fill holes 并设合适 Max gap(例如 0.5–1.0 mm)。
|
||
- Ignore small faces Chord height:
|
||
- 开启 Ignore small faces,阈值建议取关键尺寸的 0.1–0.5%(避免小倒角小标志导致外壳噪声);
|
||
- Chord height(弦高)控制三角化误差:0.05–0.2 mm 视模型尺度而定。
|
||
- Output:优先选 SolidSurface geometry(而非纯 Facet),便于后续测量与布尔运算。
|
||
4) 命名:`AsmName_SW_OS_Q8_Gap1.prt` 一类的可读命名(含方法与关键参数)。
|
||
5) 生成后自动打开外壳零件,保存。
|
||
|
||
备注:Outer shell 的判断在内核里处理,不依赖视角;相比“自研判定外露面”更稳健。
|
||
|
||
### 1.2 外壳零件质量与可用性优化
|
||
- 文件瘦身:若外观面过密,可适度降低 Quality 或放宽 Chord height,再次导出比对外观差异。
|
||
- 边角锯齿:提高 Quality 或降低 Chord height;必要时对外壳零件做少量 SmoothHeal。
|
||
- 测量稳定性:确保输出为 实体或封闭曲面。若为 Quilt,可用 SolidifyThicken 封体。
|
||
|
||
### 1.3 测量建议
|
||
- 外形尺寸:直接在外壳零件中用 Measure(边面基准)测量;对大模型可用 Section 截面测量。
|
||
- 内腔近似尺寸(若已填孔形成封闭外壳):用 Mass Properties 读体积;或用 OffsetSection 制作参考几何后测量。
|
||
|
||
---
|
||
|
||
## 2. 关联更新方案:Envelope(简化表示)
|
||
|
||
### 2.1 适用场景
|
||
- 需要随装配设计变更而更新“外壳视图”,又不想每次手工导出 Shrinkwrap。
|
||
|
||
### 2.2 GUI 步骤(Creo 5)
|
||
1) 在顶层装配打开 View Manager → Simp Rep。
|
||
2) 新建一个 Envelope 类型的简化表示(或使用 Default Envelope)。
|
||
3) 在 Envelope 设置中选择基于 ShrinkwrapOuter shell 的规则生成外壳表示(与 1.1 的参数一致或略放宽)。
|
||
4) 命名与管理:`ENV_OS_Q7`、`ENV_FAST` 等,便于在总装下游装配中直接切换加载。
|
||
|
||
### 2.3 使用与维护
|
||
- 在需要快速打开或测量时,切换到 Envelope simp rep 加载;
|
||
- 装配更新后,更新 Envelope 以同步外壳;必要时建立 Update note 流程 防止遗漏。
|
||
|
||
---
|
||
|
||
## 3. 二次开发(OTK J-Link)无代码落地要点
|
||
|
||
需求:批量对多套装配生成外壳;或一键生成外壳并存放到统一位置;或在 PDM 动作里挂钩。
|
||
|
||
### 3.1 配置权限
|
||
- 许可:确保有 Creo TOOLKITOTK 的开发许可;
|
||
- 版本匹配:开发环境与 Creo 5 版本匹配(头文件与库一致);
|
||
- 数据访问:若通过 Windchill工管系统,确认签出签入策略(避免生成失败或卡权限)。
|
||
|
||
### 3.2 运行时输入输出设计
|
||
- 输入:顶层装配文件路径、Simp Rep(默认 Master)、Shrinkwrap 参数(方法=Outer shell、质量、孔洞、弦高、忽略小面阈值、输出类型)。
|
||
- 输出:外壳零件保存路径、命名规范、版本控制策略(例如加日期参数摘要)。
|
||
- 日志:记录源装配名、面数体积、生成时间、参数集、失败原因码(空装配、拓扑自交等)。
|
||
|
||
### 3.3 参数集(建议预设三档)
|
||
- Fast:Q=5、Chord=0.2–0.3、Ignore small faces=开(阈值偏大)、Fill holes=关;用于大批量初筛浏览。
|
||
- Balanced:Q=7–8、Chord=0.1、Ignore small faces=开(中等阈值)、Fill holes=按需;用于常规测量。
|
||
- Tight:Q=9–10、Chord=0.05、Ignore small faces=关或小阈值、Fill holes=按需;用于高精度测量对外交付。
|
||
|
||
### 3.4 错误处理与回退
|
||
- 组件缺失家族表未实例化:先触发 RegenerateResolve,失败则跳过并记录。
|
||
- 几何不闭合Heal 失败:降阶为 Surface 外壳 输出并提示需要手修;或自动放宽 ChordGap 后重试一次。
|
||
- 内存占用高超时:对超大装配自动切至 Fast 档;或先对源装配应用一个临时 Rule-based Simp Rep(如按体积阈值剔除小紧固件),再做 Shrinkwrap。
|
||
|
||
---
|
||
|
||
## 4. 备选与增强
|
||
|
||
### 4.1 规则简化(可作为 Shrinkwrap 前置加速)
|
||
- 在 View Manager → Simp Rep 新建 Rule-based 表示:
|
||
- Exclude 体积质量尺寸小于阈值的组件(大量螺钉、垫片先剔除,可显著提速 Shrinkwrap)。
|
||
- Exclude 指定层(如电气标识层)或指定类型(弹簧、柔性件)。
|
||
- 在该 Simp Rep 下再执行 Shrinkwrap Outer shell(步骤同 1.1)。
|
||
|
||
### 4.2 结果校核(强烈建议纳入流程)
|
||
- 外形偏差对比:将外壳与原装配叠合,做 Global Interference Clearance 或 Compare Geometry,抽查 3–5 条关键尺寸偏差(目标 ≤ 0.2 mm 或依项目设限)。
|
||
- 质量属性:若外壳作为近似质量模型使用,校核质量与体积差异阈值(例如 ≤ 2%)。
|
||
- 开孔保留性:若测量依赖孔窗口,抽检是否被 Fill holes 意外封闭。
|
||
|
||
### 4.3 命名与配置管理
|
||
- 统一命名模版:`项目_装配_SW_OS_QChordGap_日期.prt`;
|
||
- 在模型参数中写入:`SW_METHOD=OuterShell`, `SW_QUALITY=8`, `SW_FILL_HOLES=No`, `SW_CHORD=0.10` 等,便于追溯;
|
||
- 若走 PDM,定义外壳零件的 生命周期与可见性(只读、对外可分享)。
|
||
|
||
---
|
||
|
||
## 5. 典型问题与处理建议(FAQ)
|
||
|
||
- 外壳看起来“破面漏面”
|
||
- 提高 Quality 或减小 Chord height;
|
||
- 关闭 Ignore small faces 或调小阈值;
|
||
- 输出 Surface 后用 Heal Geometry 尝试修复,再 Solidify。
|
||
- 文件仍然很大生成缓慢
|
||
- 先用 Rule-based Simp Rep 排除小件再做 Shrinkwrap;
|
||
- 减小 Quality,增大 Chord,或关闭高代价选项(如高级填孔);
|
||
- 分层执行:对大子装先各自 Shrinkwrap,再在顶层对这些外壳做二次 Shrinkwrap。
|
||
- 关键小特征被抹平,测不到
|
||
- 关掉 Ignore small faces 或降低其阈值;
|
||
- 提高 Quality 降低 Chord;
|
||
- 对关键区域单独做 Local Refine(先对关键子装独立 Shrinkwrap,再装配上来)。
|
||
|
||
---
|
||
|
||
## 6. 一页式落地清单(可直接照此执行)
|
||
|
||
1) 选择产物:独立外壳零件(默认) Envelope 简化表示(需关联)。
|
||
2) (可选)前置规则简化:排除小件与无关层,加速 Shrinkwrap。
|
||
3) Shrinkwrap 参数:
|
||
- Method=Outer shell;Quality=7–9;Chord=0.05–0.15;Ignore small faces=开(阈值合理);Fill holes=按需。
|
||
- Output=SolidSurface geometry。
|
||
4) 命名与保存:采用统一命名与参数写入;入库或归档。
|
||
5) 校核:抽检 3–5 条关键外形尺寸;检查孔窗口保留性;必要时微调参数重生。
|
||
6) 测量分发:在外壳零件中测量;对外提供该外壳模型以减少泄密与体量。
|
||
7) (可选)自动化:准备三档参数集,批处理顶层装配与重点子装;记录日志。
|
||
|
||
---
|
||
|
||
### 结论
|
||
- 在 Creo 5,用 Shrinkwrap(Outer shell) 就能稳定地“只保留外壳、删除内部”;若要关联更新,用 Envelope 简化表示。
|
||
- 关键在于 Outer shell + 合理的 QualityChordFillIgnore small faces 参数组合,并配合 规则简化与结果校核。
|
||
- 若需要规模化与一致性,按第 3 节的无代码要点完成 OTKJ-Link 的批处理与参数固化即可。
|
||
|
||
如你愿意,我可以把以上步骤整理成一张操作卡(流程图 + 参数建议表),便于团队统一执行。 |