HOOPS Exchange Shattered 模式详解:大型 CAD 装配如何减少重复转换

0 阅读6分钟

一、大型 CAD 装配为什么容易出现重复转换?

假设一套设备模型包含 3000 个零件,工程师只修改了其中一颗螺丝的倒角。

如果下游系统始终以顶层装配为唯一处理入口,并沿装配依赖关系重新读取全部子装配和零件,那么一次局部变化就可能触发整套源 CAD 数据重新转换。

此时,真正的问题是:

变化发生在零件或文件级,数据处理流程却仍以整套装配为最小单元。

对于偶尔处理一次的中小模型,这种方式可能可以接受;但在 PLM、PDM、协同审图、工艺规划、报价和持续转换服务中,同一套大型装配可能每天发生多次局部变更,重复处理会逐渐成为明显负担。

shapr3d-monitors.webp

二、HOOPS Exchange Shattered 模式是什么?

Tech Soft 3D 官方文档将 Shattered loading 定义为:将装配中的文件作为独立模块加载,而不是把它们全部作为顶层装配的依赖项一并加载。

传统整体处理和 Shattered 模式的主要区别如下:

对比维度传统整体处理Shattered 模式
处理入口以顶层装配及依赖为整体分别处理装配、子装配和零件文件
中间结果常以整套模型为主要结果形成多个可独立管理的 PRC 模块
局部变化可能重新处理整套源数据可重新转换变化模块并复用其他模块
并行处理依赖整体流程设计独立模块为并发处理提供条件
版本管理容易与零件版本脱节更容易与 PLM/PDM 文件版本建立映射

Shattered 的价值不在于新增一种 CAD 格式,而在于改变大型多文件装配的处理粒度。

三、Shattered 模式的基本工作流程

HOOPS Exchange 官方 Shattered 示例展示了以下处理路径:

  1. 加载 CAD 顶层装配;
  2. 提取装配引用的依赖文件;
  3. 分别转换 CAD 零件文件和装配文件;
  4. 将这些文件输出为多个 PRC;
  5. 从已经生成的 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 loadingIncremental loading
主要目标将多文件装配拆成独立模块分阶段、按粒度加载模型数据
关注对象CAD 文件、装配依赖和 PRC 模块装配树、零件内容和加载阶段
典型价值模块更新、缓存复用、并发处理先读结构、再按需要加载内容
是否自动识别变化
是否保证低内存取决于最终加载策略

官方 API 文档也说明,Shattered reading 是一种独立于常规 incremental loading 的读取方式。

在大型模型项目中,两者可以组合使用:Shattered 负责模块化组织,增量或按需加载策略负责控制什么时候读取哪些数据。但组合后的实际效果仍取决于应用架构。

六、Shattered 模式能够带来哪些工程价值?

1. 减少未变化源文件的重复转换

如果某次设计变更只影响少数零件,应用可以重新生成对应模块,并复用没有变化的 PRC。这样可以把处理成本从“整套装配”缩小到“变化文件及受影响关系”。

2. 为并行转换提供基础

多个独立模块可以被分配到不同任务中处理。官方文档也指出,Shattered 模式可以通过并发加载装配元素获得性能收益。

不过,并发度并非越高越好,还需要结合 CPU、内存、磁盘吞吐和许可证条件进行控制。

3. 更容易衔接 PLM/PDM 版本体系

PLM/PDM 通常已经管理零件 ID、修订号、装配引用和变更记录。Shattered 将中间结果拆到文件或模块级后,能够更自然地与这些版本信息建立对应关系。

4. 降低大型装配处理链路的耦合

当转换结果被拆分为多个模块后,任务调度、失败重试、缓存复用和结果分发都可以按更细粒度执行,不必把每次失败都扩大为整套任务失败。

延伸阅读:

本文基于 HOOPS Exchange 官方文档整理,技术细节以官方文档为准。