盧宇坤 王梓榆
(常州固高智能裝備技術(shù)研究院有限公司,江蘇常州 213000)
彎管作為大多數(shù)氣體、液體的輸送結(jié)構(gòu),在許多領(lǐng)域都擁有著廣泛的應(yīng)用,如汽車工業(yè)、航天航空等,隨著彎管應(yīng)用市場進(jìn)一步擴(kuò)大,傳統(tǒng)的繞彎式彎管機(jī),壓彎式彎管機(jī)等已經(jīng)不能夠滿足工業(yè)上的應(yīng)用要求,因此發(fā)展出了最新的三維矢量彎管機(jī),這種彎管機(jī)的工作原理比傳統(tǒng)彎管機(jī)更為復(fù)雜,因此需要在進(jìn)行彎制前,能夠?qū)崿F(xiàn)對于管材模型的顯示,便于技術(shù)人員更好的加工管材。
本文旨在基于Open CASCADE Technology這一開源的幾何內(nèi)核,研究開發(fā)出一款專門針對三維矢量彎管機(jī)的小型軟件平臺[1]。通過該軟件能夠便捷地導(dǎo)入外部管材的STEP模型,實(shí)現(xiàn)STEP模型的整體展示,并能夠?qū)τ谀P瓦M(jìn)行操作。開源幾何內(nèi)核再實(shí)際的開發(fā)應(yīng)用中具有許多優(yōu)勢,并且針對三維矢量彎管開發(fā)相應(yīng)的軟件平臺,能夠大大降低成本,同時還能夠保證后續(xù)加工的穩(wěn)定性,這無疑有著廣闊的前景和市場。
Open CASCADE Technology簡稱OCCT,是基于C++開發(fā)出的一個幾何內(nèi)核,提供了多種C++的類,旨在快速生成復(fù)雜的特定領(lǐng)域CAD/CAM/CAE應(yīng)用程序。使用OCCT開發(fā)的典型應(yīng)用程序處理通用或?qū)S糜嬎銠C(jī)輔助設(shè)計(CAD)系統(tǒng)、制造或分析應(yīng)用程序、模擬應(yīng)用程序甚至插圖工具中的二維或三維(2D或3D)幾何建模。利用OCCT開發(fā)特定領(lǐng)域CAD/CAM/CAE應(yīng)用程序,具有功能模塊化和可擴(kuò)展性高的優(yōu)點(diǎn),以下各項為OCCT所提供主要C++類:
基本數(shù)據(jù)結(jié)構(gòu)(幾何建模、可視化、交互式選擇和特定于應(yīng)用程序的服務(wù));建模算法;網(wǎng)格數(shù)據(jù)處理算法;IGES、STEP格式的數(shù)據(jù)互操作性。
Open CASCADE 采用C++11中的新特性智能指針來管理引用,這種管理機(jī)制利用句柄來實(shí)現(xiàn)。Open CASCADE中的句柄由Standard_Transient(臨時)類或Standard_Persistent(持久類)類派生。同時Open CASCADE提供了一個宏預(yù)處理函數(shù)Handle()。通過聲明句柄的方式來創(chuàng)建出需要處理的對象,并采用new操作符初始化句柄。在本文的研究與開發(fā)中,常需要利用到該特點(diǎn)[2]。
基于Open CASCADE Technology平臺,采用Visual Studio 2019編程平臺和C++編語言來開發(fā)。開發(fā)出一款具有可視化界面,能夠?qū)崿F(xiàn)三維矢量管材STEP文件導(dǎo)入以及對于管材模型操作的軟件平臺[3-4]。
可視化界面的開發(fā)是整體軟件平臺的框架,選用Qt作為可視化界面開發(fā)框架具有較好的可操作性。Open CASCAS CADE與程序的交互環(huán)境接口通過AIS_Interactive-Context類實(shí)現(xiàn),該類通過接受一個高級的API信號控制顯示過程。本文選擇在文檔類中實(shí)現(xiàn)對象的創(chuàng)建與初始化,在視圖類中設(shè)置程序交互環(huán)境界面背景。部分實(shí)現(xiàn)代碼如下:
其可視化界面的初始化界面如圖1所示。
圖1 可視化界面的初始化界
OCCT中,模型是使用B-rep(邊界表示法)描述的。所以STEP文件導(dǎo)入是實(shí)現(xiàn)將STEO文件表示的模型,轉(zhuǎn)換為OCCT使用的B-rep表示的模型。
描述一個物體的方法有許多,而在實(shí)體建模中,經(jīng)常使用物體的一個封閉的邊界來描述一個物體,這個方法就叫作邊界表示法。因?yàn)橥ǔG闆r下來說,一組面的集合可以組成一個完全封閉的邊界,所以說邊界表示法是高效且準(zhǔn)確的描述出整個模型的。在OCCT中,有一個總的拓?fù)漕惤凶鱐opoDS_Shape,以此類作為父類,派生出許多的子類,這些子類能夠基本上概括出組成模型的所有基本拓?fù)漕愋?,其中與邊界表示法最為相關(guān)的的幾大子類分別如下:
TopoDS_Vertex是最基本的拓?fù)漕愋停簿褪俏覀兂Uf的頂點(diǎn);2個頂點(diǎn)可以構(gòu)成一條線,那么這條線相對應(yīng)的拓?fù)漕愋徒凶鱐opoDS_Edge;當(dāng)許多條TopoDS_Edge連接起來,就能夠構(gòu)成一個面,也就是TopoDS_Face;將多個TopoDS_Face拼接,就會獲得一個新的拓?fù)漕愋?,叫作體,也就是TopoDS_Solid。但我們把多條TopoDS_Edge組成一個集合時,這個集合對應(yīng)的拓?fù)漕愋鸵簿褪荰opoDS_Wire;把多個TopoDS_Face組成一個集合時,這個由TopoDS_Face組成的集合對應(yīng)的拓?fù)漕愋途褪荰opoDS_Shell。當(dāng)我們擁有一個包含了各種拓?fù)漕愋偷募蠒r,這個集合稱之為TopoDS_Compound。所有拓?fù)浣Y(jié)構(gòu)的關(guān)系如圖2所示。
圖2 各拓?fù)渲g的結(jié)構(gòu)關(guān)系
在OCCT中,有STEPAPI_Reader類,我們可以運(yùn)用此類來讀取STEP格式的文件,每一個STEP文件中,都包含了自己的網(wǎng)格信息。因?yàn)樵贠CCT中,是采用B-rep表示法來表示一個模型,想獲取STEP模型,就需要將STEP模型里的數(shù)據(jù)全部轉(zhuǎn)換為B-rep表示的模型,這個操作我們同時調(diào)用STEPAPI_Reader類和STEP Mesh_Mesh類就可以完成。在讀取STEP文件的同時,會獲得該STEP文件中所有的三角面片的信息,這些信息會保存到STEP Mesh_Mesh類中的網(wǎng)格信息中,根據(jù)所有獲得的網(wǎng)格信息,就可以生成只擁有單個拓?fù)浣Y(jié)構(gòu)的TopoDS_Shell模型中,也可以生成擁有多種拓?fù)浣Y(jié)構(gòu)的TopoDS_Compound模型中。
為了將生成的TopoDS_Shell模型或者是TopoDS_Compound模型顯示出來,OCCT 也提供了相應(yīng)的顯示模塊,這個模塊叫作AIS(Application Interactive Services)模塊。AIS模塊提供了多種的顯示有關(guān)的功能,通過合理的組合使用這些功能,就能夠?qū)崿F(xiàn)幾何和拓樸對象的顯示、選擇和管理。其中對象的顯示可以顯示出對象的顏色,也可以自己指定顯示模式。對于對象的選擇而言,如果被選中那么就將此對象進(jìn)行高亮顯示。實(shí)現(xiàn)讀取STEP文件的部分關(guān)鍵代碼如下:
外部管材STEP文件在本軟件平臺中的顯示效果如圖3所示。
圖3 STEP模型顯示效果
通過AIS模塊可以讀取三維模型文件中的特征,并將三維模型在程序視圖框架中顯示出來,而無法對模型實(shí)現(xiàn)旋轉(zhuǎn)、放縮、移動等基本的交互操作。OCCT提供了V3d_View類,在這個類中有豐富的圖形操作函數(shù),通過枚舉CurAction3d能及時響應(yīng)渲染模型表面、場景、紋理等,想要完成對于模型的旋轉(zhuǎn)、平移、縮放等交互。STEP 模型操作顯示如圖4所示。
圖4 STEP模型操作顯示
本文基于Open CASCADE Technology這一開源幾何內(nèi)核,研究并開發(fā)出了一款三維模型軟件,并且該軟件應(yīng)用到三維矢量彎管技術(shù)中,從而能夠?qū)崿F(xiàn)管材STEP文件的顯示,以及對于STEP模型操作的功能,能夠讓工程技術(shù)人員更好地了解管材的數(shù)據(jù)結(jié)構(gòu),以便于后續(xù)的開發(fā)。如今,在CADCAM系統(tǒng)中,對于STEP文件進(jìn)行數(shù)據(jù)交互在整體的協(xié)同工作中占據(jù)了重要的地位,但是相比于現(xiàn)較成熟的三維軟件,利用Open CASCADE Technology這一幾何內(nèi)核,針對性的對于三維矢量彎管開發(fā)軟件,并對STEP模型進(jìn)行處理,在能夠確保降低成本的同時也能獲得較好的穩(wěn)定性,這無疑能夠給管材加工帶來極大的便利。本文研究的軟件,能夠進(jìn)一步的再借助Open CASCADE Technology,開發(fā)出具有更多功能的軟件平臺,這無疑對有十分重大的意義和更加廣闊的市場前景。