本节摘要:SOURCE 3.3:STEP AP203/214 是中性格式标准,但特征树、参数常在中性转换中丢失。
公司决定从 CAD-A 迁移到 CAD-B。IT 部门把数千个模型批量导出,工程师们却发现:零件都能打开,但特征树没了、参数没了、配合约束全断——每个零件变成"哑实体"(无参数 B-rep)。要重新编辑?只能重画。这正是 SOURCE 反复警告的场景:中性格式交换的是"结果"不是"过程"。
| 格式 | 类型 | 保留内容 | 典型用途 |
|---|---|---|---|
| 原生 | 专有 | 特征+历史 | 日常设计 |
| STEP | ISO 中性 | B-rep 几何 | 供应链交换 |
| IGES | legacy | 曲面 | 老系统兼容 |
| STL | 网格 | 三角面 | 3D 打印 |
| glTF | 网格+材质 | 可视化 | Web 查看 |
把信息保真度排个序:原生 > STEP > IGES > STL/glTF。越靠左越"可编辑",越靠右越"只可看"。选择格式的本质,是回答"接收方需要模型的哪个层次"。
STEP(ISO 10303)是工程数据交换的事实标准,常见应用协议有:
STEP 的文件结构是实体实例 + 引用的文本格式,用 ISO 10303-21 语法编码:
ISO-10303-21; HEADER; FILE_NAME('flange.stp','2024-06-01T10:00:00',('engineer'),(''),'','',''); ENDSEC; DATA; #10=ADVANCED_BREP_SHAPE_REPRESENTATION(...); #20=CLOSED_SHELL('',(#30,#40,#50)); ENDSEC; END-ISO-10303-21;
STEP 的核心能力是无歧义地描述 B-rep 拓扑:面、环、边、顶点及连接关系。它保"长相",不保"来历"——参数、特征、约束一律不包含。
| 场景 | 推荐格式 | 理由 |
|---|---|---|
| 团队内部协作 | 原生 | 保留全部设计意图 |
| 跨供应商交换 | STEP AP214/242 | 几何+装配+PMI |
| 老系统对接 | IGES | 兼容性兜底 |
| 3D 打印 | STL | 切片器只认三角面 |
| Web 查看/AR | glTF | 轻量+材质+动画 |

SOURCE 警告:STEP 转换后特征丢失是行业通病。丢失的层次逐级递增:
企业需制定「主模型权威」与转换验证流程(几何对比、体积检查)。推荐流程:
# 转换验证:几何对比 + 体积检查 + 拓扑检查 def validate_conversion(original, converted): checks = [] vol_a, vol_b = original.volume(), converted.volume() if abs(vol_a - vol_b) / vol_a > 0.001: # 体积偏差 >0.1% checks.append(f"体积偏差 {vol_a} -> {vol_b}") dist = max_surface_deviation(original, converted) if dist > 0.05: # 最大面偏差 >0.05mm checks.append(f"面偏差过大 {dist}") if converted.bad_edges(): # 拓扑破损 checks.append("存在坏边/缝隙") return checks or "验证通过"
三个动作的核心:几何对比(面偏差)、体积检查(整体一致性)、拓扑检查(封闭性)。只有全部通过,转换结果才能进入下游。
未来方向是让交换不只保几何,还保语义:AP242 已支持 PMI,新一代"语义 STEP"试图携带制造语义。但短期内,工程实践的建议仍然是:
原生格式是 CAD 厂商的私有格式(如 SolidWorks 的 SLDPRT、NX 的 PRT、CATIA 的 CATPart),完整保留该软件的全部信息:
| 信息类别 | 原生格式保留 | 中性格式 |
|---|---|---|
| 特征树 | 完整 | 丢失 |
| 参数与约束 | 完整 | 丢失 |
| 草图与关系 | 完整 | 丢失 |
| 材料/属性 | 完整 | 部分 |
| B-rep 几何 | 完整 | 保留 |
| 装配关系 | 完整 | 结构保留、约束丢失 |
原生格式的代价是封闭:厂商之间不互通,版本升级也可能不兼容旧文件。因此企业必须把原生格式当"母语"保管,把中性格式当"翻译"外发。
在 3D 之前,DXF(Drawing Exchange Format)是 2D 交换的事实标准,至今仍是加工车间、电气图、平面图交接的常用格式。它的本质是实体列表:
SECTION ENTITIES LINE LAYER 0 10 0.0 20 0.0 30 0.0 11 100.0 21 50.0 31 0.0 CIRCLE LAYER 0 10 50.0 20 50.0 30 0.0 40 10.0 ENDSEC
DXF 每条实体记录几何参数(起点终点、圆心半径),但没有拓扑与约束——两条"本来相接"的线,在 DXF 里只是两条独立实体。这就是为什么 DXF 适合看图与排版,不适合做参数化编辑。
某汽车零部件供应商接到主机厂的新项目:主机厂发来 STEP 文件,供应商导入自家 CAD 后发现:
排查结论:STEP 在导出时把"特征树"降级为"B-rep 快照",把"G2 圆角"近似为普通面。这不是任何一方的 Bug,而是中性格式的设计边界。供应商最终只能让主机厂同时提供 PDF 图纸用于核对,并建立"转换验证"清单。
企业级做法是把验证做成自动化工具,而不是靠肉眼抽查:
def conversion_report(original, converted, out_file): report = [ f"体积: {original.volume():.4f} vs {converted.volume():.4f}", f"最大面偏差: {max_surface_dev(original, converted):.5f} mm", f"特征数: {original.feature_count()} vs {converted.feature_count()}", f"拓扑破损: {converted.invalid_edges()} 条", ] with open(out_file, "w") as f: f.write("\n".join(report)) return all(item == 0 or "OK" in item for item in report)
验证报告作为"转换合格证"归档,只有通过的模型才允许进入下游环节。这既保护了数据质量,也明确了责任边界。
格式之争的本质是语义保真度的竞争:
对工程师的实用建议始终不变:内部用原生,外发用中性,重要交换必验证。
⚠️ 常见坑:用 STL 做设计迭代——无拓扑,无法参数修改。
💡 关键直觉:格式选择 = 信息保真度 vs 兼容性权衡。