劉俊英 梁 豐 蔣紅海
(①河源職業技術學院機電工程學院,廣東河源 517000;②四川大學制造科學與工程學院,四川成都 610065)
從上個世紀90年代開始,CAD/CAM系統發展迅猛,各國開發的軟件均向集成化、網絡化、智能化和虛擬化方向發展。目前國內外應用比較廣泛的CAD/CAM系統有UG、MasterCAM和CAXA。這些系統屬于中、大型系統,功能相當豐富,但因其功能強大,成本較高,對中小企業而言,有些功能用不到又造價高,所以并不完全適用于中小企業[1]。
為了開發適用于我國中小企業的小型交互式CAD/CAM集成系統,本文對其進行了研究,并在廣東省河源職業技術學院進行了科研立項。
本系統包括有3大模塊,分別是綜合功能模塊、CAD功能模塊和CAM功能模塊。總體架構如圖1。
(1)系統綜合功能模塊 本系統提供了設備驅動功能、交互式界面、圖形顯示功能、數據輸入輸出及轉換等系統綜合功能。
設備驅動功能主要是驅動繪圖儀及打印機等;交互式界面包括下拉式菜單、工具條、動態彈出菜單、對話框、命令語言和功能鍵等;圖形顯示功能包括圖形縮放、圖形平移、動態顯示、透明命令和視圖管理等;數據輸入輸出及轉換功能包括IGES、DXF、DWG、ASCII格式的數據輸入輸出及轉換。

(2)CAD功能模塊 包括簡單幾何造型設計及復雜曲面造型設計。
簡單幾何造型設計具有二維草圖設計(包括直線、二次曲線、自由曲線的設計生成,以及圖元之間的參數化約束關系的建立,圖形編輯功能等)、規則曲面和實體設計、規則曲面及實體編輯等功能。
復雜曲面造型設計具有二次曲面設計及自由曲面設計等功能。
(3)CAM功能模塊 包括有數控加工編程、刀具軌跡生成、刀具軌跡編輯、加工過程仿真及后置處理幾項功能。
數控加工編程可以進行點位、二維型腔、二維輪廓、三維曲線曲面加工編程;刀具軌跡生成及編輯功能可以進行刀具軌跡顯示、刀具軌跡存儲、刀具軌跡文本顯示及修改等操作。
CAM功能是本系統開發的難點。為了實現用戶與系統的交互CAM功能,根據多方經驗[2],按照如圖2所示進行了系統工作原理設計。

(1)系統開發語言的選擇 開發語言的選擇是本系統開發的首要問題。由于本系統是面向中小企業而開發的,系統功能較簡單,以此不采用CAD/CAM軟件開發平臺。為使開發出的系統能夠升級及擴展,一定要選擇曾經流行、時下生命力強大的語言,而且要在可預見的將來仍然有很好的應用前景。對比VC++、VB、C語言等時下流行的語言,本系統的開發選擇了功能強大、適用范圍廣、開發較容易的VC++來實現。
(2)統一數學描述問題 初等解析幾何曲線、曲面,自由曲線、自由曲面在CAD/CAM系統中應用廣泛,但長期以來對它們的描述采用的是多種不同的數學方法,這增加了CAD/CAM系統開發的復雜程度。為解決此問題,本系統的研究利用日趨成熟的NURBS技術來開發具有統一數學描述的CAD/CAM系統[3]。
(3)三維場景搭建工具的確定 對一個交互式CAD/CAM系統而言,除了要能實現三維實體的造型及加工功能,也要具備三維仿真功能,以便演示三維實體構造及加工的效果。因此,搭建一個具有光照、渲染等功能的三維場景,用來顯示三維物體及其加工過程是必不可少的。當今流行的OpenGL圖形庫技術正是實現這一功能的理想開發工具。
本系統的交互式界面由主菜單(下拉式)、繪圖工具條、繪圖區域快捷菜單、數據輸入及狀態域菜單構成。主菜單與繪圖工具條的功能相對應。除此之外,為實現CAD/CAM系統中的圖形坐標輸入、命令讀入、圖形拾取和坐標變換等都要用到圖形動態定位技術(橡皮筋技術、牽引技術)、定量技術、文本技術、選擇和拾取技術等交互技術。
以下將以命令讀入操作的實現為例,介紹本系統進行交互式界面設計的具體實現方法。本系統利用窗口CWnd類的成員函數——void OnChar(UNIT nChar,UNIT nRepCnt,UNIT nFlags)來實現命令讀入操作。具體實現方法見圖3所示。
對三維圖形而言,要求能夠在空間任意位置觀察物體,所以三維物體描述必須投影到輸出設備上。與二維圖形相比,三維圖形的剪裁邊界不再是直線而是面,剪裁邊界圍成一個體,圖形形狀依賴于所選擇的投影類型。利用OpenGL圖形庫實現三維視圖功能是非常有效的,能加快系統開發進程。因此,本系統的三維視圖觀察功能是建立在OpenGL圖形技術之上的。

在OpenGL中,視圖變換必須調用glMatrixMode()函數[4]。每一個 glMatrixMode()函數或其他變換函數,都是在上一個變換得到的當前模型視圖T的基礎上乘以指定的矩陣P得到新的當前矩陣TP。OpenGL中進行模型變換的3個子函數是:glTranslate*()、gl-Rotate*()和glScale*()。這些函數將通過移動、旋轉和縮放來變換一個物體或其坐標系。本系統在定義視圖變換的函數中綜合使用了基本平移、旋轉和縮放函數,同時也使用了OpenGL子程序庫函數void glu-LookAt。本系統在設計三維觀察時封裝了這個函數,使用對話框來選擇觀察圖形的位置。
為了給系統開發及升級帶來方便,本系統采用NURBS技術來表示初等解析曲線(如圓、圓弧等)。統一數學描述就要進行統一的數據結構,這就要考慮不同圖形的顯示和最終數控代碼的生成。以繪制圓弧為例,因圓弧的表達是分為不同的弧度區間來定義的,因此就要對輸入的交互式命令參數使用不同的控制頂點和節點矢量,有時還要計算希望繪制的弧度的角度,例如三點繪制圓弧就要計算圓弧對應的弧度,而極坐標繪圖就可以直接給出圓弧的NURBS計算參數[5]。這無疑會增加計算量,帶來存取數據容量增大的問題。考慮到目前的PC機內存容量和硬盤容量均非常大,以此對系統的運行影響不大。
以圖形類定義為例,采用初等解析幾何曲線與自由曲線的數學描述分開的方法進行類定義如圖4a所示,而采用統一的數學描述之后的情況如圖4b所示。從圖中類構成關系可以清楚地看到,類的構成被極大地簡化了。這使得系統設計所要考慮的不同類之間的繼承與派生關系變得非常容易,為系統的開發帶來了許多方便。

在進行外形輪廓加工時主要考慮的問題包括有選擇刀具、安全高度、進刀及退刀方式、工藝路線等。本系統通過刀具軌跡參數定義、外形輪廓序列化、二維圖形數據有效重排、輪廓加工數控代碼生成程序等幾個步驟實現了二維外形輪廓加工刀具軌跡生成功能。
本文所開發的CAD/CAM系統具有交互式界面、圖形顯示等綜合功能以及必要的CAD/CAM功能,系統成本低,適用于中小企業應用。因開發所使用的是VC++語言以及OpenGL圖形庫技術,并不是建立在CAD/CAM軟件開發平臺基礎上,故系統開發具有自主知識版權并且容易進行升級和擴展。
[1]肖英,羅超.中小企業CAD/CAM系統的選型[J].制造技術與機床,2009(8):106-109.
[2]何春生.CAD/CAM系統集成的研究與應用[J].中國機械工程,2006,17(13).
[3]張克華,劉智強,肖蘇華.線切割CAD/CAM系統開發中的自由曲線造型方法研究[J].河北軟件職業技術學院學報,2006(12).
[4]李穎,薛海濱,朱伯立,等.OpenGL函數與范例解析手冊[M].北京:國防工業出版社,2002.
[5]韓明,孔亞洲,董煬斌.圓弧曲線的二次NURBS表示方法研究[J].華中科技大學學報,2001(12).