一、OOC Modules
OCC包含6大模块,简单描述如下:
模块名称 | 功能描述 |
Foundation Classes | 基础类,包含被其他模块使用的数据结构及工具 |
Modeling Data | 实现2D/3D几何及拓扑数据结构 |
Modeling Algorithms | 实现拓扑和几何相关算法 |
Visualization | 可视化,用于显示2D、3D对象 |
Data Exchange | 数据交换,提供读写IGES、Step等文件 |
Application Framework | 又称OCAF,提供数据管理能力,简化CAD应用开发 |
每个模块会包含若干tookit,每个tookit会编译成一个dll动态库。每个toolkit包含若干个包, 每个包包含若干class定义。
二、Foundation Module
Foundation模块包含两个Tookit:TKernel、TKMath。
三、TKernel toolkit
1. 标准包提供root类,供其他类进行派生。
- 包含抽象基类Standard_Transient,这是其他Transient类root class
- 提供C++标准类型的重定义
- 提供运行时类型信息接口(RTTI)
- 提供智能指针Handle,用于管理动态对象的分配与销毁
2. OCC对C++中的标准类型进行了重定义

3. 智能指针Handle
具体使用方式:
Handle(MyClass) anObject = new MyClass();
4. OCC RTTI:运行时获取对象类型信息
他的实现是通过在类中增加预定义函数,为此OCC提供了两个宏:
5. 容器类
集合容器类位于NCollection包下,包括Array、Sequence、Map、List等数据结构。
6. 单位转换API:UnitsAPI
四、TKMath toolkit
1. gp包:提供了基础的2d、3d几何形体的定义,平时开发中用的应该比较多,主要的类包括:
- 轴:gp_Ax1、gp_Ax2、gp_Ax22d、gp_Ax2d、gp_Ax3、gp_XY、gp_XYZ
- 矢量:gp_Dir、gp_Dir2d、gp_Vec、gp_Vec2d、gp_Vec2f、gp_Vec3f
- 点:gp_Pnt、gp_Pnt2d
- 线:gp_Lin、gp_Lin2d
- 平面:gp_Pln
- 曲线:gp_Circ、gp_Circ2d、gp_Cone、gp_Elips、gp_Elips2d、gp_Parab、gp_Parab2d、gp_Hypr、gp_Hypr2d
- 曲面:gp_Cylinder、gp_Sphere、gp_Torus
- 变换:gp_Trsf、gp_Trsf2d、gp_Mat、gp_Mat2d、gp_GTrsf、gp_GTrsf2d
2. TColgp包:使用NCollection包下的容器,用typedef重新定义了gp对象容器。其每一个文件都类似于如下:
3. GeomAbs包:定义了一些枚举,包括曲线类型、曲面类型等;
4. bnd:简单包围盒、包围球;
- Bnd_Box:平行于坐标轴的包围盒;
- Bnd_OBB:沿物体方向的包围盒;