丁華王忠
(西南科技大學(xué)制造科學(xué)與工程學(xué)院 四川綿陽(yáng) 621010)
隨著科學(xué)技術(shù)的飛躍發(fā)展,CAD/CAM技術(shù)在沖壓工業(yè)中的應(yīng)用將愈加廣泛,而我國(guó)目前幾乎還沒(méi)有專用于沖壓行業(yè)的商用CAD/CAM軟件。因而對(duì)該領(lǐng)域的CAD/CAM研究仍舊具有十分重要的意義。大部分CAD/CAM軟件都是在幾何內(nèi)核的基礎(chǔ)上開發(fā)的[1]。目前,可用于開發(fā)CAD系統(tǒng)的底層幾何內(nèi)核平臺(tái)有美國(guó)Spatial technology公司的ACIS、英國(guó)EDS公司的Parasolid平臺(tái)以及法國(guó)Matra Datavision公司的Open CASCADE等。如著名的Auto CAD軟件使用的開發(fā)平臺(tái)是ACIS,Unigraphics,Solid Works使用的是 Parasolid[2]。Open CASCADE 作為一款開源開發(fā)工具包,因其功能上的全面和強(qiáng)大,在業(yè)內(nèi)也頗受好評(píng),如HeeksCAD,MIDAS FX+等軟件均選用Open CASCADE作為開發(fā)平臺(tái)[3]。考慮到開源庫(kù)在開發(fā)研究中具有更大的優(yōu)越性,故選擇Open CASCADE作為底層開發(fā)工具。
Open CASCADE是一款功能強(qiáng)大的軟件開發(fā)平臺(tái),它包括3D曲面和實(shí)體建模組件、可視化組件、數(shù)據(jù)交換組件和適合快速開發(fā)的應(yīng)用程序開發(fā)框架(OCAF-Open CASCADE Application Framework)。Open CASCADE技術(shù)可以用于數(shù)字仿真軟件的開發(fā),包括CAD,CAM,CAE,PDM 等應(yīng)用程序。該技術(shù)是20世紀(jì)90年代中期出現(xiàn)的,已經(jīng)被許多不同領(lǐng)域的商業(yè)客戶用來(lái)開發(fā)自己的軟件產(chǎn)品。
Open CASCADE提供了一個(gè)巨大的類庫(kù),可以幫助用戶進(jìn)行快速開發(fā)。類庫(kù)實(shí)際上就是幾何內(nèi)核,定義了圖形數(shù)據(jù)的存儲(chǔ)格式以及大量的圖形算法,包含了許多方便快速設(shè)計(jì)面向?qū)ο蟮墓δ茴??;贠pen CASCADE的應(yīng)用程序可以開發(fā)處理二維、三維幾何模型等其他目的的CAD系統(tǒng),如:制造、分析應(yīng)用和仿真應(yīng)用等。
作為一款底層開發(fā)平臺(tái),Open CASCADE提供了全面而強(qiáng)大的圖形運(yùn)算類、快速開發(fā)應(yīng)用框架OCAF、圖形顯示操作功能包等[4]。主要功能特點(diǎn)有:(1)支持多系統(tǒng)平臺(tái)開發(fā)。Open CASCADE支持Linux,Windows NT和 Sun Solaris等 3種操作系統(tǒng)[5]。(2)提供快速軟件應(yīng)用框架,簡(jiǎn)化用戶CAD應(yīng)用的開發(fā)[6]。(3)提供基于建模數(shù)據(jù)分離可視化操作服務(wù),便于圖形顯示的選擇和管理。(4)使用Open CASCADE平臺(tái)獨(dú)有的組件定義語(yǔ)言(CDLComponent Definition Language),既方便用戶使用,又為用戶自定義功能開發(fā)提供了規(guī)范。(5)提供豐富、全面的幾何運(yùn)算功能,主要如下:支持幾何實(shí)體創(chuàng)建,如創(chuàng)建六面體、柱體、錐體等;支持自由曲面造型,如Bezier曲面、NURBS曲面等;支持幾何實(shí)體布爾操作,提供與、或、交集運(yùn)算;支持基于特征的幾何運(yùn)算,如倒角、偏置、脫殼、拔模等;支持常用幾何運(yùn)算,如求相貫線、投影、曲面縫合等。
Open CASCADE提供了由大量C++類文件構(gòu)成的幾何類庫(kù)[7],不僅功能豐富,而且便于使用和開發(fā)。功能相關(guān)的類被組織成包,相關(guān)的包被歸類成不同的模塊。Open CASCADE類庫(kù)共包括六大模塊[8],如表 1 所示。
表1 類庫(kù)的模塊和功能Table 1 Class library modules and their functions
在六大類模塊中,與CAD系統(tǒng)幾何功能開發(fā)和數(shù)據(jù)處理關(guān)系尤為密切的模塊為基礎(chǔ)類、造型數(shù)據(jù)類、造型算法類以及數(shù)據(jù)轉(zhuǎn)換類等4個(gè)模塊。
1.3.1 基礎(chǔ)類模塊
基礎(chǔ)類模塊提供一系列基礎(chǔ)服務(wù),如定義基本實(shí)體類型、根類、內(nèi)存管理、異常處理、數(shù)組操作、數(shù)據(jù)文件保存基礎(chǔ)服務(wù)等。例如gp_Pnt類定義幾何點(diǎn),gp_Dir類定義空間向量,TColgp_Array2OfPnt定義一維點(diǎn)數(shù)組,gp_Ax3定義三維坐標(biāo)系,Materials_Color定義顏色屬性等等。
1.3.2 造型數(shù)據(jù)類模塊
該模塊提供了各類二維、三維幾何模型的數(shù)據(jù)結(jié)構(gòu)定義。其中Geom2d類包集合了各種二維模型數(shù)據(jù)結(jié)構(gòu)類,每種數(shù)據(jù)類名前冠以前綴Geom2d_,如Geom2d_BSplineCurve表示二維B樣條曲線;Geom類包中集合了各種三維模型數(shù)據(jù)結(jié)構(gòu)類,每種數(shù)據(jù)類名前冠以前綴Geom_,如Geom_Curve定義了三維曲線,并提供各種相應(yīng)的運(yùn)算方法,包括求參數(shù)空間值范圍、曲線連續(xù)性、周期性等運(yùn)算,其子類涵蓋圓錐、Bezier、B樣條、剪裁線等各種類型曲線;Geom_Surface類及其子類則定義了各種類型的空間曲面及相關(guān)運(yùn)算方法;TopoDS_Shape類及其子類則定義了各種拓?fù)鋽?shù)據(jù)結(jié)構(gòu)和運(yùn)算方法。
1.3.3 造型算法類模塊
造型算法類模塊集合了大量的用于建模和幾何運(yùn)算的邏輯算法類,按功能主要分為以下幾個(gè)部分:(1)幾何工具。提供二維曲線之間、三維曲線與曲面以及曲面與曲面之間的求交運(yùn)算,點(diǎn)到曲線、點(diǎn)到曲面及曲線到曲面的投影計(jì)算,各類曲線、曲面基于約束的構(gòu)造運(yùn)算,曲線、曲面的插值運(yùn)算等。主要類文件集中在 TKGeomAlgo,GeomAPI,GeomInt等類包中。(2)拓?fù)涔ぞ?。提供拓?fù)湫腕w局部和全局特性定義、幾何變換操作以及拓?fù)湫腕w到NURBS幾何表達(dá)的轉(zhuǎn)換等運(yùn)算。主要類文件集中在BRepBuilderAPI,GeomConvert,MAT 等類包中。(3)基本幾何構(gòu)造。主要包括棱柱體、圓柱體、圓錐體和圓環(huán)體等拓?fù)淠P偷臉?gòu)造。該部分功能主要位于BRepPrimAPI類包中。(4)特征運(yùn)算。提供基于已有拓?fù)湫腕w上的形狀和機(jī)械特征運(yùn)算,如增加圓柱體、拔模、拉伸、特征旋轉(zhuǎn)、管體等。主要的類包有BRep-Fill,BRepFeat,LocOpe等。(5)其他運(yùn)算。造型算法模塊還提供有布爾操作、消除隱藏線、偏置面、脫殼、縫合、掃略、拓?fù)湫腕w修補(bǔ)等運(yùn)算。主要包括BRepAlgoAPI,HLRBRep,BRepOffsetAPI,ShapeFix 等類包。
1.3.4 數(shù)據(jù)轉(zhuǎn)換類模塊
該模塊為基于Open CASCADE平臺(tái)的軟件與各種其他CAD軟件之間的數(shù)據(jù)交換提供了轉(zhuǎn)換接口,確保軟件具有較好的協(xié)同工作能力。能夠?qū)崿F(xiàn)對(duì) IGES,STEP,STL,VRML等通用數(shù)據(jù)格式的兼容和相互轉(zhuǎn)換[9]。
基于Open CASCADE平臺(tái)的CAD系統(tǒng)采用Visual Studio 2010編程平臺(tái)和C++編程語(yǔ)言來(lái)開發(fā)。軟件實(shí)現(xiàn)分為可視化界面搭建和CAD基礎(chǔ)功能開發(fā)兩個(gè)部分。
軟件框架和可視化窗口為用戶使用軟件提供了方便和直觀感受,是CAD系統(tǒng)很重要的一部分。Open CASCADE提供了MFC和Qt兩款GUI應(yīng)用范例,可以直接作為軟件可視化開發(fā)基礎(chǔ)。Qt是一款基于C++程序設(shè)計(jì)語(yǔ)言的開源圖形用戶界面開發(fā)框架,它具有優(yōu)越的圖形視覺效果、豐富的應(yīng)用接口、良好的封裝性和可擴(kuò)展性,支持跨平臺(tái)開發(fā)。因此,選用Qt作為可視化界面開發(fā)框架具有較好的可操作性。
在開發(fā)過(guò)程中,當(dāng)程序調(diào)用了類庫(kù)的功能,就應(yīng)該將相應(yīng)的庫(kù)文件連接到工程屬性的附加依賴項(xiàng)中??梢暬缑婵蚣荛_發(fā)的部分重要原代碼如下:
在可視化圖形界面開發(fā)的過(guò)程中,還會(huì)用到幾個(gè)重要的類??梢暬K的類AIS_InteractiveContext,V3d_View用來(lái)控制幾何對(duì)象的顯示模式、狀態(tài)、控制圖形視窗的尺寸,基礎(chǔ)模塊中的Quantity_Color用來(lái)設(shè)置幾何模型的顯示顏色。創(chuàng)建后的軟件界面如圖1所示。
圖1 軟件可視化界面Fig.1 Software GUI
基本幾何功能是CAD軟件的核心模塊,它提供了必要的幾何模型生成和幾何運(yùn)算操作。通過(guò)Open CASCADE類庫(kù)所提供的相關(guān)類和函數(shù)不僅能夠建立各種幾何形狀,還可以對(duì)這些幾何模型進(jìn)行布爾運(yùn)算、求相貫線以及投影等基本運(yùn)算操作。
2.2.1 輸入輸出(IO)設(shè)計(jì)
IO接口可以使不同CAD/CAM軟件之間進(jìn)行數(shù)據(jù)交換,為軟件間的協(xié)同工作提供可能。Open CASCADE在數(shù)據(jù)交換功能模塊提供了對(duì)STEP,IGES,STL,VRML等通用標(biāo)準(zhǔn)數(shù)據(jù)格式的輸入輸出支持及各數(shù)據(jù)格式之間的轉(zhuǎn)換功能。
數(shù)據(jù)轉(zhuǎn)換模塊中,類IGESCAFControl_Reader,IGESCAFControl_Writer用于IGES文件和 Open CASCADE模型之間的轉(zhuǎn)換[10],實(shí)現(xiàn) CAD系統(tǒng)對(duì)IGES格式數(shù)據(jù)文件的輸入輸出功能;STEPCAFControl_Reader,STEPCAFControl_Writer類則用于實(shí)現(xiàn)STEP數(shù)據(jù)與Open CASCADE模型之間的轉(zhuǎn)換,實(shí)現(xiàn)CAD軟件對(duì)STEP格式數(shù)據(jù)文件的輸入輸出功能;類StlAPI_Reader和StlAPI_Writer用于實(shí)現(xiàn)STL數(shù)據(jù)與OCC模型之間的轉(zhuǎn)換,實(shí)現(xiàn)CAD軟件對(duì)STL格式數(shù)據(jù)文件的輸入輸出功能。
此外,類BRepTools中的Read和Write函數(shù)可以實(shí)現(xiàn)對(duì)BREP格式數(shù)據(jù)的輸入輸出;類VrmlAPI_Writer可以實(shí)現(xiàn)OCC模型數(shù)據(jù)向VRML數(shù)據(jù)格式的轉(zhuǎn)換。
2.2.2 構(gòu)造功能開發(fā)
Open CASCADE提供了非常豐富的幾何構(gòu)造功能類,用于實(shí)現(xiàn)不同類型的曲線、曲面構(gòu)造功能。例如,類包 Geom,GC,gce,GeomAPI,BRepPrimAPI 提供了數(shù)10種幾何構(gòu)造功能函數(shù)。下面是部分構(gòu)造類使用介紹:
類 Geom_Circle,GC_MakeCircle,gce_MakeCirc均可用于繪制圓;Geom_Hyperbola,GC_MakeHyperbola用于繪制雙曲線;Geom_OffsetCurve用于繪制偏置于某一曲線一定距離的偏置曲線;Geom_TrimmedCurve用于繪制某一曲線的特定參數(shù)區(qū)域的一段剪裁曲線;Geom_BezierCurve,Geom_BezierCurve分別用于繪制 Bezier曲線,曲面;Geom_BsplineCurve,Geom_BSplineSurface則分別用于繪制有理B樣條曲線曲面;GeomAPI_PointsToBSpline用于離散點(diǎn)擬合B樣條曲面;BRepPrimAPI_MakeBox用于創(chuàng)建箱體。
例如,可以用類GeomAPI_PointsToBSpline提供的功能構(gòu)建一個(gè)B樣條曲面:
TColgp_Array2OfPnt&Points;//用于構(gòu)建B樣條曲面的型值點(diǎn)
GeomAPI_PointsToBSplineSurface
*PntToBSurf=new
GeomAPI_PointsToBSplineSurface();//定義一個(gè)GeomAPI_PointsToBSplineSurface類型指針
PntToBSurf- > Interpolate(Points);//將型值點(diǎn)賦給PntToBSurf進(jìn)行擬合運(yùn)算
Handle(Geom_BSplineSurface)BSurf=Pnt-ToBSurf->Surface();//構(gòu)建出一個(gè) B樣條曲面BSurf
圖2所示即為用上述方法構(gòu)造出的一個(gè)B樣條曲面。
此外,該部分還進(jìn)行了掃略曲面、旋轉(zhuǎn)曲面等功能的開發(fā)工作。圖3為曲線曲面構(gòu)造功能應(yīng)用的幾個(gè)實(shí)例。
圖2 構(gòu)造B樣條曲面Fig.2 Modeling of B-spline surface
圖3 幾何建模應(yīng)用實(shí)例Fig.3 The examples of geometry modeling
2.2.3 幾何運(yùn)算功能開發(fā)
幾何運(yùn)算功能主要是基于幾何實(shí)體的運(yùn)算操作,也是CAD軟件不可或缺的功能模塊之一。Open CASCADE也提供許多功能類用于實(shí)現(xiàn)幾何運(yùn)算操作,比如求交、投影等。以下是對(duì)部分幾何運(yùn)算類的開發(fā)使用介紹:
GeomAPI_IntCS,GeomAPI_IntSS用來(lái)實(shí)現(xiàn)曲線與曲面之間以及曲面與曲面之間的求交運(yùn)算,可以得到交點(diǎn)或者交線;GeomAPI_ProjectPointOnC_urve,GeomAPI_ProjectPointOnSurf可以用來(lái)計(jì)算點(diǎn)到曲面以及點(diǎn)到曲面的投影運(yùn)算,得到相應(yīng)的投影點(diǎn);類BRepAlgoAPI_BooleanOperation及其子類提供了幾何體間的與集、或集、交集等布爾運(yùn)算功能;BRep-FilletAPI_MakeFillet,BRepFilletAPI_Ma_keChamfer提供了倒直角和倒圓角功能;gp_Trsf提供了旋轉(zhuǎn)、鏡像、縮放、比例變換等功能。類Rep_Tool可以用于實(shí)現(xiàn)不同數(shù)據(jù)類型之間的轉(zhuǎn)換操作。
圖4所示,為幾何運(yùn)算功能的幾個(gè)應(yīng)用實(shí)例。通過(guò)對(duì)幾何功能模塊以及可視化界面的集成和優(yōu)化,完成CAD軟件的整體開發(fā)。圖5為通過(guò)該方法開發(fā)出的CAD系統(tǒng)的部分應(yīng)用實(shí)例,上圖為使用旋轉(zhuǎn)、雙線性曲面等三維構(gòu)造功能生成的導(dǎo)彈模型,下圖為使用旋轉(zhuǎn)、倒角等三維造型和求余布爾運(yùn)算等功能繪制的階梯軸零件。
圖4 幾何運(yùn)算應(yīng)用實(shí)例Fig.4 The examples of geometric algorithms
圖5 應(yīng)用實(shí)例Fig.5 Application demonstrations
本文基于開源幾何內(nèi)核庫(kù)Open CASCADE,主要做了以下幾點(diǎn)研究:(1)研究了該開源幾何內(nèi)核庫(kù)的體系結(jié)構(gòu)、功能特點(diǎn)以及功能庫(kù)的使用方法;(2)探討了基于該平臺(tái)開發(fā)CAD軟件的一般方法和重要步驟,并著重介紹了標(biāo)準(zhǔn)數(shù)據(jù)格式文件的輸入輸出、三維幾何模型的構(gòu)建、求交和投影等幾何運(yùn)算等功能實(shí)現(xiàn),為同類開發(fā)提供了參考;(3)通過(guò)VC++編程開發(fā)了一款CAD軟件,使用該軟件可以實(shí)現(xiàn)復(fù)雜幾何模型的構(gòu)建、圖形顯示、輸入輸出等功能,驗(yàn)證了基于該平臺(tái)開發(fā)CAD系統(tǒng)的可行性。
[1]鄭盈盈,周來(lái)水,孫金虎.基于Open CASADE的 DXF接口研究[J].中國(guó)制造業(yè)信息化,2010,(1):45-47.
[2]苑國(guó)強(qiáng),張淵.采用open CASCADE的三維建模平臺(tái)的開發(fā)研究[J].工程圖學(xué)學(xué)報(bào),2008,(4):146-149.
[3]Open CASCADE TECKNOLOGY.Screenshots[EB/OL].http://www.opencascade.org/showroom/screenshots,2013.
[4]王玥,付梅艷,陳再高,等.用于全電磁粒子模擬的復(fù)雜建模及網(wǎng)格生成技術(shù)[J].強(qiáng)激光與粒子束,2011,23(11):2994-2996.
[5]馬鐵利.機(jī)械CAD幾何建模核心技術(shù)及其發(fā)展趨勢(shì)[J].計(jì)算機(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的虛擬三維建模平臺(tái)的開發(fā)研究[J].第一屆中國(guó)圖形大會(huì),2007,(8):267-268.
[9]張淵.基于Open CASCADE的虛擬三維建模平臺(tái)的開發(fā)[M].濟(jì)南:山東大學(xué),2007.61-62.
[10]陳宏宇,劉子建,艾彥迪.基于Open CASCADE的“一元四體”模型實(shí)現(xiàn)技術(shù)研究[J].計(jì)算機(jī)工程與應(yīng)用,2012,34(3):102 -104.