劉俊英 梁 豐 蔣紅海
(①河源職業(yè)技術(shù)學(xué)院機(jī)電工程學(xué)院,廣東河源 517000;②四川大學(xué)制造科學(xué)與工程學(xué)院,四川成都 610065)
從上個(gè)世紀(jì)90年代開始,CAD/CAM系統(tǒng)發(fā)展迅猛,各國開發(fā)的軟件均向集成化、網(wǎng)絡(luò)化、智能化和虛擬化方向發(fā)展。目前國內(nèi)外應(yīng)用比較廣泛的CAD/CAM系統(tǒng)有UG、MasterCAM和CAXA。這些系統(tǒng)屬于中、大型系統(tǒng),功能相當(dāng)豐富,但因其功能強(qiáng)大,成本較高,對(duì)中小企業(yè)而言,有些功能用不到又造價(jià)高,所以并不完全適用于中小企業(yè)[1]。
為了開發(fā)適用于我國中小企業(yè)的小型交互式CAD/CAM集成系統(tǒng),本文對(duì)其進(jìn)行了研究,并在廣東省河源職業(yè)技術(shù)學(xué)院進(jìn)行了科研立項(xiàng)。
本系統(tǒng)包括有3大模塊,分別是綜合功能模塊、CAD功能模塊和CAM功能模塊??傮w架構(gòu)如圖1。
(1)系統(tǒng)綜合功能模塊 本系統(tǒng)提供了設(shè)備驅(qū)動(dòng)功能、交互式界面、圖形顯示功能、數(shù)據(jù)輸入輸出及轉(zhuǎn)換等系統(tǒng)綜合功能。
設(shè)備驅(qū)動(dòng)功能主要是驅(qū)動(dòng)繪圖儀及打印機(jī)等;交互式界面包括下拉式菜單、工具條、動(dòng)態(tài)彈出菜單、對(duì)話框、命令語言和功能鍵等;圖形顯示功能包括圖形縮放、圖形平移、動(dòng)態(tài)顯示、透明命令和視圖管理等;數(shù)據(jù)輸入輸出及轉(zhuǎn)換功能包括IGES、DXF、DWG、ASCII格式的數(shù)據(jù)輸入輸出及轉(zhuǎn)換。
(2)CAD功能模塊 包括簡單幾何造型設(shè)計(jì)及復(fù)雜曲面造型設(shè)計(jì)。
簡單幾何造型設(shè)計(jì)具有二維草圖設(shè)計(jì)(包括直線、二次曲線、自由曲線的設(shè)計(jì)生成,以及圖元之間的參數(shù)化約束關(guān)系的建立,圖形編輯功能等)、規(guī)則曲面和實(shí)體設(shè)計(jì)、規(guī)則曲面及實(shí)體編輯等功能。
復(fù)雜曲面造型設(shè)計(jì)具有二次曲面設(shè)計(jì)及自由曲面設(shè)計(jì)等功能。
(3)CAM功能模塊 包括有數(shù)控加工編程、刀具軌跡生成、刀具軌跡編輯、加工過程仿真及后置處理幾項(xiàng)功能。
數(shù)控加工編程可以進(jìn)行點(diǎn)位、二維型腔、二維輪廓、三維曲線曲面加工編程;刀具軌跡生成及編輯功能可以進(jìn)行刀具軌跡顯示、刀具軌跡存儲(chǔ)、刀具軌跡文本顯示及修改等操作。
CAM功能是本系統(tǒng)開發(fā)的難點(diǎn)。為了實(shí)現(xiàn)用戶與系統(tǒng)的交互CAM功能,根據(jù)多方經(jīng)驗(yàn)[2],按照如圖2所示進(jìn)行了系統(tǒng)工作原理設(shè)計(jì)。
(1)系統(tǒng)開發(fā)語言的選擇 開發(fā)語言的選擇是本系統(tǒng)開發(fā)的首要問題。由于本系統(tǒng)是面向中小企業(yè)而開發(fā)的,系統(tǒng)功能較簡單,以此不采用CAD/CAM軟件開發(fā)平臺(tái)。為使開發(fā)出的系統(tǒng)能夠升級(jí)及擴(kuò)展,一定要選擇曾經(jīng)流行、時(shí)下生命力強(qiáng)大的語言,而且要在可預(yù)見的將來仍然有很好的應(yīng)用前景。對(duì)比VC++、VB、C語言等時(shí)下流行的語言,本系統(tǒng)的開發(fā)選擇了功能強(qiáng)大、適用范圍廣、開發(fā)較容易的VC++來實(shí)現(xiàn)。
(2)統(tǒng)一數(shù)學(xué)描述問題 初等解析幾何曲線、曲面,自由曲線、自由曲面在CAD/CAM系統(tǒng)中應(yīng)用廣泛,但長期以來對(duì)它們的描述采用的是多種不同的數(shù)學(xué)方法,這增加了CAD/CAM系統(tǒng)開發(fā)的復(fù)雜程度。為解決此問題,本系統(tǒng)的研究利用日趨成熟的NURBS技術(shù)來開發(fā)具有統(tǒng)一數(shù)學(xué)描述的CAD/CAM系統(tǒng)[3]。
(3)三維場景搭建工具的確定 對(duì)一個(gè)交互式CAD/CAM系統(tǒng)而言,除了要能實(shí)現(xiàn)三維實(shí)體的造型及加工功能,也要具備三維仿真功能,以便演示三維實(shí)體構(gòu)造及加工的效果。因此,搭建一個(gè)具有光照、渲染等功能的三維場景,用來顯示三維物體及其加工過程是必不可少的。當(dāng)今流行的OpenGL圖形庫技術(shù)正是實(shí)現(xiàn)這一功能的理想開發(fā)工具。
本系統(tǒng)的交互式界面由主菜單(下拉式)、繪圖工具條、繪圖區(qū)域快捷菜單、數(shù)據(jù)輸入及狀態(tài)域菜單構(gòu)成。主菜單與繪圖工具條的功能相對(duì)應(yīng)。除此之外,為實(shí)現(xiàn)CAD/CAM系統(tǒng)中的圖形坐標(biāo)輸入、命令讀入、圖形拾取和坐標(biāo)變換等都要用到圖形動(dòng)態(tài)定位技術(shù)(橡皮筋技術(shù)、牽引技術(shù))、定量技術(shù)、文本技術(shù)、選擇和拾取技術(shù)等交互技術(shù)。
以下將以命令讀入操作的實(shí)現(xiàn)為例,介紹本系統(tǒng)進(jìn)行交互式界面設(shè)計(jì)的具體實(shí)現(xiàn)方法。本系統(tǒng)利用窗口CWnd類的成員函數(shù)——void OnChar(UNIT nChar,UNIT nRepCnt,UNIT nFlags)來實(shí)現(xiàn)命令讀入操作。具體實(shí)現(xiàn)方法見圖3所示。
對(duì)三維圖形而言,要求能夠在空間任意位置觀察物體,所以三維物體描述必須投影到輸出設(shè)備上。與二維圖形相比,三維圖形的剪裁邊界不再是直線而是面,剪裁邊界圍成一個(gè)體,圖形形狀依賴于所選擇的投影類型。利用OpenGL圖形庫實(shí)現(xiàn)三維視圖功能是非常有效的,能加快系統(tǒng)開發(fā)進(jìn)程。因此,本系統(tǒng)的三維視圖觀察功能是建立在OpenGL圖形技術(shù)之上的。
在OpenGL中,視圖變換必須調(diào)用glMatrixMode()函數(shù)[4]。每一個(gè) glMatrixMode()函數(shù)或其他變換函數(shù),都是在上一個(gè)變換得到的當(dāng)前模型視圖T的基礎(chǔ)上乘以指定的矩陣P得到新的當(dāng)前矩陣TP。OpenGL中進(jìn)行模型變換的3個(gè)子函數(shù)是:glTranslate*()、gl-Rotate*()和glScale*()。這些函數(shù)將通過移動(dòng)、旋轉(zhuǎn)和縮放來變換一個(gè)物體或其坐標(biāo)系。本系統(tǒng)在定義視圖變換的函數(shù)中綜合使用了基本平移、旋轉(zhuǎn)和縮放函數(shù),同時(shí)也使用了OpenGL子程序庫函數(shù)void glu-LookAt。本系統(tǒng)在設(shè)計(jì)三維觀察時(shí)封裝了這個(gè)函數(shù),使用對(duì)話框來選擇觀察圖形的位置。
為了給系統(tǒng)開發(fā)及升級(jí)帶來方便,本系統(tǒng)采用NURBS技術(shù)來表示初等解析曲線(如圓、圓弧等)。統(tǒng)一數(shù)學(xué)描述就要進(jìn)行統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),這就要考慮不同圖形的顯示和最終數(shù)控代碼的生成。以繪制圓弧為例,因圓弧的表達(dá)是分為不同的弧度區(qū)間來定義的,因此就要對(duì)輸入的交互式命令參數(shù)使用不同的控制頂點(diǎn)和節(jié)點(diǎn)矢量,有時(shí)還要計(jì)算希望繪制的弧度的角度,例如三點(diǎn)繪制圓弧就要計(jì)算圓弧對(duì)應(yīng)的弧度,而極坐標(biāo)繪圖就可以直接給出圓弧的NURBS計(jì)算參數(shù)[5]。這無疑會(huì)增加計(jì)算量,帶來存取數(shù)據(jù)容量增大的問題??紤]到目前的PC機(jī)內(nèi)存容量和硬盤容量均非常大,以此對(duì)系統(tǒng)的運(yùn)行影響不大。
以圖形類定義為例,采用初等解析幾何曲線與自由曲線的數(shù)學(xué)描述分開的方法進(jìn)行類定義如圖4a所示,而采用統(tǒng)一的數(shù)學(xué)描述之后的情況如圖4b所示。從圖中類構(gòu)成關(guān)系可以清楚地看到,類的構(gòu)成被極大地簡化了。這使得系統(tǒng)設(shè)計(jì)所要考慮的不同類之間的繼承與派生關(guān)系變得非常容易,為系統(tǒng)的開發(fā)帶來了許多方便。
在進(jìn)行外形輪廓加工時(shí)主要考慮的問題包括有選擇刀具、安全高度、進(jìn)刀及退刀方式、工藝路線等。本系統(tǒng)通過刀具軌跡參數(shù)定義、外形輪廓序列化、二維圖形數(shù)據(jù)有效重排、輪廓加工數(shù)控代碼生成程序等幾個(gè)步驟實(shí)現(xiàn)了二維外形輪廓加工刀具軌跡生成功能。
本文所開發(fā)的CAD/CAM系統(tǒng)具有交互式界面、圖形顯示等綜合功能以及必要的CAD/CAM功能,系統(tǒng)成本低,適用于中小企業(yè)應(yīng)用。因開發(fā)所使用的是VC++語言以及OpenGL圖形庫技術(shù),并不是建立在CAD/CAM軟件開發(fā)平臺(tái)基礎(chǔ)上,故系統(tǒng)開發(fā)具有自主知識(shí)版權(quán)并且容易進(jìn)行升級(jí)和擴(kuò)展。
[1]肖英,羅超.中小企業(yè)CAD/CAM系統(tǒng)的選型[J].制造技術(shù)與機(jī)床,2009(8):106-109.
[2]何春生.CAD/CAM系統(tǒng)集成的研究與應(yīng)用[J].中國機(jī)械工程,2006,17(13).
[3]張克華,劉智強(qiáng),肖蘇華.線切割CAD/CAM系統(tǒng)開發(fā)中的自由曲線造型方法研究[J].河北軟件職業(yè)技術(shù)學(xué)院學(xué)報(bào),2006(12).
[4]李穎,薛海濱,朱伯立,等.OpenGL函數(shù)與范例解析手冊[M].北京:國防工業(yè)出版社,2002.
[5]韓明,孔亞洲,董煬斌.圓弧曲線的二次NURBS表示方法研究[J].華中科技大學(xué)學(xué)報(bào),2001(12).