一、大型 CAD 装配为什么容易出现重复转换?
假设一套设备模型包含 3000 个零件,工程师只修改了其中一颗螺丝的倒角。
如果下游系统始终以顶层装配为唯一处理入口,并沿装配依赖关系重新读取全部子装配和零件,那么一次局部变化就可能触发整套源 CAD 数据重新转换。
此时,真正的问题是:
变化发生在零件或文件级,数据处理流程却仍以整套装配为最小单元。
对于偶尔处理一次的中小模型,这种方式可能可以接受;但在 PLM、PDM、协同审图、工艺规划、报价和持续转换服务中,同一套大型装配可能每天发生多次局部变更,重复处理会逐渐成为明显负担。
二、HOOPS Exchange Shattered 模式是什么?
Tech Soft 3D 官方文档将 Shattered loading 定义为:将装配中的文件作为独立模块加载,而不是把它们全部作为顶层装配的依赖项一并加载。
传统整体处理和 Shattered 模式的主要区别如下:
| 对比维度 | 传统整体处理 | Shattered 模式 |
|---|---|---|
| 处理入口 | 以顶层装配及依赖为整体 | 分别处理装配、子装配和零件文件 |
| 中间结果 | 常以整套模型为主要结果 | 形成多个可独立管理的 PRC 模块 |
| 局部变化 | 可能重新处理整套源数据 | 可重新转换变化模块并复用其他模块 |
| 并行处理 | 依赖整体流程设计 | 独立模块为并发处理提供条件 |
| 版本管理 | 容易与零件版本脱节 | 更容易与 PLM/PDM 文件版本建立映射 |
Shattered 的价值不在于新增一种 CAD 格式,而在于改变大型多文件装配的处理粒度。
三、Shattered 模式的基本工作流程
HOOPS Exchange 官方 Shattered 示例展示了以下处理路径:
- 加载 CAD 顶层装配;
- 提取装配引用的依赖文件;
- 分别转换 CAD 零件文件和装配文件;
- 将这些文件输出为多个 PRC;
- 从已经生成的 PRC 文件重新加载完整模型。
可以将这条流程概括为:
顶层 CAD 装配
↓
解析装配结构与外部引用
↓
分别读取各个 CAD 文件
↓
生成独立 PRC 中间模块
↓
按装配关系重新构建完整模型
这里需要特别注意:官方示例最后仍会从多个 PRC 文件加载完整模型。
因此,Shattered 更准确的价值是减少全部源 CAD 文件的重复转换,并允许模块独立更新;不能简单理解为“运行时永远只读取一个零件”或“完整模型不再进入内存”。
四、局部更新如何落地?
Shattered 提供了模块化读取和 PRC 构建能力,但要实现真正的局部更新,还需要应用系统建立缓存与版本管理机制。
一条更完整的数据管线可以设计为:
PLM/PDM 中的顶层装配
↓
获取装配结构与文件引用
↓
为每个源 CAD 文件建立稳定标识
↓
比较版本、修订号或内容摘要
↓
只重新转换失效模块
↓
复用未变化的 PRC 模块
↓
重新构建完整装配
1. 建立稳定的文件标识
系统需要能够判断两个版本中的文件是否代表同一个零件或子装配。可使用 PLM 对象 ID、文件 ID、修订号或业务系统中的稳定主键,不能只依赖文件名。
2. 记录源文件与 PRC 的映射
建议为每个模块保存以下信息:
- 源 CAD 文件或 PLM 对象 ID;
- 源文件版本、修订号或内容摘要;
- 对应 PRC 文件位置;
- 父子装配引用关系;
- 转换参数;
- HOOPS Exchange 版本;
- 转换时间和状态。
3. 定义缓存失效规则
零件几何变化通常需要重新转换;但如果转换参数、读取选项或 SDK 版本发生变化,即使源文件没有修改,已有 PRC 也可能需要重新生成。
4. 设计失败回退机制
当某个零件转换失败、PRC 文件缺失或装配引用不一致时,系统需要决定是终止任务、使用旧缓存,还是回退到整体转换流程。
五、Shattered loading 和增量加载有什么区别?
Shattered loading 经常与 incremental loading(增量加载)同时出现,但两者解决的问题不同。
| 对比项 | Shattered loading | Incremental loading |
|---|---|---|
| 主要目标 | 将多文件装配拆成独立模块 | 分阶段、按粒度加载模型数据 |
| 关注对象 | CAD 文件、装配依赖和 PRC 模块 | 装配树、零件内容和加载阶段 |
| 典型价值 | 模块更新、缓存复用、并发处理 | 先读结构、再按需要加载内容 |
| 是否自动识别变化 | 否 | 否 |
| 是否保证低内存 | 否 | 取决于最终加载策略 |
官方 API 文档也说明,Shattered reading 是一种独立于常规 incremental loading 的读取方式。
在大型模型项目中,两者可以组合使用:Shattered 负责模块化组织,增量或按需加载策略负责控制什么时候读取哪些数据。但组合后的实际效果仍取决于应用架构。
六、Shattered 模式能够带来哪些工程价值?
1. 减少未变化源文件的重复转换
如果某次设计变更只影响少数零件,应用可以重新生成对应模块,并复用没有变化的 PRC。这样可以把处理成本从“整套装配”缩小到“变化文件及受影响关系”。
2. 为并行转换提供基础
多个独立模块可以被分配到不同任务中处理。官方文档也指出,Shattered 模式可以通过并发加载装配元素获得性能收益。
不过,并发度并非越高越好,还需要结合 CPU、内存、磁盘吞吐和许可证条件进行控制。
3. 更容易衔接 PLM/PDM 版本体系
PLM/PDM 通常已经管理零件 ID、修订号、装配引用和变更记录。Shattered 将中间结果拆到文件或模块级后,能够更自然地与这些版本信息建立对应关系。
4. 降低大型装配处理链路的耦合
当转换结果被拆分为多个模块后,任务调度、失败重试、缓存复用和结果分发都可以按更细粒度执行,不必把每次失败都扩大为整套任务失败。
延伸阅读:
- 慧都科技 Tech Soft 3D 产品专区 — 了解 HOOPS Exchange及更多 3D 开发工具
本文基于 HOOPS Exchange 官方文档整理,技术细节以官方文档为准。