基于Open CASCADE平台的CAD系统开发研究

2014-07-18 02:00丁华王忠
西南科技大学学报 2014年2期
关键词:曲面可视化运算

丁华王忠

(西南科技大学制造科学与工程学院 四川绵阳 621010)

随着科学技术的飞跃发展,CAD/CAM技术在冲压工业中的应用将愈加广泛,而我国目前几乎还没有专用于冲压行业的商用CAD/CAM软件。因而对该领域的CAD/CAM研究仍旧具有十分重要的意义。大部分CAD/CAM软件都是在几何内核的基础上开发的[1]。目前,可用于开发CAD系统的底层几何内核平台有美国Spatial technology公司的ACIS、英国EDS公司的Parasolid平台以及法国Matra Datavision公司的Open CASCADE等。如著名的Auto CAD软件使用的开发平台是ACIS,Unigraphics,Solid Works使用的是 Parasolid[2]。Open CASCADE 作为一款开源开发工具包,因其功能上的全面和强大,在业内也颇受好评,如HeeksCAD,MIDAS FX+等软件均选用Open CASCADE作为开发平台[3]。考虑到开源库在开发研究中具有更大的优越性,故选择Open CASCADE作为底层开发工具。

1 Open CASCADE平台

1.1 Open CASCADE 平台简介

Open CASCADE是一款功能强大的软件开发平台,它包括3D曲面和实体建模组件、可视化组件、数据交换组件和适合快速开发的应用程序开发框架(OCAF-Open CASCADE Application Framework)。Open CASCADE技术可以用于数字仿真软件的开发,包括CAD,CAM,CAE,PDM 等应用程序。该技术是20世纪90年代中期出现的,已经被许多不同领域的商业客户用来开发自己的软件产品。

Open CASCADE提供了一个巨大的类库,可以帮助用户进行快速开发。类库实际上就是几何内核,定义了图形数据的存储格式以及大量的图形算法,包含了许多方便快速设计面向对象的功能类。基于Open CASCADE的应用程序可以开发处理二维、三维几何模型等其他目的的CAD系统,如:制造、分析应用和仿真应用等。

1.2 Open CASCADE 功能特点

作为一款底层开发平台,Open CASCADE提供了全面而强大的图形运算类、快速开发应用框架OCAF、图形显示操作功能包等[4]。主要功能特点有:(1)支持多系统平台开发。Open CASCADE支持Linux,Windows NT和 Sun Solaris等 3种操作系统[5]。(2)提供快速软件应用框架,简化用户CAD应用的开发[6]。(3)提供基于建模数据分离可视化操作服务,便于图形显示的选择和管理。(4)使用Open CASCADE平台独有的组件定义语言(CDLComponent Definition Language),既方便用户使用,又为用户自定义功能开发提供了规范。(5)提供丰富、全面的几何运算功能,主要如下:支持几何实体创建,如创建六面体、柱体、锥体等;支持自由曲面造型,如Bezier曲面、NURBS曲面等;支持几何实体布尔操作,提供与、或、交集运算;支持基于特征的几何运算,如倒角、偏置、脱壳、拔模等;支持常用几何运算,如求相贯线、投影、曲面缝合等。

1.3 Open CASCADE 几何类库

Open CASCADE提供了由大量C++类文件构成的几何类库[7],不仅功能丰富,而且便于使用和开发。功能相关的类被组织成包,相关的包被归类成不同的模块。Open CASCADE类库共包括六大模块[8],如表 1 所示。

表1 类库的模块和功能Table 1 Class library modules and their functions

在六大类模块中,与CAD系统几何功能开发和数据处理关系尤为密切的模块为基础类、造型数据类、造型算法类以及数据转换类等4个模块。

1.3.1 基础类模块

基础类模块提供一系列基础服务,如定义基本实体类型、根类、内存管理、异常处理、数组操作、数据文件保存基础服务等。例如gp_Pnt类定义几何点,gp_Dir类定义空间向量,TColgp_Array2OfPnt定义一维点数组,gp_Ax3定义三维坐标系,Materials_Color定义颜色属性等等。

1.3.2 造型数据类模块

该模块提供了各类二维、三维几何模型的数据结构定义。其中Geom2d类包集合了各种二维模型数据结构类,每种数据类名前冠以前缀Geom2d_,如Geom2d_BSplineCurve表示二维B样条曲线;Geom类包中集合了各种三维模型数据结构类,每种数据类名前冠以前缀Geom_,如Geom_Curve定义了三维曲线,并提供各种相应的运算方法,包括求参数空间值范围、曲线连续性、周期性等运算,其子类涵盖圆锥、Bezier、B样条、剪裁线等各种类型曲线;Geom_Surface类及其子类则定义了各种类型的空间曲面及相关运算方法;TopoDS_Shape类及其子类则定义了各种拓扑数据结构和运算方法。

1.3.3 造型算法类模块

