基于OpenCASCADE自制三维建模软件(二)Open CASCADE

概述

Open CASCADE Technology(OCCT)是一个面向对象的C++类库,用于快速开发设计领域的CAD/CAM/CAE应用程序。通常OCCT应用于开发处理计算机辅助设计(CAD)系统中的2D或3D几何建模制造或分析应用仿真应用,甚至插图工具
在这里插入图片描述
OCCT库的设计具有模块化和可扩展的特性,其提供的C++类有:

  • 基本数据结构(几何建模、可视化、交互选择和应用特定服务)
  • 建模算法
  • 处理网格数据
  • 数据与中间文件的互操作性(IGES, STEP)

C++类和其他类型被分组到中。包被组织成工具包(库),我们可以将应用程序链接到其中。工具包被分成七个模块,其结构如下图所示:
在这里插入图片描述

一、基础类(Foundation Classes)

基础类模块是所有其他OCCT类的基础,包含高级Open CASCADE类使用的数据结构和服务:

  • 基本类型,如布尔、字符、整数或实数
  • 字符串类,处理ASCII和Unicode字符串的
  • 数据集类,处理静态或动态大小的集合数据,如数组、列表、队列、集和哈希表
  • 算法类,提供常用的数值算法和基本的线性代数计算
  • 物理量时间日期信息的基本类
  • 基本几何类,提供定义和操作基本数据结构的基本几何和代数实体的实现。
  • 异常处理类,对程序运行过程中产生的异常进行处理

基础类提供各种通用服务,比如自动动态内存管理、集合、异常处理、通过向下转型和插件创建。
基础类包括以下内容:

1.1.根类(Root Classes)

根类是基本的数据类型和类,其它所有类都是依此而建立的。它提供以下类型和类:

  • 基本类型,如布尔型(Boolean)、字符型(Character)、整型(Integer)或实数(Real)等
  • 动态对象的安全处理,确保自动删除未引用的对象
  • 可设置的内存优化管理器。提高了大量使用动态创建对象的应用程序的性能
  • 扩展的运行时类型识别机制,它有助于创建复杂的程序
  • 异常管理
  • C++流的封装

根类主要在StandardMMgt 包中实现。

1.2.字符串(Strings)

字符串是基于ASCII和Unicode处理动态大小的字符序列的类。字符串也可以由句柄操作,因此可以共享。字符串在TCollection包中实现。

1.3.集合(Collections)

集合是处理动态大小的数据聚合的类。集合类是通用的,也就是说,它们定义了一种结构和算法,允许拥有多种对象,而不需要继承于唯一跟类型,这与C++模板相似。当需要使用给定类型对象的集合时,必须对这个元素的指定类型进行实例化。一旦编译了此声明,所有基于这个通用集合的函数都可以在集合对象中实现。
集合包括广泛的泛型类,如运行时大小的数组(arrays)、列表(lists)、堆栈(stacks)、队列(queues)、集(sets )和哈希表(hash maps)。集合在TCollectionNCollection包中实现。

1.4.标准对象的集合(Collections of Standard Objects)

TColStd包使用Standard 包中的对象或TCollection包中的字符串,为TCollection包中常用的通用类型提供实例化。

1.5。向量和矩阵(Vectors and Matrices)

向量和矩阵类提供了涉及向量和矩阵的常用数学算法和基本计算(加法、乘法、转置、求逆等)。

1.6.基本几何类型(Primitive Geometric Types)

基本几何类型提供了基本几何实体和代数实体的实现。这些实现符合STEP(Standard Exchange of Product data model,即产品数据模型的交换标准)。它们提供基本几何Shape 的描述(点、向量、直线、圆与圆锥、平面与基本曲面、通过坐标轴或坐标系使Shape 在平面上或空间中定位)和Shape 几何变换的定义与应用(平移、旋转、对称、缩放、复合变换、代数计算工具)。

1.7.常用数学算法(Common Math Algorithms)

常用数学算法为那些经常使用的数学算法提供C++实现。这些包括:

  • 求解一组线性代数方程的算法
  • 求一元或多元函数的最小值的算法
  • 求解非线性方程或非线性方程组的算法
  • 求矩阵特征值和特征向量的算法

1.8.异常(Exceptions)

提供了常用异常类的层次结构,所有这些都基于异常的根类,Failure类。异常类描述了函数运行期间可能发生的异常情况。发生异常时,程序将不能正常运行。针对这种情况执行的操作称为异常处理。

1.9.数量(Quantities)

支持日期和时间信息的各种类,以及表示大多数物理量(如长度、面积、体积、质量、密度、重量、温度、压力等)的基本类型。

1.10.应用服务组件(Application services)

基础类还包括一些低层服务的实现,这些服务可以使用Open CASCADE创建可定制的、用户友好的应用程序。这些包括:

  • 单元转换工具,为处理数量和相关物理单元提供了统一的机制:检查单元兼容性,及执行不同单元之间的值转换,等等
  • 表达式的基本解释器,便于创建自定义脚本工具,表达式的通用定义,等等
  • 处理配置资源文件和可自定义消息文件的工具,使应用程序更容易提供对多语言的支持
  • 进程指示和用户中断接口,甚至为底层算法提供了一种通用和便利的方式与用户通信的可能性

二、建模数据(Modeling Data)

建模数据提供数据结构来实现三维对象的边界表示(BRep)。在BRep中,形状表示为拓扑中的几何集合。几何被理解为一个形状的数学描述,如曲线和曲面(简单或标准,Bezier,NURBS等)。拓扑是将几何对象绑定在一起的数据结构。
几何类型和实例为以下提供了几何数据结构和服务:

  • 点、向量、曲线、曲面描述
  • 通过插值和近似建立参数曲线和曲面
  • 直接构造算法
  • 将曲线和曲面转换为NURBS形式
  • 二维和三维曲线上点坐标的计算
  • 几何对象间极值的计算

拓扑定义了简单几何实体之间的关系。形状是一个基本的拓扑实体,可以分为组件(子形状):

  • 顶点——与点对应的零维形状;
  • 边——与曲线相对应的形状,在每条边上都有一个顶点;
  • 线——由顶点连接的边缘序列;
  • 面——平面(二维)或曲面(三维)的一部分,由线包围;
  • 外壳——由金属线边界的边缘连接的面集合;
  • 实体——三维空间有限的封闭部分,以壳为界;
  • 复合固体——由外壳边界的面连接的固体的集合。

复杂形状可以定义为简单形状实体的集合。

三、建模算法(Modeling Algorithms)

建模算法模块组被广泛用于几何建模的拓扑和几何算法。在Open CASCADE中,基本上有以下算法:

  • 在实际设计中使用的高级建模例程
  • 作为建模API基础的底层数学支持函数
  • 底层几何工具算法
  • 底层拓扑工具算法

顶级API提供以下功能:

  • 建模基本类型

    • 盒子
    • 棱镜
    • 气缸
    • 球体
    • 环面
  • 运动学建模

    • 棱柱
    • 旋转
    • 管道
    • 放样
      Shapes containing pipes with variable radius produced by sweeping
  • 布尔运算,它允许从源形状的组合中创建新形状。对于S1和S2两种形状:

    • 交集(Common) 包含S1和S2中的所有点
    • 并集(Fuse) 包含S1或S2中的所有点
    • 差集(Cut) 包含S1中所有不在S2中的点
  • 局部修改的算法,例如:

    • 挖空(Hollowing)
    • 成壳(Shelling)
    • 使用拔模角度创建锥形形状
    • 在形状边缘上制作圆角和倒角的算法
  • 用于创建机械特征的算法,即沿平面或旋转表面的凹陷、前凸、挡边和槽
    在这里插入图片描述

四、网格(Mesh)

网格模块提供了处理三角形面片形式的对象的镶嵌表示的功能。这个模块包含:

  • 用于存储与形状相关的曲面网格数据的数据结构和处理这些数据的基本算法
  • 利用BRep对象构造三角曲面网格的数据结构和算法
  • 用于显示与相关的预处理和后处理数据(标量或向量)的网格的工具

