蔡洪濤,黃伏光,何毅斌
(1武漢工程大學(xué)機電工程學(xué)院,湖北 武漢 430073;2荊州市特種設(shè)備檢驗檢測所,湖北 荊州 434400)
目前市場上流行的計算機輔助繪圖軟件大都是交互式的,具有功能強大、應(yīng)用面廣的優(yōu)點[1],但是也有針對性差,繪圖效率低的缺點.利用基于約束的參數(shù)化設(shè)計繪圖技術(shù)對這類軟件進行二次開發(fā),定制專業(yè)特點突出的個性軟件可以很好地解決這個問題.該技術(shù)是指編制圖形程序繪制基本結(jié)構(gòu)相似的零部件,當(dāng)給出圖形各個部分的控制參數(shù)時便能迅速生成零部件圖形的繪圖方法[2].國產(chǎn)軟件CAXA系統(tǒng)提供了基于VC++的二次開發(fā)平臺.本文利用此平臺開發(fā)了JB/T4712-2007“容器支座”[3]中4種支座及裙式支座的參數(shù)化繪圖軟件vesselsupport.eba.將此軟件加載到CAXA系統(tǒng)中,能在CAXA的主菜單后生成“容器支座”主菜單,此菜單下有對應(yīng)于4種支座及裙式支座的子菜單,分別點擊,則得到各支座的幾個視圖.
要安裝Microsoft Visual C++6.0和CAXA系統(tǒng).程序的編譯、連接及調(diào)試均在VC++6.0中進行.CAXA的二次開發(fā)平臺EBADS(Electronic Board Application Develop System)提供了對應(yīng)于CAXA交互式繪圖命令的API函數(shù).這些函數(shù)包括:交互實現(xiàn)、系統(tǒng)操作、實體部分、數(shù)據(jù)管理、幾何運算和圖形編輯等,基本可以實現(xiàn)所有的圖形操作[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電子圖板應(yīng)用程序開發(fā)向?qū)А眲?chuàng)建一個新的工程,命名為“vesselsupport”.此工程生成的文件有“Source Files” 、“Header Files”和“Resource Files” .主要文件是 funcdef.h,vesselsupport.cpp和stddll.cpp.在資源編輯中添加菜單資源及子菜單資源.完成后的界面如圖1所示.
圖1 添加菜單資源
在vesselsupport.cpp文件中添加實現(xiàn)菜單點擊并得到響應(yīng)的代碼.代碼為:
其中,“ID ANZUO”等是各種支座子菜單的標(biāo)識符,“anzuo”等是消息響應(yīng)函數(shù)的名稱.消息響應(yīng)函數(shù)名稱應(yīng)與fundef.h文件中申明的函數(shù)名稱一致.本例的此文件全部內(nèi)容如下:
到目前為止,上述消息響應(yīng)函數(shù)是空的,單擊其菜單,無反應(yīng).為此應(yīng)該編寫代碼,完成對應(yīng)支座視圖的繪制.EBADS提供的API函數(shù)相當(dāng)于交互式的繪圖命令,實體的特征點坐標(biāo)用變量表示,作為函數(shù)的參數(shù).程序中圖形繪制的代碼的編制與實際繪圖的過程相同.那么剩下的問題就是數(shù)據(jù)處理了,本文以耳式支座為例加以說明.
“容器支座”中給出了A型、B型和C型3種結(jié)構(gòu)的耳式支座,根據(jù)其適應(yīng)的筒體直徑的不同,每種支座又有8種結(jié)構(gòu)尺寸,每一種結(jié)構(gòu)尺寸有16個尺寸,形成一個二維表格.二維表格習(xí)慣上用二維數(shù)組表示.先將表格編寫為一個數(shù)據(jù)文件,然后將數(shù)據(jù)讀入二維數(shù)組.三種支座的數(shù)據(jù)表格用三個數(shù)據(jù)文件.不過,因為二維數(shù)組的數(shù)據(jù)的二維下標(biāo)沒有意義,編程時容易出錯,本文再將數(shù)據(jù)從數(shù)組讀入一個結(jié)構(gòu)體中,以結(jié)構(gòu)體成員變量作為參數(shù)參與圖形實體特征點坐標(biāo)的計算.結(jié)構(gòu)體定義為:
3種支座結(jié)構(gòu)基本相同,只是局部結(jié)構(gòu)有所變化,因此3種支座共用一種繪圖的代碼,得到基本的結(jié)構(gòu)視圖后,再作修改.
根據(jù)上述框圖編制的程序代碼即是消息響應(yīng)函數(shù)erzuo(int&step,int&flag)的主要內(nèi)容.將此代碼保存為一個單獨的.cpp文件,加載到工程vesselsupport中,編譯、連接,無錯誤后,生成 vesselsupport.eba文件.將此文件拷貝到CAXA Ebads 目錄下,運行CAXA系統(tǒng),單擊主菜單文件下的“應(yīng)用程序管理器”,加載此文件,則得到如圖2的界面.可見在CAXA系統(tǒng)的主菜單后面生成了“容器支座”主菜單.此時“耳式支座”就相當(dāng)于一個繪圓、繪直線的命令了.試繪制支座,如果3種支座都能正確繪制,則證明程序正確;否則修改繪圖部分代碼,再編譯連接生成(.eba)文件,再運行,直到結(jié)果正確.下圖是容器直徑為3000 mm,厚度為20 mm,3種類型的6號支座的繪制結(jié)果.
CAXA的二次開發(fā)平臺EBADS提供了應(yīng)用程序模板,用戶只需要在此框架內(nèi)添加功能實現(xiàn)代碼就可完成相應(yīng)的程序編制.采用面向圖形對象實體的方法編程,與實際的繪圖過程類似.其API函數(shù)好記易學(xué).利用本文方法編制的化工設(shè)備支座的程序能實現(xiàn)各種支座的參數(shù)化繪圖,有快速準(zhǔn)確的特點,具有較強的實用價值.
[1]鄭晨升.實用CAXA繪圖及二次開發(fā)技術(shù)[M].北京:化學(xué)工業(yè)出版社,2005
[2]孫家廣.計算機輔助設(shè)計技術(shù)基礎(chǔ)[M].北京:清華大學(xué)出版社,2000
[3]JB/T4712-2007《容器支座》[EB/OL〗 .(2011-03-20)http://www.5ibzq.com.
[4]龍宋軍,張文斌,魏中平.CAXA系統(tǒng)設(shè)計與開發(fā)[M].北京:國防工業(yè)出版社,2004.