1.CAD内核
CAD技术从60年代诞生以来,经历了二维绘图、线框模型、自由曲面模型、实体造型、特征造型等重要发展阶段。随着CAD技术的发展也诞生了许多成熟和知名的CAD引擎和软件。
目前,商用CAD引擎主要包括了ACIS、HOOPS、ParaSolid等。其中使用ACIS引擎的底层产品主要包括了AutoCAD、Inventer、Catia、MicroSolid等;使用ParaSolid引擎的主要包括了UG、Solidworks、SolidEdge等。但由于关注点的差别及商业保密的因素,不同的CAD软件都有自己的一套建模方式和存储体系,这导致了系统间数据无法进行直接的传递。目前采用的方式是通过中间标准格式文件为媒介进行传递,但是这种方式会丢失一些细节特征,这就还需要进行一些其它额外的修补工作,这也一定程度上影响了CAD技术的发展。
在商用CAD软件外,还有一些比较成熟的开源CAD引擎,其中使用的比较多的是OpenCascade(简称OCC)。OCC平台是由法国Matra Datavision公司开发的CAD/CAE/CAM软件平台,可以说是世界上最重要的几何造型基础软件平台之一。它是一个开放源码CAD 内核,可以定制和扩展(添加新的功能组件,类的进一步继承),面向CAD/CAM,对主流CAD 数据格式提供支持(STEP/STL/IGES 等,可自行开发转换程序提供特定数据格式的支持),提供高级建模函数(拟合,有理样条曲线,拉伸、旋转、扫略、层叠拉伸、圆角、倒角、薄壳、修剪、偏移等),参数化模型,提供几何模型的特征提取,对Visual C++/MFC 有很好的支持。各CAD引擎间的对比关系如下表所示:
CAD引擎间的对比
通过上面的对比来说,可以看出ACIS+HOOPS的组合,以及ParaSolid作为商用的引擎具有更高的成熟度和性能优化;但这些引擎需要授权,而且出于商业机密,无法提供最终完全的源代码,透明度和扩展性会有一定的限制。
相对于商用软件,开源CAD引擎具有免费、可扩展性好等优点;同时随时CAD技术及开源引擎的不断优化,像OCC这样的引擎将在更多的领域得到应用。目前基于OCC的CAD软件有FreeCAD、HeeksCAD、AnyCAD等。
2.CAD数据格式说明
(1)商用CAD软件格式
目前,成熟的商用软件都有其自身的一套文件体系。这些文件出于存储效率及其它商业原因,大多以二进制形式提供,而且格式不明确。作为3D技术的领导者,Spatial意识到实现不同格式数据(包括原始格式数据和非原始格式数据)有效转换的必要性。为此,Spatial开发了3D InterOp数据转换组件,开发者们可以很容易地将我们提供的先进的3D数据转换技术集成到各自的3D软件产品中,这些软件产品可以是CAD/CAM/CAE应用程序、数据管理系统(如PDM、EDM和MES等)、协同系统以及可视化解决方案等。
Spatial全面的InterOp组件包能够透明地实现实体、曲面和线框数据的直接或间接地转换(包括采用中间格式或原始库的方式),可以转换的3D数据格式包括CATIA V5, CATIA V4, IGES, STEP, VDA-FS, Pro/ENGINEER (Pro/E), Parasolid (PS), Unigraphics (UG), SolidWorks, Inventor, 和ACIS。每一种转换器都经过精细微调,并经常更新,确保3D数据转换的准确。每周,转换器都将经历225,000多个测试,以保证转换质量。
还有华天软件SINOVATION!
(2)通用标准CAD格式
除了商用软件各自的格式外,为了统一和使用方便,一些国际组织和机构也推出了一些广泛使用通用标准格式。目前使用比较多的CAD数据文件格式包括Iges、Step、Stl、VRML等,相关具体说明如下:
IGES:基本图形交换规范(The Initial Graphics Exchange Specification),1980年美国国家标准局(NBS)主持成立了由波音公司和通用电气公司参加的技术委员会,制订了基本图形交换规范IGES,并于1981年正式成为美国国家标准。作为较早颁布的标准,IGES被许多CAD/CAM系统接受,成为应用最广泛的数据交换标准。
STEP:产品模型数据交换标准(STandard Exchange of Product data model),1988年ISO制定的描述整个产品生命周期内产品信息的标准,它提供了一种不依赖具体系统的中性机制,旨在实现产品数据的交换和共享。这种描述的性质使得它不仅适合于交换文件,也适合于作为执行和分享产品数据库和存档的基础。发达国家已经把STEP标准推向了工业应用。它的应用显著降低了产品生命周期内的信息交换成本,提高了产品研发效率,成为制造业进行国际合作、参与国际竞争的重要基础标准,是保持企业竞争力的重要工具。
STL :STL文件,一种3D模型文件格式STL(STereo Lithography的缩写)。STL 文件格式是由3D SYSTEM 公司于1988 年制定的一个接口协议,是一种为快速原型制造技术服务的三维图形文件格式。STL 文件由多个三角形面片的定义组成,每个三角形面片的定义包括三角形各个定点的三维坐标及三角形面片的法矢量。三角形顶点的排列顺序遵循右手法则。STL 文件有2 种类型:ASC域格式和二进制格式ASC域格式。STL模型是以三角形集 合来表示物体外轮廓形状的几何模型。
VRML:(Virtual Reality Modeling Language)即虚拟现实建模语言。是一种用于建立真实世界的场景模型或人们虚构的三维世界的场景建模语言,也具有平台无关性。是目前Internet上基于 WWW的三维互动网站制作的主流语言。VRML是虚拟现实造型语言(Virtual Reality Modeling Language)的简称,本质上是一种面向web,面向对象的三维造型语言,而且它是一种解释性语言。VRML的对象称为结点,子结点的集 合可以构成复杂的景物。结点可以通过实例得到复用,对它们赋以名字,进行定义后,即可建立动态的VR(虚拟世界)。
3.OCC体系结构介绍
如前面所述,OCC是一套重要的开源CAD引擎。OCC的整体体系结构如下图所示:
在OCC的体系结构中,各基本模块的含义如下:
(1)Foundation Classes基础类(包括核心类、常用的数学算法、基本数据存储等);
(2)Modeling Data: 提供用于呈现2D和3D几何和拓扑的数据结构;
(3)Modeling Algorithms:提供相关建模中用到的算法和基本功能,例如计算交集、倒角等;
(4)Mesh:网格划分的相关功能,从当前看到的资料来说只看到了三角形网格(转换后的网格,可以保存为VRML和STL两转格式);
(5)Visualization: 基本的展示和相关的交互操作;
(6)Data Exchange(standardized):标准的数据转换(IGES、STEP等);
(7)OCAF(Open CASCADE Application Framework):处理应用程序中基本数据的基本框架,在此基础上开发者只需要关心程序相关的特定数据和界面即可。
(8)GUI Framework为方便开发提供了一些界面库;
(9)Develpment Tools:一些小工具。
3.1 OCC内部数据结构
OCC提供了TopoDS_Shape用于定义形状的基类,TopoDS_Shape包含了三个成员变量:位置、朝向以及一个TopoDS_TShape的myTShape句柄。
拓扑方向是一个非常通用的概念,只要有段或边界出现的地方就可以用到它。当一个Shape限制了一个几何域时,就说这个Shape 具有拓扑方向。拓扑方向的概念与边界的概念紧密联系。需要用到拓扑方向的三种Shape 有:由顶点限制的曲线、由边限制的曲面和由面限制的空间。
基于TopoDS_Shape派生出来的类的结构如下图所示:
其中各类元素的含义如下表所示:
表 22 ShapeEnum枚举类的各元素及其意义