基于Qt 及OpenCASCADE的建模技术研究
enCASCADE 还为用户提供了OCAF(enCAS-CADE AppliCation Framework),它是一种基于en- CASCADE的RAD(Rapid Applieation Development,快速开发工具)框架,是enCASCADE 类库的辅助工具,在几何建模过程中,不仅能处理用到的类库里的任何数据和算法,还可以用于组织.保存应用数据,开发人员可以使用这一工具进行应用程序的快速开发.
3 OpenCASCADE建模技术
3.1 边界表示法
OpenCASCADE是一个先进的.三维的.边界表示(B-Rep)为主的几何造型工具包,是由C++开发设计基于OpenGL的专用快速开发的CAD类库,提供统一的数据结构,同时支持线框.CSG.B-Rep三种模型,并允许这个三种表示共存于统一的数据结构中.OpenCASCADE主要基于边界表示法进行建模.边界表示(BoundaryRepresentation)也称为BR表示或B-rep表示,是三维实体建模在计算机内部的一种表达方式,即数据存放的逻辑结构.它是几何造型中最成熟.无二义的表示法.物体的边界是物体内外部点的分界面,一般用体表.面表.环表.边表和顶点表5层描述.即实体的边界由面的并集表示,每个面由它所在的曲面的定义加上其边界来表示,面的边界是边的并集,边由点来表示.
边界表示法强调物体表面的细节,详细记录了构成物体形体的所有几何元素的几何信息及其相互间的联接关系即拓扑信息,几何信息与拓扑信息分开存储,完整清晰,并能惟一定义物体的三维模型,缺点是对于不规则三维物体的描述不太方便.这一方法主要适用于三维空间操作和分析.
3.2 几何和拓扑
在OpenCASCADE中,几何体(Geometry).拓扑(To-pology)都是从最基础的抽象类派生而来,所有的实体对象具有相同的功能,如实体本身的信息保存功能.自身复制功能以及调试功能等,这些功能均由类TopoDS来实现.几何是指构成模型的纯粹的几何元素,如点(point).曲线(curve)和曲面(surface)等,拓扑是指模型各几何实体之间的空间关系,几何体及其拓扑关系构成了模型的基本空间结构.
OpenCASCADE 中存在两种实现方法完全不同的几何体类:构造几何体和模型几何体.构造几何体是指那些具有几何对象的数学定义的C++类;模型几何体是指为构造几何体增加模型操作功能的那些类,它的数据结构中含有指向构造几何体类的指针,模型几何体和模型保存在一起.
在边界表示法中,描述形体的信息包括几何信息(Geometry)和拓扑信息(Topology)两个方面.一般说来,几何信息描述形体的大小.尺寸.位置.形状等,如边的形状.顶点的坐标等.拓扑信息描述形体上的顶点.边.面的连接关系,形成物体边界表示的"骨架",几何信息犹如附着在"骨架"上的肌肉.
3.3 数据类型
数据类型是作为类被实现的.依据处理方式的不同,OCC 中的数据类型可分为两大类:通过值处理的数据类型和通过句柄(或引用)处理的数据类型.一个通过值处理的类型变量包含自己的实例;而另一个通过句柄处理的类型变量包含一个实例的引用.
3.3.1 值处理类型
值处理类型可分三大类:基本类型.枚举类型和由这样一些类(既不是由Standard_Persistent 类派生,也不是由Standard_Transient 类派生,直接派生或间接派生)定义的类型.基本类型如表1所示.
值处理类型的表现形式比句柄处理类型的表现形式更直接.因此操作也会更快.但是这一类型对象不能单独存于文件中,那些能被数据模式识别(包括基本类型和从Storable 类继承过来的类型)的值处理类型可以作为持久对象的部分结构而存储在持久对象内部,这也是值处理类型对象能够存进文件的惟一方式.
3.3.2 句柄处理类型
句柄处理类型可以分为两大类:由Persistent 类的派生类定义的类型和由Transient 类的派生类定义的类型.
OCC 的引用管理采用的是一种句柄机制.这种机制的基本元素是句柄.在OCC 中,句柄是通过类实现的.句柄含有多个接口成员,其中一个包含一个引用,一般仅使用它的引用.与C++指针一样,几个句柄可以引用同一个对象,一个句柄也可以引用多个对象,但是每次只能引用一个.在句柄访问对象前,句柄必须被声明[14].
3.4 OCC的数据结构
数据结构指的是数据元素之间的相互关系,尤其是数据的逻辑结构.选择数据结构的主要依据就是数据的逻辑结构.
OCC 拥有一个建模数据模块,也称数据结构模块,主要为二维和三维几何模型提供数据结构.数据结构模块由4个工具箱组成:几何工具.二维几何.三维几何和拓扑.
3.4.1 二维几何数据结构
二维几何数据结构定义了二维空间上几何对象的数据结构,主要由Geom2d包提供,Geom2d 包提供了比gp 包更大范围的对象.这些对象是非持久的,
Qt OpenCASCADE 建模技术 相关文章: