在建模過程中系統(tǒng)使用VisualC6.0語言來編碼,采用標(biāo)準(zhǔn)的圖形接口,實現(xiàn)對OpenGL的支持。由于OpenGL良好的可移植性,特別是與VisualC面向?qū)ο缶幊誊浖Y(jié)合,利用MFC類庫作為OpenGL與Windows的接口,編譯出動態(tài)連接庫,加強(qiáng)了其它應(yīng)用程序調(diào)用的能力。開發(fā)出不但具有立體感強(qiáng)的三維效果,而且能夠提供良好的交互式功能的圖形軟件,使圖形的效果得到直接控制。因此,系統(tǒng)的開發(fā)采用OpenGL來實現(xiàn)虛擬現(xiàn)實接口。
用OpenGL建立數(shù)控加工系統(tǒng)的三維模型在Windows下用GDI作圖通過設(shè)備描述表(DC)調(diào)用相應(yīng)的函數(shù);用OpenGL作圖也是類似,OpenGL函數(shù)是通過渲染描述表(RC)完成三維圖形的繪制。Windows下的窗口和設(shè)備描述表支持位圖格式屬性,與RC有著位圖結(jié)構(gòu)上的一致。只要在創(chuàng)建RC時與一個DC建立聯(lián)系,OpenGL的函數(shù)就可以通過RC對應(yīng)的DC畫到相應(yīng)的顯示設(shè)備上。
經(jīng)過上面的分析,用VisualC建立基于OpenGL的仿真模型步驟如下:創(chuàng)建項目文件NCSystem,包含頭文件與函數(shù)庫文件glgl.h、glglu.h、glglaux.h、opengl32.lib、glu32.lib、glaux.lib文件。
自定義返回類型為BOOL的保護(hù)成員函數(shù)bSetupPixelFormat設(shè)置像素格式,在View類中的OnCreate函數(shù)中調(diào)用它。定義返回類型為void的Protected成員函數(shù)Init,創(chuàng)建著色描述表并當(dāng)前化著色描述表,執(zhí)行完成后,用View類中OnDestroy函數(shù)完成刪除該著色描述表以及綁定上該著色描述表的設(shè)備描述表。在OnCreate函數(shù)中調(diào)用Init,使OpenGL內(nèi)核得到通知已正確地創(chuàng)建了像素格式和著色描述表并對其進(jìn)行了有效的管理。在PreCreateWindows函數(shù)中添加cs.style|=WS_CLIPCHILDREN|WS_CLIPSIBLINGS.接下來在Init函數(shù)中編輯程序以獲得客戶區(qū)的大小、消除深度緩存、啟動深度測試及啟動OpenGL模型變換。在View類中的OnDraw函數(shù)中調(diào)用自定義的DrawScene函數(shù)來完成模型繪制工作。用SwapBuffers函數(shù)交換兩個緩存中的內(nèi)容顯示模型。
這樣就構(gòu)造了一個基于OpenGL標(biāo)準(zhǔn)的數(shù)控加工可視化仿真模型框架。主界面完成的功能及設(shè)計主界面分3個區(qū):數(shù)據(jù)的動態(tài)顯示區(qū)、軌跡動態(tài)顯示區(qū)、加工程序顯示區(qū)。數(shù)據(jù)的動態(tài)顯示區(qū)包括工件坐標(biāo)和機(jī)床坐標(biāo)值、每個加工段的相對坐標(biāo)值顯示以及加工時的刀號、主軸轉(zhuǎn)速、進(jìn)給速度的顯示。從主界面中直接進(jìn)入機(jī)床調(diào)整界面、NC代碼的編輯和編譯界面、自動加工界面、系統(tǒng)參數(shù)設(shè)置界面。
結(jié)語在VC開發(fā)環(huán)境下構(gòu)建了一個基于OpenGL的標(biāo)準(zhǔn)程序框架,實現(xiàn)了數(shù)控加工銑削運動的仿真系統(tǒng),縮短了研發(fā)周期,節(jié)省資金,并為新的研究方法及理論搭建了一個可視化測試平臺,亦可作為虛擬制造中的一個制造單元工具,實現(xiàn)產(chǎn)品的數(shù)字化生產(chǎn)。同時系統(tǒng)具有如下的特點:(1)易移植性:雖然是在WindowsXP平臺上開發(fā)的,但采用OpenGL生成圖形,它獨立于窗口系統(tǒng)和操作系統(tǒng),因此十分方便地在各種平臺間移植;(2)真實性:由于采用實體造型,結(jié)合光照、紋理、顏色等一系列特殊處理,使得仿真加工環(huán)境更接近真實;(3)易開發(fā)性:OpenGL的使用,使系統(tǒng)圖形的編程量減少,開發(fā)者無須掌握大量的圖形學(xué)知識,而可以集中精力掌握困難的算法問題。