























Open CASCADE Technology(简称 OCCT)是一个开源的 C++ 三维 CAD/CAM/CAE 开发平台,由法国 Matra Datavision 在 1990 年代推出,2000 年开源,目前由 Open Cascade SAS 维护,仓库托管于 Open-Cascade-SAS/OCCT。它不是一个面向最终用户的 CAD 软件,而是一组用于构建 CAD 应用的底层 SDK,提供从基础数学、几何/拓扑表达、建模算法、可视化到数据交换与应用框架的一整套构件。
围绕 OCCT 已经形成了庞大的生态:FreeCAD、CAD Assistant、KiCad(部分)、Salome、CadQuery、pythonOCC、ChiliCAD、Mayo、3DViewStation 等都直接或间接基于 OCCT。理解 OCCT 等于打开了进入 CAD 内核世界的大门。
OCCT 大致可以分为以下能力域,每个域都对应一组以 T(Toolkit)形式发布的工具包:
TopoDS_Shape 拓扑、Geom_* 几何抽象、gp_* 数学基元。Graphic3d、OpenGl、V3d 视图,AIS 交互层,Prs3d 表达层,SelectMgr 拾取与选择管理。BRepCheck、ShapeAnalysis、ShapeProcess、UnitsAPI 等。OCCT 的主版本以年度大版本(如 7.6、7.7、7.8、7.9)+ 小版本(patch)演进。仓库默认分支为 master,发布分支以 IR 或 V7_x_y 命名,正式版本通过 Git tag(例如 V7_8_0)发布。新版本通常会带来:
TKDEGLTF、TKDESTEP 等数据交换重构。学习时建议锁定一个稳定版本(例如 7.8.x 或 7.9.x),在掌握后再追踪 master 的新特性。
OCCT 仓库根目录主要包含:
src/:所有 C++ 源代码,每个工具包(toolkit)一个子目录,如 gp/、Geom/、TopoDS/、BRepBuilderAPI/、BOPAlgo/、AIS/、Graphic3d/、STEPControl/、OCAF* 等,超过 200 个工具包。adm/:构建系统辅助脚本与元数据,包括 cmake/、templates/、UDLIST 等,OCCT 的 toolkit/类列表大量由生成器维护。dox/:Doxygen 文档源(用户指南、参考手册)。data/:测试与示例使用的几何文件(STEP、IGES、BRep 等)。tests/:基于 Draw 的庞大回归测试集,按模块组织。samples/:C++、Qt、MFC、C#、Tcl、Java、Android、iOS 等示例工程。tools/:辅助工具如 DFBrowser、MessageView、ShapeView、VInspector,是调试 OCAF/拓扑/可视化的利器。genproj / CMake:负责生成 IDE 工程或跨平台构建脚本。仓库根目录的 README.md、OCCT_BUILD.md、overview.md、CONTRIBUTING.md 等文件给出了构建、贡献、依赖说明,是首次接触必读的入口。
OCCT 的模块(Module)是工具包的集合,从上到下的依赖关系大致为:
Standard、TCollection、NCollection、TColStd、gp、Bnd、Quantity、Message、Resource 等,是后续一切的基础。Geom、Geom2d、GeomAdaptor、TopoDS、TopAbs、TopExp、BRep、BRepAdaptor、Poly 等。GeomAPI、Geom2dAPI、BRepBuilderAPI、BRepPrimAPI、BRepAlgoAPI、BRepOffsetAPI、BRepFilletAPI、ChFi3d、BRepMesh、ShapeAnalysis/Fix/Upgrade 等。Aspect、Graphic3d、OpenGl、V3d、AIS、Prs3d、SelectMgr、StdPrs、MeshVS。STEPControl、IGESControl、StlAPI、RWGltf、RWObj、Vrml*、XCAFDoc、STEPCAF*、IGESCAF*。TDF、TDocStd、TFunction、TPrsStd、AppStd、XmlOcaf、BinOcaf、XCAF。Draw、TestDraw,以及各模块的 *Test(BRepTest、AIS Test、XSDRAWSTEP 等)。理解依赖关系有助于按顺序学习:先底层数学,再几何与拓扑,再算法与可视化,最后数据交换与应用框架。
OCCT 是一个传统的 C++ 库,但它采用了若干独特的设计:
Handle(T)):除少数纯数据类型外,OCCT 对象通常通过引用计数智能指针 Handle(T) 操作,本质上是 opencascade::handle<T> 的别名,并由 Standard_Transient 提供基类。gp_* 值类型:点、向量、矩阵、坐标系等基础类是普通值类型,按值传递。Build()、IsDone() 后取出 Shape() 结果,这是 OCCT 风格的“算法即对象”。TopoDS_Shape + 共享底层数据:拓扑对象本身是值类型壳子,底层数据共享、可拷贝廉价。Standard_Failure,新代码倾向 Message_Report 与状态返回。需注意 OCC_CATCH_SIGNALS 宏与 SEH。NCollection_* 是模板化的容器,TColStd_*、TColgp_*、TopTools_* 是预实例化的常用集合。适应 OCCT 风格需要时间,但只要把握“值类型 + 句柄 + Builder API”三件套即可上手。
针对不同背景,建议的学习路线如下:
入门路线(4–6 周):
dox/overview/overview.md,对模块全貌有印象。Draw Test Harness 与 qt/Tutorial、qt/IESample 示例。gp、Geom、Geom2d 基础,理解点、向量、坐标系、曲线/曲面抽象。TopoDS、BRepBuilderAPI、BRepPrimAPI、BRepAlgoAPI,能用 C++ 构造一个零件。AIS、V3d,能在 Qt 程序中显示与拾取模型。进阶路线(2–3 个月):
BRep、Geom、Adaptor、Approx、GeomFill、BRepFill、BRepOffsetAPI,理解算法实现思路。BOPAlgo、BRepAlgoAPI、BRepFilletAPI,掌握布尔运算与圆角倒角,理解参数与失败处理。BRepMesh、StlAPI,理解离散化参数与精度。精通路线(半年以上):
dox/user_guides/* 用户指南,对照 src/ 源码与 tests/ 测试用例。BOPAlgo_PaveFiller、BRepFill_Pipe、ChFi3d_Builder、BRepMesh_IncrementalMesh。后续 17 章按以下顺序展开:环境与构建(第02章)、底层框架(第03章)、几何与拓扑(第04–06章)、建模算法(第07–09章)、网格化(第10章)、可视化(第11章)、数据交换(第12章)、OCAF(第13章)、Draw(第14章)、曲面(第15章)、性能(第16章)、生态集成(第17章)、综合实战(第18章)。每一章都尽量结合源码路径、官方文档章节、典型 API 与示例代码,使读者既能快速上手,又能在源码中找到对应实现。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。