OCC简介
编码规范 工具集前缀TK,一个工具集类似于一个*.dll文件,类名<package-name>_<class-name>
模块预览
FoundationClasses
提供了一些数据结构和功能,由于创建OCC的时候还没有STL,所以使用了自定义的容器
- 包括基本类型定义(Boolean、字符、整形)
- 容器类(Array、List、Set等)
- 基本数值算法和线性代数计算
- 基本代数几何的数据结构(gp_Pnt)
- 异常处理类
- 其他通用功能(智能指针、内存池、表达式解析器)
- 重要的lib:
- 解析曲线曲面计算的EICLib、EISLib
- B样条曲线曲面计算BSplCLib、BSplSLib
- 幂次多项式计算PLib
- 数值计算math
ModelingData
该模块为边界表示(BRep)的3D模型提供数据结构。BRep模型是由拓扑和几何两部分构成,几何可以理解成数学表达,拓扑表示对象的关联性。
拓扑的简单理解
拓扑信息描述形体上点、边、面的连接关系
想象使用橡皮泥制作球体,球体上各点的连接关系(谁和谁相连,如何连)已经确定,将该球体压扁变成椭球,此时椭球上点的连接关系任仍然没有变,仅仅是距离等改变了,可以说该球体和该椭球的拓扑相同
拓扑学的物体表面都是可以无限延展的,使用橡皮泥来理解拓扑,有以下规则:
1.不允许在橡皮泥上打洞
2.不允许将橡皮泥上的两个点捏合成一个点
OCC中拓扑和几何共同使用目的是使用一个边界来限定一个几何区域以及将不同区域分组来定义一个复杂的形状
一个shape可以定义为基本拓扑,它可以被分解为以下组件(sub-shapes)
- Vertex:对应一个几何点
- Edge:由两个Vertex限定几何曲线(curve)得到的边界
- Wire:由相连的Edge形成闭合的环
- Face:由Wire限定得到的有界面
- Shell:多个相连的面形成的壳
- Solid:由壳限定得到一个闭合体
- Compound Solid:多个面相连的Solid
ModelingAlgorithms
包含拓扑算法:
- 模型离散化
- 计算模型属性(长度、面积、体积)
- 刚性变换(移动、旋转)
- 将模型几何数据转换成NURBS形式
- 创建基本体
- Box、Cylinder、Cone、Sphere等
- 扫略Sweep
- Prism-Linear Sweep
- Revolution-Rotational Sweep
- Pipes-General-form Sweep
- 布尔运算
- Common
- fuse
- cut
Visualization
- 提供BRep模型及Mesh数据的可视化功能
- 支持快速交互选择
- Camera驱动的投影处理、便于正交投影、透视投中设置投影模式,也便于实现视图的交互功能,如平移、缩放
- 设置模型的颜色、材质及透明度
- 提供三维模型中尺寸标注功能
Data Exchange
支持以下格式的导入导出
- STEP
- IGES
- gITF
- VRML
- OBJ
- STL
ApplicationFramework
基于程序、文档模式,提供快速开发框架
- 灵活的数据框架
- 数据的存储和持久化(open/save)
- 多文档
- undo-redo
- copy-paste
Draw
Draw Test Harness是一个便于测试OCCT库的功能工具
- 基于脚本TCL/TK
- 2D和3D视图
- 自定义命令
- 创建模型、曲线、曲面
- 造型算法命令
Draw Test Harness中实现了OCCT的各个模块的功能命令,可以创建和现实模型,导入导出模型数据,OCAF框架的使用