Open CASCADE Technology(简称OCCT)
一、概述
Open CASCADE是由法国Matra Datavision公司开发的CAD/CAE/CAM软件平台。具有3D曲面和实体建模,
CAD数据交换和可视化提供服务的开源软件开发平台。OCCT主要以C++类库形式对外提供功能包,并支持
c#、Tcl、java等语言扩展。同时支持跨平台软件开发部署,包括Windows(IA-32和x86-64),Linux(x86-64),
OS X / macOS(x86-64),Android(armv7和x86)和iOS(armv7,arm64)平台。
OCCT主要涵盖3D建模(CAD),制造/测量(CAM)或数值模拟(CAE)领域,可以开发二维和三维几何
建模应用程序,包括通用的或专业的计算机辅助设计CAD系统、制造或分析领域的应用程序、仿真应用
程序或图形。
二、OCCT组件包
OCCT旨在实现真正的模块化和可扩展性,主要提供以下C++类库:
- 基础数据结构(几何建模,可视化,交互式选择和特定于应用程序的服务);
- 建模算法
- (多面)网格数据处理
- 基于自由格式(IGES,STEP)的数据互操作
OCCT库可以总结为七大模块以及测试工具Draw:
- 基础类库模块(Foundation Classes)是所有其他OCCT类库的基础。
- 建模数据模块(Modeling Data)提供数据结构,以将2D和3D几何图元及其组成表示为CAD模型。
- 建模算法模块(Modeling Algorithms)包含大量的几何和拓扑算法;
- 网格模块(Mesh)实现对象的细分表示;
- 可视化模块(Visualization)为图形数据表示提供了复杂的机制;
- 数据交换模块(Data Exchange)可以与流行的数据格式进行互操作,并依靠Shape Healing来改善不同供应商的CAD软件之间的兼容性;
- 应用框架模块(Application Framework)提供了即用型解决方案,用于处理特定于应用程序的数据(用户属性)和常用功能(保存/还原,撤消/重做,复制/粘贴,跟踪CAD修改等)。
此外,Open CASCADE Test Harness(也称为Draw)为该库提供了一个入口点,并且可以用作其模块的测试工具。
基础模块
基础模块包含数据结构和服务组件所需的高层次抽象类,主要有:
- 基本类型,如布尔,字符,整数或实数;
- ASCII和Unicode字符串和字符串类处理;
- 收集类,用于处理静态或动态调整大小的数据聚合,如数组,列表,队列,几何和哈希表;
- 提供常用数据算法和基础线性代数计算(加法,乘法,向量和矩阵变换,求解线性代数系统等)
- 代表实物数量和支持日期和时间信息的基本类型;
- 基本几何类型提供定义和操纵基本数据结构的基本几何和代数实体的实现;
- 描述异常情况的异常类,当程序正常执行被放弃时。
此模块还提供各种通用服务,例如:
- 安全处理动态创建的对象,确
- 安全处理动态创建的对象,确保自动删除未引用的对象(智能指针);
- 可配置的优化内存管理器,提高了密集使用动态创建对象的应用程序的性能;
- 扩展的运行时类型信息(RTTI)机制维护完整的类型层次结构,并提供对其进行迭代的方法;
- C++流的封装;
- 通过特定的分配器自动管理堆内存;
- 表达式的基本解释器,有助于创建定制的脚本工具,表达式的通用定义等;
- 用于处理配置资源文件和可自定义的消息文件的工具,有助于在应用程序中提供多语言支持;
- 进度指示和用户中断界面,甚至使低级算法也有可能以通用且方便的方式与用户通信;
建模数据
建模数据提供用于3D对象的边界表示(BRep,全称:boundary representation)的数据结构。
在BRep中,形状表示为拓扑内几何体的集合。几何形状应理解为形状的数学描述,例如曲线和曲面(简单或规范,贝塞尔曲线,NURBS等)。拓扑是将几何对象绑定在一起的数据结构。
几何类型和实用程序为以下各项提供几何数据结构和服务:
- 点,向量,曲线和曲面的描述:
- 使用轴或坐标系将其定位在3D空间中
- 通过应用平移,旋转,缩放及其组合变换几何体
- 通过差值和逼近创建参数曲线和曲面;
- 直接构造算法;
- 将曲线和曲面转换为NURBS形式;
- 计算2D和3D曲线上的点坐标;
- 计算几何对象之间的极值。
拓扑定义了简单几何实体之间的关系。形状是基本的拓扑实体,可以分为多个分量(子形状):
- 顶点-一种零维形状,对应于几何中的点;
- 边-对应于曲线的形状,在每一个由顶点包围的末端;
- 线框-一系列由顶点连接的边;
- 面-部分(二维)平面或者(三维)表面,被一个闭合线框约束;
- 壳-线框边界线的边连接的面的集合
- 实体-与一个壳绑定的三维空间的一部分
- 复合实体-实体的集合
可以将复杂形状定义为简单实体的组合。
建模算法
建模算法模块将几何建模中使用的各种拓扑和几何算法分组。基本上,Open CASCADE Technology中有两组算法:
- 实际设计中使用的高级建模例程;
- 低级数学支持功能用作建模API的基础;
- 低级几何工具提供以下算法:
- 计算两条曲线,曲面或一条曲线与一个曲面的交点;
- 将点投影到2D和3D曲线上,将点投影到曲面上,将3D曲线投影到曲面上;
- 根据约束构造直线和圆;
- 根据约束(插值,逼近,蒙皮,间隙填充等)构造自由形式的曲线和曲面;
- 低级拓扑工具提供以下算法:
- 棋盘形形状;
- 检查形状的正确定义;
- 确定形状的局部和全局特性(导数,惯性特性等);
- 执行仿射变换;
- 查找边缘所在的平面;
- 将形状转换为NURBS几何;
- 从单独的拓扑元素(面和边)缝制连接的拓扑(壳和线)。
顶级API提供以下功能
- 基元的构造
- 盒子
- 棱柱
- 圆柱
- 椎体
- 球体
- 环
- 运动学建模:
- 棱柱-线性扫掠
- 旋转-旋转扫掠
- 管道-一般形式扫掠
- 放样
- 布尔运算,允许从源形状的组合创建新形状
- 交:包含S1和S2中的所有点;
- 并:包含S1或S2中的所有点;
- 差:包含S1中而不是S2中的所有点
- 本地修改的算法
- 挖洞
- 壳
- 使用拔模角创建锥形形状;
- 在形状边缘(包括半径可变的弦)上制作圆角和倒角的算法。
- 用于创建机械特征的算法,即沿着平面或旋转表面的凹陷,突起,肋和凹槽或缝隙
网格
网格模块提供了以三角形小平面的形式处理对象的细分表示的功能,该模块包含: - 用于存储与形状关联的表面网格数据的数据结构以及用于处理它们的基本算法;
- 数据结构和算法,用于从BRep对象(形状)构建三角形曲面网格;
- 用于显示带有相关的预处理器和后处理器数据(标量或矢量)的网格的工具。
Open CASCADE Technology包括两个网状转换器: - VRML转换器将Open CASCADE形状转换为VRML 1.0文件(虚拟现实建模语言)。
- STL转换器将Open CASCADE形状转换为STL文件。
Open CASCADE SAS还提供高级网格产品: - 打开CASCADE Mesh Framework(OMF)
- 快速网格
可视化
可视化模块提供了即用型算法,可以根据各种对象(形状,网格等)创建图形表示。在Open CASCADE Technology中,
可视化基于CAD数据及其图形表示的分离。可以自定义演示文稿,以考虑到您的应用程序的特殊性。
该模块还支持快速而强大的交互式选择机制。
OCCT提供的查看工具范围从处理基本几何形状和拓扑结构的低级工具(例如具有控制点和节点的NURBS可视化,渲染等值线
以估计参数化的速度和质量,或者渲染边缘的参数化轮廓)到使用光线跟踪实时高质量渲染模型的高级工具:阴影,反射,
透明度,抗锯齿等。
这里只是几个例子:
- 相机驱动的视图投影和方向。可以在透视,正投影和立体投影之间进行选择。
- 使用递归Whitted算法和有限体积层次结构有效优化结构的实时光线跟踪技术。
- 支持GLSL着色器。与其他任何OpenGL资源一样,着色器管理是全自动的。
- 支持标准和自定义材料,由透明度,漫反射,环境和镜面反射和折射率定义。后者允许实现透明材料,例如玻璃,钻石和水。
- 通过以下算法优化渲染性能:
- 查看视锥剔除,在相机以外的部分将跳过渲染阶段
- 背面剔除,减少了三角形的渲染数量并消除了形状边界处的瑕疵。
- 通过平面方程系数定义裁剪平面。能够为水平或单个裁剪平面上的横截面定义视觉属性。
- 可以灵活调整3D视图中尺寸的外观。3D文本对象将给定的文本字符串表示为模型空间中的真实3D对象。
数据交换
数据交换允许开发基于OCCT的应用程序,该应用程序可以通过在外部数据之间读写CAD模型来与其他CAD系统进行交互。无论外部
数据的质量如何,还是对内部表示的要求(例如,数据类型,可接受的几何误差等),交换都可以顺利进行。
数据交换以模块化的方式组织成一组接口,这些接口符合各种CAD格式:IGES,STEP,STL,VRML等。这些接口允许基于OCCT的
软件与各种CAD/PDM软件包交换数据,从而维护良好的互操作性。
- 标准化的数据交换界面允许查询和检查输入文件,将其内容转换为CAD模型并在完全转换的形状上运行有效性检查。当前支持以下格式。
- STEP(AP203:机械设计,涵盖通用3D CAD; AP214:汽车设计)
- IGES (up to 5.3)
- glTF, OBJ, VRML and STL meshes.
- 扩展数据交换(XDE)允许翻译附加到几何数据的其他属性(颜色,图层,名称,材料等)。
- 高级数据交换组件,以支持使用以下专有格式的CAD软件的互操作性和数据适配(也使用Shape Healing):
- ACIS SAT
- Parasolid
- DXF
- IFC
- JT
这些组件基于与STEP和IGES的接口相同的体系结构
形状修复
形状修复库提供的算法可校正和调整从其他CAD系统导入OCCT的形状的几何形状和拓扑。
形状修复算法包括但不限于以下操作:
- 分析形状特征,尤其是通过分析几何对象和拓扑来识别不符合OCCT几何和拓扑有效性规则的形状:
- 检查边和线的一致性;
- 检查线在线框中的顺序;
- 检查面的方向;
- 分析形状公差;
- 识别线框中的闭合和断开边界。
- 修复不正确或不完整的形状:
- 提供3D曲线与其对应的参数曲线之间的一致性;
- 修复有缺陷的线框;
- 使形状符合用户定义的公差值;
- 填补补丁和边之间的缝隙。
- 升级和更改形状特征:
- 降低曲线和表面度;
- 分割形状以获得C1连续性;
- 将任何类型的曲线或曲面转换为Bezier或B样条曲线或曲面并反向转换;
- 拆分封闭曲面和旋转曲面。
子域 | 描述 | 对形状的影响 |
---|---|---|
分析 | 探索形状属性,计算形状特征,检测是否违反OCCT要求 | 形状本身未修改 |
修复 | 固定形状以满足OCCT要求 | 形状可能会更改其原始形式:修改,移除或创建子形状等) |
升级 | 改进形状以适合某些特定算法 | 形状被替换为新形状,但是在几何形状上它们是相同的 |
定制化 | 修改形状表示以适应特定需求 | 形状不会更改,只有其内部表示形式的数学形式会更改 |
处理 | 通过用户可编辑的资源文件进行形状修改的机制 |
应用框架
Open CASCADE应用程序框架(OCAF)根据应用程序/文档范式处理应用程序数据。由于以下现成的功能和服务,
它使用关联引擎来简化CAD应用程序的开发:
- 管理应用程序数据的数据属性,可以根据开发需求进行组织;
- 数据存储和持久性(打开/保存);
- 可以修改和重新计算文档中的属性。使用OCAF,可以轻松地表示模型中的修改历史和参数依赖性。
- 可以管理多个文档;
- CAD / CAM / CAE应用程序共有的预定义属性(例如,存储尺寸);
- 撤消重做和复制粘贴功能。
- 由于OCAF处理应用程序结构,因此唯一的开发任务是创建特定于应用程序的数据和GUI。
OCAF与其他任何CAD框架的不同之处在于应用程序数据的组织,因为那里的数据结构基于参考键而不是形状。
在模型中,诸如形状数据,颜色和材质之类的属性将附加到比形状深的不变结构上。形状对象成为Shape
属性的值,就像整数是Integer属性的值和字符串是Name属性的值一样。
OCAF将这些属性组织并嵌入到文档中。OCAF文件又由OCAF应用程序管理。
Draw Test Harness
Draw是用于OCCT库的便捷测试工具。在构建整个应用程序之前,可以将其用于测试各种算法并为其原型设计。这包括:
- 基于TCL语言的命令解释器;
- 大量的2D和3D查看器;
- 一组预定义的命令。
- 查看器支持诸如缩放,平移,旋转和全屏视图之类的操作。
基本命令提供通用服务,例如:
- 获得帮助;
- 从文件中评估脚本;
- 在文件中捕获命令;
- 管理观点;
- 显示对象。
此外,Test Harness还提供命令来创建和操纵曲线和曲面(几何)和形状,访问可视化服务,使用OCAF文档,执行数据交换等。
您可以添加自定义命令来测试或展示你开发的任何新功能。
reference
OCC官网
百度百科
OpenCasCade 简介
Technical Overview