陳智淵,馮驁驁
(1.青海師范大學(xué) 民族師范學(xué)院 青海 海南藏族自治州 813000;2.清華大學(xué) 經(jīng)濟管理學(xué)院,北京100084)
?
STL文件格式的機械零件網(wǎng)格化剖分技術(shù)研究
陳智淵1,馮驁驁2
(1.青海師范大學(xué) 民族師范學(xué)院 青海 海南藏族自治州 813000;2.清華大學(xué) 經(jīng)濟管理學(xué)院,北京100084)
為了給機械仿真實驗的后處理階段提供網(wǎng)格化的基本剖分單元,現(xiàn)以AutoCAD作為圖形輸入環(huán)境,以機械零件的STL文件作為數(shù)據(jù)交換接口,通過對STL文件的圖元結(jié)構(gòu)、數(shù)據(jù)組織方法的分析,利用VC++6.0編程讀取由AutoCAD生成的STL格式的零件三維實體文件,然后利用OpenGL圖形處理技術(shù)再現(xiàn)所讀取的圖形數(shù)據(jù),并實現(xiàn)機械零件的網(wǎng)格剖分功能,附帶平移、旋轉(zhuǎn)、縮放、三視圖等幾何變換處理,最終完成了基于STL文件的網(wǎng)格剖分程序開發(fā).
網(wǎng)格化剖分單元;機械零件;STL;VC++6.0;OpenGL
隨著計算機技術(shù)的不斷更新發(fā)展,網(wǎng)格剖分這種離散對象的前置處理技術(shù)在航空航天,機械制造,生物工程等領(lǐng)域得到了推廣應(yīng)用,特別是在機械制造行業(yè),這種應(yīng)用最為廣泛.利用有限元分析復(fù)雜模型時,通常采用人工方法很難對數(shù)據(jù)模型進行剖分,這十分不利于高級有限元分析程序的推廣和使用[1].通常,當(dāng)我們掌握了網(wǎng)格剖分技術(shù)時,在進行復(fù)雜、經(jīng)濟成本較高的制造加工之前,我們就可以先在計算機中進行建模,設(shè)置加工特征及參數(shù),模擬真實的加工環(huán)境,然后進行網(wǎng)格剖分前處理.在我們得到了基本的剖分單元后,就可進行中間處理和后處理,如對零件進行應(yīng)力場的仿真[2]和溫度場的仿真[3]等,這與零件使用壽命的長短直接掛鉤.因此,對網(wǎng)格化自動剖分技術(shù)的研究理論與實際意義重大.
本課題就是針對機械零件模擬仿真實驗的前置處理進行的研究,基本任務(wù)是處理從STL文件中讀取獲得的三維實體數(shù)據(jù),再現(xiàn)機械零件的三維實體內(nèi)容并實現(xiàn)零件的網(wǎng)格化剖分.
Fig.1 System flow structure圖1 整體方案流程圖
系統(tǒng)整體方案流程如圖1所示,主要內(nèi)容包含以下三個部分:
(1)STL文件格式的分析和讀取
分析STL文件的圖元和文件結(jié)構(gòu),在VC++6.0環(huán)境下進行STL零件圖形文件的讀取程序的編制,完成對STL文件格式的AutoCAD三維實體圖形的讀取.
(2)圖形的再現(xiàn)
利用OpenGL圖形處理技術(shù)對讀取到的零件三維實體數(shù)據(jù)進行描述、繪制,實現(xiàn)圖形的再現(xiàn).
(3)圖形處理技術(shù)
進行網(wǎng)格化剖分內(nèi)容的實驗,并實現(xiàn)機械零件的平移、放大、縮小以及旋轉(zhuǎn)等操作處理.
2.1 STL網(wǎng)格剖分原理簡介
有限差分法( FMD)的網(wǎng)格單元多為直六面體,進行網(wǎng)格剖分的目的是將剖分對象的三維實體在三維空間上進行多邊形剖片處理,從而獲得由大量小六面體“堆砌”而成的目標數(shù)據(jù)對象,為后續(xù)處理作準備[4-5].立方體三角剖分如圖2所示,圖3為三角形網(wǎng)格分層切片處理示意圖.
Fig.2 Triangle meshing of box圖2 立方體三角形剖分
Fig.3 Triangle layer meshing圖3 三角形網(wǎng)格分層切片
Fig.4 Main program flow圖4 主程序流程圖
2.2 程序流程圖
2.2.1 主程序流程圖
主程序流程如圖4所示,主程序流程是對STL網(wǎng)格剖分原理的補充說明.
2.2.2 STL讀取與再現(xiàn)
文獻[6]對文本及二進制格式的STL文件結(jié)構(gòu)、讀取的方法作了詳細介紹,另外,關(guān)于如何添加OpenGL庫文件、編寫OpenGL程序等參見文獻[7],這里不再累述,只給出STL文件讀取與圖形再現(xiàn)的流程圖(圖5)供參考.
Fig.5 STL read and display flow圖5 STL文件讀取與圖形再現(xiàn)流程圖
2.3 核心程序
2.3.1 STL數(shù)據(jù)讀取
采用逐行讀取數(shù)據(jù)的方法,對ASCII的STL文件數(shù)據(jù)信息進行讀取.對于三角面片數(shù)據(jù)信息的處理,采取循環(huán)結(jié)構(gòu)體進行讀取,最后將表示空間三角面片的法向矢量和頂點坐標數(shù)據(jù)存入動態(tài)數(shù)組vert[3]中.具體算法描述如下:1)設(shè)置面緩存和點緩存;2)打開文件;3)判斷文件類型(是ASCII格式還是Binary格式);4)探尋關(guān)鍵字facet normal,讀取并保存面法向量;5)探尋關(guān)鍵字vertex,讀取并保存頂點坐標;6)進行下一個三角面片的讀取;7)讀取完畢.ASCII讀取流程如圖6所示.
Fig.6 ASCII read flow圖6 ASCII讀取流程
2.3.2 STL數(shù)據(jù)模型的顯示
在OpenGL中,可通過調(diào)用glBegin(GLTRIANGLES)和glEnd()函數(shù)來直接生產(chǎn)和渲染三角面片,從而生成所需的實體數(shù)據(jù)模型,因此通過OpenGL來實現(xiàn)STL三維模型的真實感圖形顯示,效果更好.圖形再現(xiàn)的部分代碼如下:
void CWelcomeView::myplane()
{……;
for(int i_0;i {glBegin(GLTRIANGLES); //繪制三角面片 glVertex3f(Vertices[i].x0,vertices[i].y0,vertices[i].z0); glVertex3f(Vertices[i+1].x0,vertices[i+1].y0,vertices[i+1].z0); glVertex3f(Vertices[i+2].x0,vertices[i+2].y0,vertices[i+2].z0); glEnd();)} 運行系統(tǒng)程序,在出現(xiàn)的系統(tǒng)界面上導(dǎo)入STL測試件1,進行剖分處理,得到的不同視圖的網(wǎng)格剖分結(jié)果分別如圖7和圖8所示. Fig.7 Text 1 mesh result圖7 測試件1網(wǎng)格剖分 Fig.8 Text 1 mesh result圖8 測試件1網(wǎng)格剖分 通過以上測試可知,利用VC++6.0進行語言編程,并結(jié)合OpenGL圖形處理技術(shù)能較好地讀取STL格式文件,實現(xiàn)STL實體圖形的再現(xiàn),能夠有效的劃分零件單元,亦包含旋轉(zhuǎn)、放大、縮小等操作,為有限元分析的前期處理作了必要準備. 本文通過對STL文件的深入研究,以VC++6.0為開發(fā)平臺,利用VC++標準IO庫的ifstream類型定義對象并綁定STL文件,再用標準庫string類型中的getline函數(shù)逐行讀取綁定的STL文件并對其中的三角面片頂點數(shù)據(jù)進行存儲,最后結(jié)合OpenGL編程技術(shù)實現(xiàn)了對STL文件讀取與顯示以及網(wǎng)格化剖分的功能,可得出以下結(jié)論: (1)利用VC++6.0和OpenGL等軟件,可以順利實現(xiàn)對STL文件的讀取. (2)OpenGL圖形處理技術(shù)能夠?qū)崿F(xiàn)圖形再現(xiàn)和網(wǎng)格剖分等功能. (3)根據(jù)網(wǎng)格剖分技術(shù),可以提高實體模擬精度. [1]戴文芳,曹宗杰,謝軍.有限元網(wǎng)格自動剖分方法及其在工程中的應(yīng)用[J].長春工程學(xué)院學(xué)報(自然科學(xué)版),2009,10(1):61-64. [2]平學(xué)成,陳夢成,鄭冰冰,等.受熱載荷兩相材料界面端應(yīng)力場的新型有限元分析[J].固體力學(xué)學(xué)報,2013,34(6):591-596. [3]李治國,陳剛.鐘罩式感應(yīng)爐的結(jié)構(gòu)設(shè)計及溫度場有限元分析[J].機械工程師,2014(3):131-132. [4]戴鼎漢,侯華,王忠,等.基于射線法的STL無鋸齒變形六面體網(wǎng)格剖分算法[J].鑄造技術(shù),2009,30(6):808-811. [5]邱宗文,孫國雄,劉永剛,等.基于STL的切片法有限元差分網(wǎng)格剖分的研究[J].特種鑄造及有色合金,2003(6):28-30. [6]耿鐵,任清海.基于OpenGL的STL文件三維模型真實感圖形可視化研究[J].制造業(yè)自動化,2011,33(16):121-124. [7]劉慧杰,靳海亮.基于VC++的OpenGL三維圖形開發(fā)設(shè)計[J].計算機與數(shù)字工程,2009,37(7):122-124. [責(zé)任編輯:王軍] Research on meshing techniques based on STL machine part CHEN Zhiyuan1,FENG Aoao2 (Minorities Teachers College of Qinghai Teachers University,Hainan Tibetan Autonomous Prefecture,Hainan 813000,China;2.School of Economics and Management,Tsinghua University,Beijing 100084,China) For providing the simulation of post-processing stage the basic mesh units,it takes AutoCAD as the graphic input environment,with STL machine part file as the data exchange interface.Through the analysis of STL graphics file structure,data organization method,with VC++6.0 programming,it reads STL three-dimensional entity graph generated by AutoCAD,and then used OpenGL graphics processing technology to reproduce the graphics data read,achieved the functions of graphical mesh,with translation,rotation,scaling,three views and other geometric transformation processing,finally completed the development of programs based on STL mesh. mesh unit; machine part; STL; VC++6.0; OpenGL 2015-12-02 陳智淵(1981-),男,土族,青海樂都人,青海師范大學(xué)講師,主要從事計算機語音圖像處理的研究. TP311 A 1672-3600(2016)12-0050-034 測試結(jié)果
5 結(jié) 論