造型算法类模块集合了大量的用于建模和几何运算的逻辑算法类,按功能主要分为以下几个部分:(1)几何工具。提供二维曲线之间、三维曲线与曲面以及曲面与曲面之间的求交运算,点到曲线、点到曲面及曲线到曲面的投影计算,各类曲线、曲面基于约束的构造运算,曲线、曲面的插值运算等。主要类文件集中在 TKGeomAlgo,GeomAPI,GeomInt等类包中。(2)拓扑工具。提供拓扑型体局部和全局特性定义、几何变换操作以及拓扑型体到NURBS几何表达的转换等运算。主要类文件集中在BRepBuilderAPI,GeomConvert,MAT 等类包中。(3)基本几何构造。主要包括棱柱体、圆柱体、圆锥体和圆环体等拓扑模型的构造。该部分功能主要位于BRepPrimAPI类包中。(4)特征运算。提供基于已有拓扑型体上的形状和机械特征运算,如增加圆柱体、拔模、拉伸、特征旋转、管体等。主要的类包有BRep-Fill,BRepFeat,LocOpe等。(5)其他运算。造型算法模块还提供有布尔操作、消除隐藏线、偏置面、脱壳、缝合、扫略、拓扑型体修补等运算。主要包括BRepAlgoAPI,HLRBRep,BRepOffsetAPI,ShapeFix 等类包。

1.3.4 数据转换类模块

该模块为基于Open CASCADE平台的软件与各种其他CAD软件之间的数据交换提供了转换接口,确保软件具有较好的协同工作能力。能够实现对 IGES,STEP,STL,VRML等通用数据格式的兼容和相互转换[9]。

2 三维CAD系统的开发

基于Open CASCADE平台的CAD系统采用Visual Studio 2010编程平台和C++编程语言来开发。软件实现分为可视化界面搭建和CAD基础功能开发两个部分。

2.1 可视化界面开发

软件框架和可视化窗口为用户使用软件提供了方便和直观感受,是CAD系统很重要的一部分。Open CASCADE提供了MFC和Qt两款GUI应用范例,可以直接作为软件可视化开发基础。Qt是一款基于C++程序设计语言的开源图形用户界面开发框架,它具有优越的图形视觉效果、丰富的应用接口、良好的封装性和可扩展性,支持跨平台开发。因此,选用Qt作为可视化界面开发框架具有较好的可操作性。

在开发过程中,当程序调用了类库的功能,就应该将相应的库文件连接到工程属性的附加依赖项中。可视化界面框架开发的部分重要原代码如下:

在可视化图形界面开发的过程中,还会用到几个重要的类。可视化模块的类AIS_InteractiveContext,V3d_View用来控制几何对象的显示模式、状态、控制图形视窗的尺寸,基础模块中的Quantity_Color用来设置几何模型的显示颜色。创建后的软件界面如图1所示。

图1 软件可视化界面Fig.1 Software GUI

2.2 基本几何功能开发

基本几何功能是CAD软件的核心模块,它提供了必要的几何模型生成和几何运算操作。通过Open CASCADE类库所提供的相关类和函数不仅能够建立各种几何形状,还可以对这些几何模型进行布尔运算、求相贯线以及投影等基本运算操作。

2.2.1 输入输出(IO)设计

IO接口可以使不同CAD/CAM软件之间进行数据交换,为软件间的协同工作提供可能。Open CASCADE在数据交换功能模块提供了对STEP,IGES,STL,VRML等通用标准数据格式的输入输出支持及各数据格式之间的转换功能。

数据转换模块中,类IGESCAFControl_Reader,IGESCAFControl_Writer用于IGES文件和 Open CASCADE模型之间的转换[10],实现 CAD系统对IGES格式数据文件的输入输出功能;STEPCAFControl_Reader,STEPCAFControl_Writer类则用于实现STEP数据与Open CASCADE模型之间的转换,实现CAD软件对STEP格式数据文件的输入输出功能;类StlAPI_Reader和StlAPI_Writer用于实现STL数据与OCC模型之间的转换,实现CAD软件对STL格式数据文件的输入输出功能。

此外,类BRepTools中的Read和Write函数可以实现对BREP格式数据的输入输出;类VrmlAPI_Writer可以实现OCC模型数据向VRML数据格式的转换。

2.2.2 构造功能开发

Open CASCADE提供了非常丰富的几何构造功能类,用于实现不同类型的曲线、曲面构造功能。例如,类包 Geom,GC,gce,GeomAPI,BRepPrimAPI 提供了数10种几何构造功能函数。下面是部分构造类使用介绍:

类 Geom_Circle,GC_MakeCircle,gce_MakeCirc均可用于绘制圆;Geom_Hyperbola,GC_MakeHyperbola用于绘制双曲线;Geom_OffsetCurve用于绘制偏置于某一曲线一定距离的偏置曲线;Geom_TrimmedCurve用于绘制某一曲线的特定参数区域的一段剪裁曲线;Geom_BezierCurve,Geom_BezierCurve分别用于绘制 Bezier曲线,曲面;Geom_BsplineCurve,Geom_BSplineSurface则分别用于绘制有理B样条曲线曲面;GeomAPI_PointsToBSpline用于离散点拟合B样条曲面;BRepPrimAPI_MakeBox用于创建箱体。

