第 9 篇 OCC OCAF 框架详解:特征树、装配管理、数据持久化、参数化架构 📅 发布时间:2026/8/29 4:46:15 👁 浏览次数: 专栏系列OpenCASCADE 工业软件落地实战专栏・第 9 篇阶段定位第三阶段・核心模块逐篇拆解装配文档篇前置导读前面第 6 篇 Modeling 完成几何模型构建第 7 篇 DataExchange 实现 STEP/IGES 导入导出第 8 篇 Visualization 把 BRep 模型渲染到窗口完成视图交互。 走到这里已经可以处理单个零件模型。但工业 CAD/CAE 软件绝大多数场景面对的是多零部件大装配成千上万个零件、零部件实例复用、层级特征树结构、零部件颜色透明度、自定义业务属性、工程文档保存。 仅依靠 TopoDS_ShapeBRep 无法高效管理装配重复实例会造成内存爆炸缺少特征树组织、参数存储、文档序列化能力这正是 OCAF 框架要解决的核心问题。很多开发者会混淆 OCAF 与 BRepBRep 负责几何外形表达OCAF 负责上层业务数据组织。OCAF 不承担几何布尔、造型计算它是一套完整的应用文档框架承载特征树、装配层级、实例变换、参数属性、持久化存储是自研国产 CAD/CAE 前后处理软件的关键底层基础设施。本篇从工业软件工程化视角拆解 OCAF 整体分层架构、TDF 标签特征树、XCAF 装配实例机制、属性体系、文档持久化梳理参数化架构设计思路与高频工程坑点给出落地实战开发指引。9.1 OCAF 框架整体架构与工业定位OCAF 全称 OpenCASCADE Application FrameworkOpenCASCADE 配套的应用层文档框架。核心认知OCAF 不生成几何只负责组织数据BRep 存放 BRep 几何 ShapeOCAF 管理 Shape 的特征树组织、装配实例关系、变换矩阵、业务参数属性、完整文档生命周期。整体分为 4 个主要层次TDocStd 文档层TDocStd_DocumentOCAF 根对象代表一份完整工程文档统一管理 Undo/Redo 事务、文档持久化读写。TDF 特征标签层Data FrameworkTDF_Label标签树OCAF 核心存储载体树形节点构成软件界面看到的特征树 / 装配树。属性驱动层Attributes各类 Attribute 属性挂载于 TDF_Label 节点几何引用、变换矩阵、颜色材质、自定义参数全部以属性载体形式附加到标签。工具服务层XCAF 装配工具、文档 IO 工具、变更事务工具完成实例创建、特征编辑、文档导入导出。关键类快速对照表模块命名空间核心类作用TDocStdTDocStd_DocumentOCAF 文档总对象一份装配 / 参数化工程对应一个 DocumentTDFTDF_Label特征树节点构成树形层级对应特征树、装配树每一个节点TNamingTNaming_NamedShape核心属性将 TopoDS_Shape 几何挂载到 TDF_Label 标签TCollectionTCollection_ExtendedStringOCAF 内置字符串存储特征名、零部件名称XCAFDocXCAFDoc_DocumentToolXCAF 装配工具总入口零部件、实例、颜色材质统一管理XCAFAppXCAFApp_ApplicationXCAF 应用实例支持同时管理多份 OCAF 工程文档工程概念区分BRepTopoDS_Shape零件长什么样纯粹几何外形数据OCAF‑XCAF特征怎么来、装配层级、零部件命名、摆放位置、附加仿真参数业务与组织层。9.2 TDF‑Label 标签树OCAF 的特征树底层载体TDF_Label标签是 OCAF 一切业务数据的底层载体为树形节点结构对应 UI 展示的特征树、装配树。一份TDocStd_Document持有唯一根标签向下派生多级子 Label完整映射界面特征树层级Label 本身是空容器所有业务数据全部挂载在 Label 的 Attribute 属性上标签只负责层级关系每个 Label 拥有唯一 Tag 编号可快速定位查找特征 / 装配节点支持多层嵌套天然适配总装配→子装配→零件以及草图‑拉伸‑布尔的参数化特征树结构。典型特征 装配树映射示例Document根工程文档 └── Root Label根节点 ├── Feature_Label1 草图特征 ├── Feature_Label2 拉伸特征 └── Assembly_Root 总装配 ├── SubAsm_Label1 子装配A │ └── Part_Instance_Label 零件实例 └── SubAsm_Label2 子装配B高频踩坑要点直接修改外部 TopoDS_Shape 几何OCAF 内部引用不会自动同步几何发生变更必须更新对应TNaming_NamedShape属性Label 节点删除不等于内存立刻释放需要同步清理挂载属性否则造成内存残留泄漏业务开发尽量避免硬编码 Tag 编号遍历树优先使用XCAFDoc_DocumentTool工具接口。9.3 XCAF 装配体系原型零件与实例化机制大装配核心XCAF 是 OCAF 面向 CAD 装配场景的扩展模块实例化能力是 XCAF 在工业大装配场景最大价值。原型Prototype原始零件几何内存仅保存一份 BRep Shape实例Instance不复制完整几何数据仅仅记录原型引用 gp_Trsf局部变换矩阵平移、旋转、缩放。同一个零件在装配中摆放上百次内存只保留1 份原型 BRep 上百份变换矩阵实例记录以此实现大装配内存轻量化。开发概念区分直接复制 Shape完整拷贝全部几何数据装配规模增大内存成倍上涨创建装配实例仅记录原型引用与变换内存开销极低工业大装配开发优先选用实例模式。核心装配开发流程创建原型零件 Label 节点将 BRep 几何存入TNaming_NamedShape属性调用XCAFDoc_DocumentTool::AddComponent()生成装配实例节点实例节点指向原型 Label设置gp_Trsf位置旋转变换矩阵将实例挂载至父装配 Label完成装配树构建。工程回顾第 8 篇 Visualization 提到 “实例化装配复用 AIS 对象”底层数据源即来自 OCAF‑XCAF 装配实例AIS 层读取 XCAF 实例信息使用AIS_ConnectedInteractive实现显示对象复用降低三角化与渲染开销。9.4 属性 Attribute 体系几何、外观、自定义参数、参数化架构基础挂载于TDF_Label之上的 Attribute 属性分为系统内置属性与用户自定义属性也是OCAF 参数化架构的底层基础。TNaming_NamedShape存储 TopoDS_Shape 几何零件、特征几何的存储载体XCAFDoc_ColorAttr零部件颜色、透明度外观属性XCAFDoc_MaterialAttr零部件材质属性TDF_Reference实例引用属性记录装配实例指向哪一个原型 Label 节点自定义 TDF_Attribute继承基类扩展存储草图尺寸、仿真参数、零部件编号、版本号等参数化、CAE 业务字段。参数化架构设计思路 草图尺寸、特征参数全部存储在自定义 Attribute修改参数之后重新执行特征建模更新对应 Label 上的TNaming_NamedShape再通过事务提交完成参数驱动模型更新同时支持 Undo/Redo 回滚。实战高频坑 自定义属性必须向 OCAF 应用工厂完成注册否则文档保存再打开自定义参数、业务属性会直接丢失。9.5 OCAF 数据持久化xcaf 文档读写、STEP 中性文件联动OCAF 可以将完整特征树、装配实例、颜色材质、自定义参数保存为.xcaf二进制私有工程文档同时 XCAF 可与第 7 篇 DataExchange 模块深度联动。保存 OCAF 工程TDocStd_Application::SaveAs()输出 xcaf 文件完整保留特征层级、装配实例变换、颜色、自定义业务参数读取 OCAF 工程TDocStd_Application::Open()完整恢复整套特征装配树与全部属性STEP 装配导入 XCAFSTEPControl_Reader读取 STEP 文件后通过 XCAF 接口把装配信息灌入 TDF_Label 特征树。重要知识点回顾 DataExchangeSTEP AP203 不携带装配实例信息AP214、AP242 才完整支持装配层级导入后 XCAF 才能还原实例装配树。⚠️工程常见坑 普通 STEP 直接导入得到平铺 BRep Compound不等于 XCAF 装配特征树很多开发者导入 STEP 看不到装配层级根源是没有调用 XCAF 装配转换接口 xcaf 属于 OCAF 私有格式无法对外交付交换对外数据交互仍然输出 STEP/IGES 中性文件。9.6 Undo / Redo 事务底层原理OCAF 原生内置撤销重做能力基于 TDF 标签属性变更事务机制实现。每一次修改 Label 上的属性需要封装在事务之内TDocStd_Document::NewCommand()开启事务CommitCommand()提交事务只有成功提交的事务才可以执行 Undo 回滚。工程坑点忘记NewCommand / CommitCommand修改不会进入撤销栈撤销功能完全失效大装配循环操作时不控制事务粒度撤销栈会造成内存持续暴涨。9.7 OCAF‑XCAF 与 Visualization 视图联动衔接第 8 篇OCAF 只负责内存业务数据不会自动刷新三维画面需要和 Visualization 模块配合完成渲染遍历 XCAF 特征 / 装配树全部 TDF_Label 节点读取 Label 上 NamedShape 几何、实例变换矩阵、颜色透明度AIS 层生成AIS_Shape装配实例使用AIS_ConnectedInteractive实现显示对象复用交由AIS_InteractiveContext完成显示、拾取、高亮交互。核心误区打开 OCAF xcaf 文档三维视图不会自动渲染业务代码必须遍历装配树手动构建 AIS 交互对象。9.8 OCAF 工业落地边界总结✅适合场景构建参数化特征树、装配层级树实例化大装配实现几何原型复用降低内存占用挂载零部件名称、颜色材质、草图尺寸、仿真参数等各类业务属性私有工程 xcaf 文档保存加载原生自带 Undo/Redo 事务体系读取 STEP AP214/AP242 装配完整还原装配结构对接 DataExchange 模块作为国产 CAD/CAE 软件上层业务数据模型底座。⚠️能力边界与短板OCAF 本身不执行任何几何运算布尔、缝合、造型计算依旧依赖 Modeling 模块xcaf 为私有二进制格式无法对外交付对外交换需要导出 STEP 中性文件自定义业务属性必须注册保存重打开会发生参数丢失没有开箱即用 Qt 特征树 / 装配树 UI 控件界面树组件需要业务层遍历 Label 树自行适配开发十万级以上大规模装配节点Label 树遍历、序列化性能下降业务层需要实现懒加载、分页加载策略。工程落地思路BRep 负责几何外形OCAF‑XCAF 负责特征、装配、参数组织Visualization 负责渲染交互三者职责边界严格分离开发中切忌模块职责混淆。下期预告第 10 篇 OCC 几何修复实战缝隙、自由边、碎面、退化几何、BRepCheck 诊断与工业修复流水线。 掌握全部核心模块架构之后进入工业真实模型痛点实战工程 STEP 模型普遍存在各类几何破损本篇讲解 OCC 诊断工具、缝合、修复工具搭建适配 CAE 仿真前处理的自动化模型修复流水线。