蔡洪濤,黃伏光,何毅斌
(1武漢工程大學機電工程學院,湖北 武漢 430073;2荊州市特種設備檢驗檢測所,湖北 荊州 434400)
目前市場上流行的計算機輔助繪圖軟件大都是交互式的,具有功能強大、應用面廣的優點[1],但是也有針對性差,繪圖效率低的缺點.利用基于約束的參數化設計繪圖技術對這類軟件進行二次開發,定制專業特點突出的個性軟件可以很好地解決這個問題.該技術是指編制圖形程序繪制基本結構相似的零部件,當給出圖形各個部分的控制參數時便能迅速生成零部件圖形的繪圖方法[2].國產軟件CAXA系統提供了基于VC++的二次開發平臺.本文利用此平臺開發了JB/T4712-2007“容器支座”[3]中4種支座及裙式支座的參數化繪圖軟件vesselsupport.eba.將此軟件加載到CAXA系統中,能在CAXA的主菜單后生成“容器支座”主菜單,此菜單下有對應于4種支座及裙式支座的子菜單,分別點擊,則得到各支座的幾個視圖.
要安裝Microsoft Visual C++6.0和CAXA系統.程序的編譯、連接及調試均在VC++6.0中進行.CAXA的二次開發平臺EBADS(Electronic Board Application Develop System)提供了對應于CAXA交互式繪圖命令的API函數.這些函數包括:交互實現、系統操作、實體部分、數據管理、幾何運算和圖形編輯等,基本可以實現所有的圖形操作[4].
完成安裝后將文件CAXA EBADS Wizard Eb-adw.awx拷貝到Microsoft Visual Studio Common MSDev98 Template目錄下.在VC++界面的主菜單 TOOLs的子菜單項Options中加入CAXA的頭文件和庫文件的目錄路徑,它們分別是CAXA EBADS INCLUDE和CAXA EBADS LIB.
在VC++6.0下利用“CAXA電子圖板應用程序開發向導”創建一個新的工程,命名為“vesselsupport”.此工程生成的文件有“Source Files” 、“Header Files”和“Resource Files” .主要文件是 funcdef.h,vesselsupport.cpp和stddll.cpp.在資源編輯中添加菜單資源及子菜單資源.完成后的界面如圖1所示.

圖1 添加菜單資源
在vesselsupport.cpp文件中添加實現菜單點擊并得到響應的代碼.代碼為:


其中,“ID ANZUO”等是各種支座子菜單的標識符,“anzuo”等是消息響應函數的名稱.消息響應函數名稱應與fundef.h文件中申明的函數名稱一致.本例的此文件全部內容如下:

到目前為止,上述消息響應函數是空的,單擊其菜單,無反應.為此應該編寫代碼,完成對應支座視圖的繪制.EBADS提供的API函數相當于交互式的繪圖命令,實體的特征點坐標用變量表示,作為函數的參數.程序中圖形繪制的代碼的編制與實際繪圖的過程相同.那么剩下的問題就是數據處理了,本文以耳式支座為例加以說明.
“容器支座”中給出了A型、B型和C型3種結構的耳式支座,根據其適應的筒體直徑的不同,每種支座又有8種結構尺寸,每一種結構尺寸有16個尺寸,形成一個二維表格.二維表格習慣上用二維數組表示.先將表格編寫為一個數據文件,然后將數據讀入二維數組.三種支座的數據表格用三個數據文件.不過,因為二維數組的數據的二維下標沒有意義,編程時容易出錯,本文再將數據從數組讀入一個結構體中,以結構體成員變量作為參數參與圖形實體特征點坐標的計算.結構體定義為:


3種支座結構基本相同,只是局部結構有所變化,因此3種支座共用一種繪圖的代碼,得到基本的結構視圖后,再作修改.
根據上述框圖編制的程序代碼即是消息響應函數erzuo(int&step,int&flag)的主要內容.將此代碼保存為一個單獨的.cpp文件,加載到工程vesselsupport中,編譯、連接,無錯誤后,生成 vesselsupport.eba文件.將此文件拷貝到CAXA Ebads 目錄下,運行CAXA系統,單擊主菜單文件下的“應用程序管理器”,加載此文件,則得到如圖2的界面.可見在CAXA系統的主菜單后面生成了“容器支座”主菜單.此時“耳式支座”就相當于一個繪圓、繪直線的命令了.試繪制支座,如果3種支座都能正確繪制,則證明程序正確;否則修改繪圖部分代碼,再編譯連接生成(.eba)文件,再運行,直到結果正確.下圖是容器直徑為3000 mm,厚度為20 mm,3種類型的6號支座的繪制結果.


CAXA的二次開發平臺EBADS提供了應用程序模板,用戶只需要在此框架內添加功能實現代碼就可完成相應的程序編制.采用面向圖形對象實體的方法編程,與實際的繪圖過程類似.其API函數好記易學.利用本文方法編制的化工設備支座的程序能實現各種支座的參數化繪圖,有快速準確的特點,具有較強的實用價值.
[1]鄭晨升.實用CAXA繪圖及二次開發技術[M].北京:化學工業出版社,2005
[2]孫家廣.計算機輔助設計技術基礎[M].北京:清華大學出版社,2000
[3]JB/T4712-2007《容器支座》[EB/OL〗 .(2011-03-20)http://www.5ibzq.com.
[4]龍宋軍,張文斌,魏中平.CAXA系統設計與開發[M].北京:國防工業出版社,2004.