例如,可以用类GeomAPI_PointsToBSpline提供的功能构建一个B样条曲面:

TColgp_Array2OfPnt&Points;//用于构建B样条曲面的型值点

GeomAPI_PointsToBSplineSurface

*PntToBSurf=new

GeomAPI_PointsToBSplineSurface();//定义一个GeomAPI_PointsToBSplineSurface类型指针

PntToBSurf- > Interpolate(Points);//将型值点赋给PntToBSurf进行拟合运算

Handle(Geom_BSplineSurface)BSurf=Pnt-ToBSurf->Surface();//构建出一个 B样条曲面BSurf

图2所示即为用上述方法构造出的一个B样条曲面。

此外,该部分还进行了扫略曲面、旋转曲面等功能的开发工作。图3为曲线曲面构造功能应用的几个实例。

图2 构造B样条曲面Fig.2 Modeling of B-spline surface

图3 几何建模应用实例Fig.3 The examples of geometry modeling

2.2.3 几何运算功能开发

几何运算功能主要是基于几何实体的运算操作,也是CAD软件不可或缺的功能模块之一。Open CASCADE也提供许多功能类用于实现几何运算操作,比如求交、投影等。以下是对部分几何运算类的开发使用介绍:

GeomAPI_IntCS,GeomAPI_IntSS用来实现曲线与曲面之间以及曲面与曲面之间的求交运算,可以得到交点或者交线;GeomAPI_ProjectPointOnC_urve,GeomAPI_ProjectPointOnSurf可以用来计算点到曲面以及点到曲面的投影运算,得到相应的投影点;类BRepAlgoAPI_BooleanOperation及其子类提供了几何体间的与集、或集、交集等布尔运算功能;BRep-FilletAPI_MakeFillet,BRepFilletAPI_Ma_keChamfer提供了倒直角和倒圆角功能;gp_Trsf提供了旋转、镜像、缩放、比例变换等功能。类Rep_Tool可以用于实现不同数据类型之间的转换操作。

图4所示,为几何运算功能的几个应用实例。通过对几何功能模块以及可视化界面的集成和优化,完成CAD软件的整体开发。图5为通过该方法开发出的CAD系统的部分应用实例,上图为使用旋转、双线性曲面等三维构造功能生成的导弹模型,下图为使用旋转、倒角等三维造型和求余布尔运算等功能绘制的阶梯轴零件。

图4 几何运算应用实例Fig.4 The examples of geometric algorithms

图5 应用实例Fig.5 Application demonstrations

3 结论

本文基于开源几何内核库Open CASCADE,主要做了以下几点研究:(1)研究了该开源几何内核库的体系结构、功能特点以及功能库的使用方法;(2)探讨了基于该平台开发CAD软件的一般方法和重要步骤,并着重介绍了标准数据格式文件的输入输出、三维几何模型的构建、求交和投影等几何运算等功能实现,为同类开发提供了参考;(3)通过VC++编程开发了一款CAD软件,使用该软件可以实现复杂几何模型的构建、图形显示、输入输出等功能,验证了基于该平台开发CAD系统的可行性。

[1]郑盈盈,周来水,孙金虎.基于Open CASADE的 DXF接口研究[J].中国制造业信息化,2010,(1):45-47.

[2]苑国强,张渊.采用open CASCADE的三维建模平台的开发研究[J].工程图学学报,2008,(4):146-149.

[3]Open CASCADE TECKNOLOGY.Screenshots[EB/OL].http://www.opencascade.org/showroom/screenshots,2013.

[4]王玥,付梅艳,陈再高,等.用于全电磁粒子模拟的复杂建模及网格生成技术[J].强激光与粒子束,2011,23(11):2994-2996.

[5]马铁利.机械CAD几何建模核心技术及其发展趋势[J].计算机工程,2003,(11):2-3.

[6]Open CASCADE TECKNOLOGY.Object Libraries Application Framework User’s Guide[EB/OL].http://www.opencascade.org,2013.

[7]MOUNIR H,NIZAR A,ABDELMAJID B.CAD model simplification using a removing details and merging faces technique for a FEM simulation[J].Journal of Mechanical ScienceandTechnology ,2012,26(11):3539-3548.

[8]李绍珍,张渊.基于Open CASCADE的虚拟三维建模平台的开发研究[J].第一届中国图形大会,2007,(8):267-268.

[9]张渊.基于Open CASCADE的虚拟三维建模平台的开发[M].济南:山东大学,2007.61-62.

[10]陈宏宇,刘子建,艾彦迪.基于Open CASCADE的“一元四体”模型实现技术研究[J].计算机工程与应用,2012,34(3):102 -104.

猜你喜欢
曲面可视化运算
基于CiteSpace的足三里穴研究可视化分析
简单拓扑图及几乎交错链环补中的闭曲面
重视运算与推理,解决数列求和题
思维可视化
有趣的运算
基于CGAL和OpenGL的海底地形三维可视化
“融评”:党媒评论的可视化创新
相交移动超曲面的亚纯映射的唯一性
关于第二类曲面积分的几个阐述
“整式的乘法与因式分解”知识归纳