如果你的软件需要处理 3D 模型,你一定深有体会:一个在 CATIA 里看起来完美的装配体,转换后却面目全非。曲面破裂、PMI 丢失、原本三层结构的装配树变成一堆散乱的独立实体。
- 工程中 “稳定一致” 到底意味着什么
- 为什么它如此困难
- 如何把 CAD 转换集成到你的应用中,且避免长年累月的维护痛苦
真正的问题:每个 CAD 系统都说着不同的方言
你的用户会用到来自 CATIA、SolidWorks、NX、Creo、Inventor、Solid Edge 等系统的文件,也会通过 STEP、IGES、JT 等中性格式传递数据。
每个系统都以自己的方式存储几何体、拓扑结构、元数据、PMI 和装配结构。
即使是 STEP,据说也是一种通用标准,但不同供应商的实现方式也不尽相同。在一个系统中验证无误的模型,在另一个系统中可能会失效或无声无息地退化。
“一致性” 在工程里到底指什么
在讨论解决方案之前,有必要说明一下一致的 CAD 数据交换要求是什么。这不是一件事,而是几件事,而且它们都必须同时工作。- 几何保真度。B-rep 实体、曲面和曲线需要完整地呈现出来。不能近似。当下游工作流程需要精确的几何图形时,不能使用细分曲面。如果原始模型有一个解析圆柱体,那么翻译后的模型也应该有一个解析圆柱体,而不是密集样条曲线的近似值。
- 元数据保存。PMI(尺寸、公差、表面粗糙度标注)、材料分配、颜色和装配层次结构都需要在旅程中保存下来。丢失几何图形是显而易见的。元数据的丢失则很微妙,而且往往更糟,因为决策是在不完整的信息基础上做出的。
- 双向流转可靠性。导出后再导入不应累积漂移。如果用户将模型转换成 STEP,然后发送给合作伙伴,再返回时,几何图形仍应在预期公差范围内匹配。每一次往返都会带来微小的变化,久而久之就会产生严重的问题。
- 跨格式的行为一致性。CATIA V5 文件及其 STEP AP214 导出应在您的应用程序中产生相同的结果。您的用户不必通过反复试验来了解哪种格式 "效果更好"。
- 规模性能。大型装配--数千个零件、数千兆字节的数据--不可能花费数小时来转换。如果您应用程序中的 cad 文件转换器在处理整车装配时出现问题,那么它在处理单个零件时的准确性也就无从谈起了。
内核之间存在标准差异,这就是几何修复的价值
有一点没有引起足够的重视:三大建模内核--Parasolid、ACIS 和 CGM,对有效性的定义各不相同。它们使用不同的公差、不同的边-面相邻规则和不同的曲面参数化约定。
在 Parasolid 中完全有效的实体,在 ACIS 中可能拓扑无效。这并不是因为任何一个内核是错误的,而是因为它们在不同的地方画了线。当你的 cad 转换软件读取用一种内核编写的文件,并需要为另一种内核生成几何图形时,你就在数学世界观之间进行转换。
这就是修复的重要性所在。没有它,就会出现间隙、自相交、面缺失,以及使下游操作(布尔运算、网格划分、特征识别)不可预测地失败的错误。
3D InterOp、Spatial互操作性 SDK将修复分为三类,每一类都解决了不同的故障模式,因此值得了解:
- 拓扑修改可修复结构连接问题--删除重复的顶点、拆分本应拆分的边、修复面边界不能正确闭合的循环错误。这些都是导致布尔运算崩溃的错误。
- 几何修改处理的是图形本身:重建自交曲线、修剪超出边界的曲面、修正退化几何。一个特别棘手的问题涉及解析曲面的切线相交--例如圆柱体与平面相切--在这种情况下,3D InterOp 通过一个基于图形的求解器,使用线性变换将曲面卡入对齐状态,该求解器可以处理循环切线链。切向样条相交通过控制点修改进行校正,这比重新计算整个曲面的破坏性要小。
- 几何建模通过重新计算实际的曲面-曲面交叉点,而不仅仅是推移边缘,来解决面与面之间的间隙问题。这种方法成本较高,但比基于公差的简单拼接更可靠。
还有一件事让人猝不及防:单元误解。
以英寸为单位创建的模型被读作毫米,产生的几何图形在尺寸上是有效的,但尺寸却是错误的 25.4 倍。这是大量 “模型看起来奇怪” 的隐藏根源,成熟的转换器会在进入业务逻辑前就处理掉。
自主开发 vs 集成 SDK:真实对比
让我们直截了当地讨论这个权衡问题,因为这是工程团队面临的一个真实决定。 自己构建 CAD 转换意味着从每个供应商那里获取数据库(假设他们会授权给你)、为每种格式编写解析器和转换器、实施修复逻辑、处理出货时的版本更新,以及在每年都在增加的格式×版本×内核组合矩阵中进行测试。
有些公司就是这样做的,比如我们 Spatial。
他们往往有专门的团队负责转换维护工作。集成 CAD 转换 SDK 意味着您可以从单一依赖中获得格式覆盖、修复、性能和版本跟踪。代价是对供应商的依赖性和许可成本。
对于大多数构建 CAD 互操作性是必要的但不是核心产品的应用程序的团队来说,集成更有意义。您更愿意让工程师致力于实现与众不同的应用功能,而不是调试为什么最新的 Creo 服务包改变了花键权重的编写方式。
3D InterOp 在这方面涵盖的范围很广:
- CAD 格式:CATIA V4/V5/V6、SolidWorks、NX、Creo、Inventor、Rhino、Solid Edge、3DXML、3DEXPERIENCE
- BIM 格式:Revit、IFC、DGN、DXF/DWG、Navisworks
- 中立格式:Step、IGES、JT、VDA-fs
- 可视化/AR 格式:3MF、COLLADA、glTF、FBX、OBJ
想根据您的特定格式矩阵评估 3D Interop?
真正实用的最佳实践
如果您要在应用程序中实现 cad 数据交换,无论是使用 3D InterOp 还是其他工具,以下是我根据团队最常遇到的问题推荐的模式。
为目标内核生成本地几何图形
如果您的应用程序在 ACIS 上运行,请不要导入中性中间体,然后再进行转换。直接导入 ACIS 体。Parasolid 或 CGM 也一样。每个中间步骤都有可能造成公差不匹配和数据丢失。无论您的应用程序使用哪种内核,3D InterOp 都能直接生成本地 B-rep 体。
开启自动修复
我知道,为了性能而禁用修复很有诱惑力。除非你对它进行了剖析并确认它实际上是瓶颈(通常不是),否则不要这样做。你在转换上省下的时间,在调试无效几何体造成的下游故障时会浪费十倍。
对大型装配体使用选择性加载
您并不总是需要每个零件都有精确的 B-rep 几何图形。3D InterOp 支持选择性导入:首先加载可视化数据(即使是大型装配体也只需几秒钟),然后根据需要为用户实际交互的零件调入精确的几何图形。这种模式对于用户先浏览装配体再深入特定部件的应用有很大的不同。
以编程方式验证转换后的模型
不要认为导入成功就意味着导入正确。检查主体的有效性,将边界框与源元数据进行比较,验证装配结构是否具有预期的深度和零件数。将这些检查纳入自动化测试套件,而不仅仅是手动质量保证流程。
规划多进程并行
当您需要转换许多文件、批处理、服务器端转换时,3D InterOp 支持多进程零件转换。请注意,这是多进程,而不是多线程,因为某些第三方供应商库不是线程安全的。请相应地设计您的管道:产生工作进程,而不是工作线程。
注意无聊的错误盯住那些 “枯燥但致命” 的 Bug
单位误解、色彩空间差异、坐标系偏移,这些都不是什么光彩的问题,但如果你不处理它们,就会产生源源不断的支持票据。一个好的 cad 文件转换器能在用户之前发现这些问题。
未来趋势
CAD 的互操作性并没有变得越来越简单。格式范围不断扩大,BIM 数据与机械 CAD 混合,AR/VR 可视化管道从工程模型中提取数据,基于云的设计工具产生新的格式变体。 您的应用程序可能需要支持的成对转换路径的数量会随着所涵盖格式的平方而增加。
我所见过的能很好处理这个问题的团队,都将 cad 转换视为基础架构,而不是一项功能。
他们会选择一个 SDK,尽早集成,积极验证,然后转向真正能使产品与众不同的工作。
如果您正在评估如何在您的应用程序中添加或改进 CAD 格式支持,3D InterOp 的产品页面是一个很好的起点。
如果您想就自己的具体要求与他人交流,可点击此处联系 Spatial 团队。