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