OCC模块介绍
1、OCCT介绍
模块:
- ApplicationFramework
- TKBin
- TKBinL
- TKBinTObj
- TKCAF
- TKCDF
- TKLCAF
- TKStd
- TKStdL
- TKTObj
- TKVCAF
- TKXml
- TKXmlL
- TKXmlTObj
- DataExchange
- TKBinXCAF
- TKRWMesh
- TKSTEP
- TKSTEP209
- TKSTEPAttr
- TKSTEPBase
- TKSTL
- TKVRML
- TKXCAF
- TKXDEIGES
- TKXDESTEP
- TKXmlXCAF
- TKXSBase
- Draw
- DRAWEXE
- TKDCAF
- TKOpenGlText
- TKQADraw
- TKObjDRAW
- TKTopTest
- TKViewerTest
- TKXDEDRAW
- TKXSDRAW
- FoundationClasses
- TKernel
- TKMath
- ModelingAlgorithms
- TKBO
- TKBool
- TKFeat
- TKFillet
- TKGeomAlgo
- TKHLR
- TKMesh
- TKOffset
- TKPrim
- TKShHealing
- TKTopAlgo
- TKXMesh
- ModelingData
- TKBRep
- TKG2d
- TKG3d
- TKGeomBase
- Visualization
- TKMeshVS
- TKOpenGl
- TKService
- TKV3d
1、基础类——FoundationClasses
基础类模块包含更高级别的开放级联技术类使用的数据结构和服务:
- 基元类型,例如布尔值、字符、整数或实数;
- 处理 Unicode 字符串的字符串类;
- 处理静态或动态大小的数据聚合的集合类,例如数组、列表、队列、集合和哈希表(数据映射)。
- 提供常用数值算法和基本线性代数计算(加法、乘法、向量和矩阵的转置、求解线性系统等)的类。
- 基本类型,如颜色、日期和时间信息;
- 提供定义和操作基本数据结构的基本几何和代数实体的实现的基元几何类型。
- 描述程序正常执行被放弃的情况的异常类;
该模块还提供各种通用服务,例如:
- 安全处理动态创建的对象,确保自动删除未引用的对象(智能指针);
- 标准和专用内存分配器;
- 扩展运行时类型信息 (RTTI) 机制,维护完整的类型层次结构并提供迭代它的方法;
- 封装C++流;
- 表达式的基本解释器,便于创建自定义脚本工具、表达式的通用定义等;
- 用于处理配置资源文件和可自定义消息文件的工具,有助于应用程序中的多语言支持;
- 进度指示和用户中断接口,即使是低级算法也可以以通用和方便的方式与用户通信;
- 和许多其他…
2、模型数据——Modeling Data
模型数据提供数据结构,用于在 3D 模式下实现对象的边界表示 (BRep)。在 BRep 中,形状表示为拓扑中几何图形的聚合。几何形状被理解为形状的数学描述,例如曲线和曲面(简单或规范,贝塞尔,NURBS等)。拓扑是将几何对象绑定在一起的数据结构。
几何类型和实用程序为以下方面提供几何数据结构和服务:
- 点、向量、曲线和曲面的描述:
- 它们使用轴或坐标系在 3D 空间中的定位,以及
- 它们的几何变换,通过应用平移、旋转、对称、缩放变换及其组合。
- 通过插值和拟合创建参数化曲线和曲面;
- 直接构造算法;
- 将曲线和曲面转换为 NURBS 形式;
- 计算二维和三维曲线上的点坐标;
- 计算几何对象之间的极值。
拓扑定义简单几何实体之间的关系。形状是基本的拓扑实体,可以分为组件(子形状):
- 顶点 – 对应于一个点的零维形状;
- 边缘 – 对应于曲线的形状,每端都有一个顶点;
- 线 – 由其顶点连接的一系列边;
- 面 – 由导线边界的平面(2D)或曲面(3D)的一部分;
- 壳 – 由其导线边界边缘连接的面的集合;
- 实体 – 由壳限制的 3D 空间的有限封闭部分;
- 复合实体 – 由壳边界面连接的实体集合;
- 复合 – 任意类型的形状的集合。
复杂形状可以定义为简单实体的组件(复合)。3D 几何模型可以以 OCCT 原生 BREP 格式存储。
3、模型算法ModelingAlgorithms
建模算法模块对几何建模中使用的各种拓扑和几何算法进行分组。基本上,开放级联技术中有两组算法:
- 实际设计中使用的高级建模例程;
- 用作建模 API 基础的低级数学支持函数。
低级几何工具提供了以下算法:
- 计算两条曲线、曲面或一条曲线与一个曲面的交点;
- 将点投影到 2D 和 3D 曲线上,将点投影到曲面上,将 3D 曲线投影到曲面上;
- 根据约束构造直线和圆;
- 根据约束(插值、拟合、蒙皮、间隙填充等)构建自由形式的曲线和曲面。
低级拓扑工具提供了算法,这些算法:
- 细分形状;
- 检查形状的正确定义;
- 确定形状的局部和全局属性(导数、质量惯性属性等);
- 执行仿射变换;
- 查找边所在的平面;
- 将形状转换为 NURBS 几何图形;
- 从单独的拓扑元素(面和边缘)缝合连接的拓扑(壳和线)。
顶级 API 提供以下功能:
-
基元的构造:
- 盒;
- 棱镜;
- 圆柱;
- 圆台;
- 球;
- 圆环。
-
运动学建模:
- 棱镜 – 线性扫描;
- 旋转 – 旋转扫描;
- 管道 – 一般形式的扫描;
- 放样。
-
布尔运算,允许从源形状的组合创建新形状。对于两个形状 S1 和 S2:
- 并集:包含 S1 和 S2 中的所有点;
- 交集:包含 S1 或 S2 中的所有点;
- 差集:S1 中而不是 S2 中的所有点。
-
用于局部修改的算法,例如:
- 挖空;
- 壳状化;
- 使用拔模角度创建锥形形状;
- 用于在形状边缘(包括具有可变半径(弦)的圆角和倒角)上制作圆角和倒角的算法。
- 用于创建机械特征的算法,即沿平面或旋转表面的凹陷、突起、肋骨和凹槽或槽。
网格工具包提供了以三角形刻面的形式处理对象的细分表示的功能。该工具包包含:
-
用于存储与形状相关的表面网格数据的数据结构以及处理它们的基本算法;
-
数据结构和算法,用于从 BRep 对象(形状)构建三角形表面网格;
-
用于显示具有相关处理器前和后处理器数据(标量或矢量)的网格的工具。
Open CASCADE SAS还提供高级网状产品:
- Open CASCADE Mesh Framework (OMF)
- 快速网格
4、可视化
可视化模块提供即用型算法,从各种对象创建图形演示:形状、网格等。
在开放式级联技术中,可视化基于CAD数据的分离及其图形表示。该模块还支持快速而强大的交互式选择机制。
可视化模块依赖于以下关键工具包:
- TKV3d 工具包定义了一个名为(应用程序交互式服务* (AIS) )的高级 API,用于处理交互式对象。
- TKService 工具包定义了一个低级 API,用于从基元数组管理和创建演示文稿。此工具包定义了一个抽象层,用于定义负责实际呈现的任意图形驱动程序。
- TKOpenGl 工具包使用 OpenGL 和 OpenGL ES 库实现图形驱动程序。
虽然低级 API 使用基元数组(三角形、线条、点)进行操作,但更高级别包括用于为 B-Rep 形状(阴影和线框)构建演示文稿的服务。标准交互式对象的完整列表包括拓扑形状、网格表示、各种尺寸、操纵器等。它为快速应用程序开发提供了坚实的基础,而灵活且可扩展的 API 允许开发高度定制的特定于应用程序的演示文稿。
以下是OCCT可视化功能的几个示例:
-
摄像机驱动的视图投影和方向。支持透视、正射和立体投影。
-
支持通用(漫反射/环境/镜面反射)和 PBR 金属粗糙度材料模型。
-
可以在3D视图中灵活调整尺寸的外观。3D 文本对象将给定的文本字符串表示为模型空间中真正的 3D 对象。
-
通过平面方程系数定义修剪平面。能够在水平或单个修剪平面上定义横截面的视觉属性。
-
支持内置和特定于应用程序的 GLSL 着色器。
-
通过以下算法优化渲染性能:
- 视图视锥剔除,在渲染阶段跳过相机外部的演示文稿;
- 背面剔除,可减少三角形的渲染数量并消除形状边界处的伪影。
-
实时光线追踪技术采用递归惠特德算法和有界体积层次的有效优化结构。
5、数据交换
数据交换允许开发基于 OCCT 的应用程序,这些应用程序可以通过向外部数据写入和读取 CAD 模型来与其他 CAD 系统进行交互。
数据交换以模块化方式组织为一组符合各种CAD格式的接口:IGES,STEP,STL,VRML等。这些接口允许基于 OCCT 的软件与各种 CAD/PDM 软件包交换数据,从而保持良好的互操作性水平。该模块处理CAD系统之间的互操作性的各种问题,这些问题是由于模型有效性标准和内部表示要求的差异引起的。
- 标准化的数据交换接口允许查询和检查输入文件,将其内容转换为CAD模型,并对完全转换的形状运行有效性检查。目前支持以下格式:
- STEP(AP203:机械设计,涵盖一般3D CAD;AP214: 汽车设计;AP242)。
- IGES(最高 5.3)。
- glTF 2.0 读写器。
- OBJ 网状文件阅读器。
- VRML转换器将Open CASCADE形状转换为VRML 1.0文件(虚拟现实建模语言)。
- STL 转换器将打开级联形状转换为 STL 文件。STL(STtereoLithography)格式广泛用于快速原型制作(3D打印)。
- 扩展数据交换(XDE) 允许转换附加到几何数据的其他属性(颜色、图层、名称、材料等)。
- 除了标准数据交换接口外,还提供高级数据交换组件,以支持与使用以下专有格式的CAD软件的互操作性和数据适应(也使用形修复):
- ACIS SAT
- Parasolid
- DXF
- IFC
- JT
这些组件基于与 STEP 和 IGES 接口相同的体系结构。
形状修复库提供算法来校正和调整从其他 CAD 系统导入到 OCCT 的形状的几何形状和拓扑。
形状修复算法包括但不限于以下操作:
- 通过分析几何对象和拓扑,分析形状特征,特别是识别不符合 OCCT 几何和拓扑有效性规则的形状:
- 检查边缘和电线的一致性;
- 检查导线中的边缘顺序;
- 检查面边界的方向;
- 分析形状公差;
- 标识边界中的闭合和开放导线。
- 修复不正确或不完整的形状:
- 提供 3D 曲线与其相应参数曲线之间的一致性;
- 修复有缺陷的电线;
- 将形状拟合为用户定义的公差值;
- 填充补丁和边缘之间的间隙。
- 升级和更改形状特性:
- 减小曲线和表面度;
- 分割形状以获得C1连续性;
- 将任何类型的曲线或曲面转换为贝塞尔曲线或 B 样条曲线或曲面并返回;
- 分割闭合曲面和旋转曲面。
形状修复的每个子域都有自己的功能范围:
子域 | 描述 | 对形状的影响 |
---|---|---|
分析 | 探索形状属性,计算形状特征,检测违反OCCT要求的情况。 | 形状本身不会被修改。 |
定影 | 固定形状以满足 OCCT 要求。 | 形状可能会改变其原始形式:修改、删除或创建子形状等) |
升级 | 改进形状以适应某些特定算法。 | 形状被替换为新的形状,但在几何上它们是相同的。 |
定制 | 修改形状表示以满足特定需求。 | 形状不会被修改,只是改变了其内部表示的数学形式。 |
加工 | 通过用户可编辑的资源文件修改形状的机制。 |
6、应用框架
开放式级联应用程序框架 (OCAF) 基于应用程序/文档范例处理应用程序数据。它使用关联性引擎来简化CAD应用程序的开发,这要归功于以下即用型功能和服务:
- 管理应用数据的数据属性,可根据开发需求进行组织;
- 数据存储和持久性(打开/保存);
- 可以修改和重新计算文档中的属性。使用 OCAF,可以轻松表示模型中修改和参数依赖关系的历史;
- 可以管理多个文档;
- CAD/CAM/CAE 应用程序通用的预定义属性(例如存储尺寸);
- 撤消-重做和复制-粘贴功能。
由于 OCAF 处理应用程序结构,因此唯一的开发任务是创建特定于应用程序的数据和 GUI。
OCAF在应用程序数据的组织方面与任何其他CAD框架不同,因为数据结构基于引用键而不是形状。在模型中,形状数据、颜色和材料等属性附加到比形状更深的不变结构上。形状对象成为 Shape 属性的值,就像整数是 Integer 属性的值,字符串是 Name 属性的值一样。
OCAF将这些属性组织并嵌入到文档中。OCAF文件则由OCAF应用程序管理。
7、绘制测试工具
测试工具或绘制是 OCCT 库的便捷测试工具。它可用于在构建整个应用程序之前测试和原型化各种算法。它包括:
- 基于 TCL 语言的命令解释器;
- 许多2D和3D查看器;
- 一组预定义的命令。
查看器支持缩放、平移、旋转和全屏视图等操作。
基本命令提供通用服务,例如:
- 获得帮助;
- 从文件中评估脚本;
- 捕获文件中的命令;
- 管理视图;
- 显示对象。
此外,测试工具还提供了用于创建和操作曲线和曲面(几何图形)和形状、访问可视化服务、处理 OCAF 文档、执行数据交换等的命令。