Open CASCADE包括两个网格转换器:

  • VRML转换器将Open CASCADE的形状转换为VRML 1.0文件(虚拟现实建模语言)。两种表示模式是可能的:阴影模式(用网格算法计算的三角形集表示形状)和线框模式(用曲线集表示形状)
  • STL转换器将Open CASCADE的形状转换为STL文件。STL (STtereoLithography)格式广泛应用于3D打印
    在这里插入图片描述

五、可视化(Visualization)

可视化模块提供了从各种对象(形状、网格等)创建图形表示的现成算法。
在Open CASCADE Technology中,可视化是基于CAD数据的分离及其图形表示。支持快速强大的交互选择机制。
视图提供从低级工具使用基本的几何和拓扑(如NURBS可视化与控制点和节点,绘制等值线估计参数化的速度和质量,或边缘呈现参数剖面)到高级工具实时高质量渲染的光线追踪模型:阴影、反射、透明度、抗锯齿等。
这里有几个例子:

  • 相机驱动的视图投影和定位,能够在透视、正投影和立体投影之间进行选择
  • 实时光线跟踪技术采用递归Whitted算法和有界体层次结构的有效优化结构
    Real time visualization by ray tracing method
  • 支持GLSL着色器。像任何其他OpenGL资源一样,着色器管理是完全自动的。

Fragment shader implementing custom clipping surface

  • 支持标准和定制材料,由透明度,漫反射,环境和镜面反射和折射率定义。后者允许实现透明材料,如玻璃,钻石和水。
    Simulation of a glass cover
  • 能够在三维视图中灵活调整尺寸外观。3D文本对象将给定的文本字符串表示为模型空间中的真实3D对象。
    Display of shape cross-section and dimensions

六、标准的数据转换(Data Exchange)

数据交换模块与流行的数据格式互操作,依靠形状愈合来提高不同厂商CAD软件之间的兼容性;
数据交换允许开发基于OCCT的应用程序可以通过编写和从外部数据读取CAD模型来与其他CAD系统交互。不管外部数据的质量或对其内部表示的要求如何(例如数据类型、可接受的几何误差等),交换都可以顺利地运行。
Shape imported from STEP
数据交换以模块化的方式组织为一组接口,这些接口符合各种CAD格式:IGES、STEP、STL、VRML等。该接口允许基于OCCT的软件与各种CAD/PDM软件包交换数据,保持了良好的互操作性。

  • 标准化的数据交换接口允许查询和检查输入文件,将其内容转换为CAD模型,并对完全转换后的形状运行有效性检查。目前支持以下格式。
    • STEP
    • IGES
    • VRML和STL网格
  • 扩展数据交换(XDE)允许转换附加到几何数据的附加属性(颜色、层、名称、材质等)。
  • 除了标准的数据交换接口外,高级数据交换组件也可用来支持与CAD软件的互操作性和数据适配(也使用形状修复),使用以下专有格式:
    • ACIS SAT
    • Parasolid
    • DXF

这些组件基于与使用STEP和IGES的接口相同的体系结构。

七、应用程序框架(Application Framework)

Open CASCADE Application Framework (OCAF)基于应用程序/文档范式处理应用程序数据。它使用联想引擎,简化了CAD应用程序的开发,这要归功于以下即时可用的功能和服务:

  • 管理应用数据的数据属性,可以根据开发需求进行组织;
  • 数据存储和持久性(打开/保存)
  • 修改和重新计算文档中的属性的可能性。使用OCAF可以很容易地表示模型中的修改历史和参数依赖关系
  • 管理多个文档的可能性
  • CAD/CAM/CAE应用程序通用的预定义属性(例如存储尺寸)
  • 撤消-重做和复制-粘贴功能

由于OCAF处理应用程序结构,所以唯一的开发任务是创建专用的数据和GUI。
OCAF在组织应用程序数据方面不同于任何其他CAD框架,因为那里的数据结构基于引用键而不是形状。在模型中,形状数据、颜色和材料等属性被附加到一个不变的结构上,该结构比形状更深。形状对象成为形状属性的值,就像整数号是Integer属性的值,字符串是Name属性的值一样。
OCAF将这些属性组织并嵌入到文档中。OCAF文档由OCAF应用程序管理。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页