付 饒
(綿陽職業(yè)技術(shù)學院,綿陽 621000)
所謂的Pro/TOOLKIT應(yīng)用程序,是指利用Pro/E系統(tǒng)提供的Pro/TOOLKIT工具包的支持,用C語言進行程序設(shè)計,采用C編譯器和連接器創(chuàng)建能夠在Pro/E環(huán)境運行的可執(zhí)行程序(文件后綴名為EXE)或動態(tài)連接庫程序(文件后綴名為DLL)形式的程序[1]。對于不同的操作系統(tǒng)平臺,在編譯和連接生成Pro/TOOLKIT應(yīng)用程序時,編譯器選項和所需的系統(tǒng)庫文件通常是不同的。要使Pro/TOOLKIT應(yīng)用程序在Pro/E環(huán)境下正常運行,必須正確設(shè)置編譯和連接選項。
用Pro/TOOLKIT開發(fā)應(yīng)用程序有兩種模式:同步模式(Synchronous Mode)和異步模式(Asynchronous Mode)[2]。在著手進行應(yīng)用程序開發(fā)前,必須先選擇采用同步模式還是異步模式。同步模式下,Pro/E根據(jù)注冊文件中的信息啟動應(yīng)用程序,Pro/TOOLKIT應(yīng)用程序和Pro/E產(chǎn)生各自的進程,程序的控制權(quán)在兩個進程之間切換。該應(yīng)用程序不能夠獨立于Pro/E 而運行。異步模式下,Pro/TOOLKIT應(yīng)用程序和Pro/E能夠進行各自的操作,在通信方面,異步模式使用遠程調(diào)用(Remote Procedure Calls, RPC)方式,程序(含有獨立主函數(shù))能獨立于Pro/E啟動。由于異步模式采用遠程調(diào)用,程序運行速度相比同步模式慢很多,整合性也不好,所以,一般基于Pro/E的Pro/TOOLKIT開發(fā)采用同步模式。在同步模式下又有兩種開發(fā)方式:動態(tài)鏈接庫(DLL Mode)和多進程(Multi-process或Spawned Mode)。前者為動態(tài)連接庫文件,無自身主程序函數(shù),直接連接于Pro/E進行程序調(diào)用。后者為.exe文件,有獨立的主程序和Pro/E進行相連接。一般為了調(diào)試方便,開發(fā)程序時可以采用多進程模式,在程序完成時,采用動態(tài)連接庫以提高程序運行效率[3]。由于本課題的應(yīng)用程序并不是十分復雜,所以從始至終都采用動態(tài)鏈接庫的方式。
創(chuàng)建Pro/TOOLKIT應(yīng)用程序的方法有兩種,即利用Make文件創(chuàng)建和利用VC向?qū)?chuàng)建。默認安裝時,在protoolkiti486_ntobj文件火,文件名前綴為Make_的文件為Pro/TOOLKIT工具包提供的Make文件范例。將其擴展名改為.mak,可在VC++(Microsoft Visual C++ 6.0)環(huán)境打開該文件,并可直接創(chuàng)建應(yīng)用程序。但采用Make文件的方法創(chuàng)建Pro/TOOLKIT應(yīng)用程序必須用手工修改make文件,程序的設(shè)計和調(diào)試均不方便。另外,由于這種方式無法使用MFC類庫,因而不能充分利用VC++的資源。特別是在人機交互界面設(shè)計時不能直接進行對話框的可視化設(shè)計。因而直接利用VC++的應(yīng)用程序設(shè)計向?qū)?App Wizard)和類向?qū)?Class Wizard)來進行Pro/TOOLKTT應(yīng)用程序的設(shè)計、創(chuàng)建和調(diào)試,無疑是一種更佳選擇[4]。因此,本課題的應(yīng)用程序利用VC++向?qū)У姆绞絼?chuàng)建。
使用Pro/TOOLKIT開發(fā)應(yīng)用程序包含五個基本步驟:編寫源文件(源代碼文件和資源文件);編譯和連接,生成可執(zhí)行文件(DLL或EXE文件);注冊Pro/TOOLKIT應(yīng)用程序;運行應(yīng)用程序;停止和重啟動應(yīng)用程序。
源文件包括資源文件和C++源代碼文件:資源文件包括菜單資源文件、對話框資源文件和信息文件等;程序源文件是指我們在VC++環(huán)境下編寫的C++程序。
一般需要制作makefile工程文件,可以根據(jù)Pro/E自帶的makefile文件修改,由該文件指定庫文件、頭文件、源文件的位置及要生成的EXE文件和DLL文件的名稱等,也可以在VC++ 6.0環(huán)境中設(shè)定,指定必要庫文件和頭文件的包含目錄,添加必要的庫文件:protk_dll.lib、mpr.lib[5]。完成設(shè)置后就可以編譯Pro/TOOLKIT應(yīng)用程序生成動態(tài)鏈接庫文件了。
注冊Pro/TOOLKIT應(yīng)用程序是指將Pro/TOOLKIT應(yīng)用程序文件的信息提供給Pro/E,為了做到這一點,Pro/E會尋找并讀入Pro/TOOLKIT的注冊文件,該文件是一個文本文件[2]。注冊文件的編寫也要遵從一定的格式。
注冊文件以.dat為后綴,其格式如下:name<應(yīng)用程序名>
startup<工作模式,exe或d11>exec_ file<可執(zhí)行文件或動態(tài)鏈接庫的位置>text dir<(資源文件、對話框文件、窗口信息文件)的位置>
allow_stop<是否允許終止運行程序>delay_start<手工或自動啟動程序>revision<版本號>end<結(jié)束>
可以采用兩種注冊方式,即自動注冊和手動注冊。
自動注冊:自動注冊分為兩種情況:一是必須將注冊文件名取為Protk.dat,并保存于Pro/E的安裝目錄的 ext目錄,或者位于Pro/E的起始位置設(shè)定的目錄。二是在Pro/E的config.pro文件設(shè)定注冊文件。
手動注冊:選擇Pro/E界面上的Utilities/Auxiliary Applications菜單項,選擇“注冊”按鈕注冊應(yīng)用程序。注冊成功后選擇“啟動”按鈕運行應(yīng)用程序。
注冊成功后,該程序的名稱出現(xiàn)在輔助應(yīng)用程序?qū)υ捒蛑?,且處于未運行狀態(tài),選中該應(yīng)用程序,單擊“啟動”按鈕,即可運行該應(yīng)用程序。
Pro/TOOLKIT支持在Pro/E的運行中停止和重啟動應(yīng)用程序的功能,該功能在應(yīng)用程序的開發(fā)階段是很有用的,可以允許開發(fā)者在不重新啟動Pro/E的情況下修改程序代碼并重新測試程序[6]。
Pro/TOOLKIT應(yīng)用程序,即Pro/TOOLKIT源文件,主要分為程序源代碼和菜單文件、對話框資源文件等多個模塊,圖1給出了本課題用到的各個模塊以及它們之間的層次關(guān)系,由十篇幅有限,本文只介紹其中幾個比較重要的模塊的編寫。
在同步模式下開發(fā)程序,Pro/TOOLKIT應(yīng)用程序的核心是:user_ initialize()和user_terminate()兩個函數(shù),這兩個函數(shù)是在Pro/E啟動或終止時調(diào)用的。在Pro/E完成初始化和圖形界面生成,而用于交互的菜單還沒有生成前,系統(tǒng)調(diào)用函數(shù)user initialize()。在該函數(shù)中應(yīng)完成Pro/TOOLKTT應(yīng)用程序所需的任何初始化工作,其中包括對Pro/E菜單的修改(例如添加新的菜單按鈕等)。當成功地完成初始化后,該函數(shù)返回零值,任何其他的返回值均被認為是初始化失敗。終止Pro/E任務(wù)時,將調(diào)用user_terminate()函數(shù),該函數(shù)返回值是void。
3.1.1 編寫user initialize()函數(shù)完成初始化工作
該函數(shù)用來初始化一個同步模式的應(yīng)用程序,在該函數(shù)里面,主要調(diào)用相關(guān)函數(shù)來做如下的工作:設(shè)置菜單信息文件名、添加菜單條、添加菜單按鈕、設(shè)置菜單按鈕的動作函數(shù)等。該函數(shù)必須返回0來表明程序已經(jīng)被正確地初始化了。而動作函數(shù)一般在該函數(shù)外進行定義。
3.1.2 編寫user_terminate()函數(shù)終止程序
該函數(shù)的主要任務(wù)是終止應(yīng)用程序,它的調(diào)用比較簡單,對于實現(xiàn)功能比較簡單的應(yīng)用程序,該函數(shù)可以為空。但是,應(yīng)該注意的是,如果要在DLL模式下調(diào)用對話框資源,就必須在該函數(shù)中 調(diào) 用“AFX_MANAGE_STATE(AfxGetStaticM oduleState());”語句。這是因為,最后生成的Pro/TOOLKIT應(yīng)用程序為動態(tài)鏈接庫(DLL)文件,因此,在使用對話框資源時,應(yīng)明確指定所使用的是DLL資源,否則,在Pro/E調(diào)用該應(yīng)用程序時,DLL將使用EXE(可執(zhí)行文件)的資源。
圖1 應(yīng)用程序編寫模塊
菜單文件的內(nèi)容主要是程序添加到Pro/E系統(tǒng)里面的菜單名,如果是在Pro/E原有菜單里面加入一個新菜單,則其文件后綴為.AUX,如果加入的菜單里又含有下一級子菜單,則這個菜單文件后綴為.MNU。菜單文件的編寫也有一定的格式規(guī)范。菜單文件必須編寫正確,否則,也將導致程序無法正常運行。
菜單資源文件有其規(guī)范的格式,每三行為一組,具體如下:
菜單標識名 ……菜單標識文本
#
#
選項名[覆蓋選項名] ……菜單選項顯示文本
(提示信息) ……鼠標劃過或停留在菜單項時顯示的提示文本
[覆蓋提示信息]
選項名[覆蓋選項名]
本課題菜單資源文件為:
MyMenu
&MyMenu
我的菜單
#
BottleAndMoldDesign
BottleAndMoldDesign
瓶子和模具設(shè)計
#
Parameterized Programmi ng
Parameterized Programming
參數(shù)化設(shè)計
#
本文以目前國內(nèi)市場上占主流的瓶子的改型設(shè)計為研究對象,充分滲透參數(shù)化設(shè)計的思想,利用VC++與Pro/E和Pro/TOOLKIT,實現(xiàn)了瓶子的參數(shù)化設(shè)計和模具設(shè)計的自動化。整個設(shè)計采用參數(shù)化設(shè)計的方法,用戶只需點擊按鈕和修改數(shù)據(jù),即可實現(xiàn)模具的設(shè)計。另外,系統(tǒng)還通過改變按鈕的可選狀態(tài)的方式指導用戶進行操作,用戶只要按指定的順序進行操作,即可在短短一兩分鐘之內(nèi)完成模具設(shè)計的整個過程。所有的計算和數(shù)據(jù)傳遞都在幕后進行,無須用戶干涉,使得復雜的模具設(shè)計過程變得簡單明了。
[1] 李世國.Pro/TOOLKIT程序設(shè)計[M].北京:機械工業(yè)出版社,2003:1-458.
[2] 張繼春.Pro/ENGINEER二次開發(fā)實用教程[M].北京大學出版社,2003.
[3] 二代龍震工作室.Fro/TOOLKIT Wildfire 2.0插件設(shè)計[M].北京電子工業(yè)出版社,2005:1-392.
[4] 田福祥.現(xiàn)代模具技術(shù)的特點及其發(fā)展趨勢[J].熱加工工藝,2004 (08).
[5] 李劍峰,等.Pro/TOOLKIT技術(shù)及其在Pro/ENGINEER二次開發(fā)中的應(yīng)用[J].網(wǎng)絡(luò)與信息化,2003 (05).
[6] 金濤,陳敏,等.Pro/ENGINEER軟件的一次開發(fā)技術(shù)[J].計算機工程與應(yīng)用,2001 (13).