|
Pro/ENGINEER是美國PTC公司研制的CAD/CAM軟件。Pro/TOOLKIT是PTC提供用于對Pro/ENGINEER進行二次開發的軟件包,Pro/TOOLKIT提供了大量的C語言函數,幫助我們利用C語言編程來增加Pro/ENGINEER的功能。在Pro/ENGINEER的二次開發過程中,有以下幾個問題值得注意(筆者使用的是Pro/ENGINEER 2000i)。1 編寫應用程序
5 z% n$ t' X6 v7 K9 ^ 可在Visual C++環境下編寫Pro/TOOLKIT應用程序,此應用程序包含Pro/TOOLKIT提供的函數,必須和Pro/TOOLKIT提供的頭文件編譯(Compile)到一起,所以,必須在Visual C++的菜單“Tools→Options→Directories”中添加如下內容 :2 S: P, |% w8 N
~\PROTOOLKIT\INCLUDES
/ g, @6 ^6 A8 Z5 K7 w* a3 Y& q1 R~\PROTOOLKIT\PROTK_APPLS\INCLUDES- n2 o5 s. i2 A% H) U# Q
~\PRODEVELOP\INCLUDES1 c7 H! w# [6 j7 i+ \: l' Q3 ?
~\PRODEVELOP\PRODEV_APPLS\INCLUDES# Y- L2 J, n+ ?- R6 Q6 V7 k
其中,~表示Pro/ENGINEER的安裝路徑。* n" C5 G- s# H' C
2 編譯應用程序
. v/ M5 Y* R9 V& @ 編譯(Compile)通過的應用程序,還必須在命令提示符下編譯和連接(nmake),以生成可執行的.exe或.dll文件。
+ Q2 O1 b' Y- K! X+ R% G nmake命令是由第三方軟件(Micosoft Visual C++)提供的。要在命令提示符下使用這個命令,必須在安裝Visual C++時注冊環境變量(安裝時會有對話框“設置環境變量”提示,將“注冊環境變量”選中),或者在Windows的“設置→控制面板→系統→高級→環境變量→用戶變量”中,選取變量名“path”,在值中添加“ ~:\Microsoft Visual Studio\VC98\bin”,“~”表示Visual C++ 的安裝路徑(適用于 Windows 2000)。而且,運行“nmake”命令所在的路徑為“~/protoolkit/i486_nt/obj”,此路徑下必須要有一個對應于C應用程序的make文件,命令全形為“nmake -f *”,“*”為對應的make文件名。make文件的樣板在“~\proe2000i\protoolkit\i486_nt\obj”下。" i% y- {: I3 t/ D
3 運行應用程序
: h+ K. g8 p/ |6 C6 O& \3 f 要在Pro/ENGINEER環境中運行自己的應用程序,必須在Pro/ENGINEER中對該程序進行注冊。注冊分為手動注冊和自動注冊兩種。手動注冊就是在Pro/ENGINEER界面上依次選取“Utilities→Auxiliary Application”對話框,加載該注冊文件,自動注冊有以下4個步驟。
- M, i1 \% Z4 N3 ^3 }' g: E (1)將注冊文件命名為protk.dat,并放在Pro/ENGINEER的啟動目錄下。, Q% Z3 \- j* c+ {9 T4 K
(2)將注冊文件放在Pro/ENGINEER的啟動目錄下,并在啟動目錄下創建一個config.pro文件,其中設置“TOOLKIT_REGISTRY_FILE * ”語句即可,“*” 就是要注冊的注冊文件名。
" V& ]. l# ~6 { J (3)將注冊文件命名為“protk.dat”,并放在路徑“〈Pro/ENGINEER〉/〈MACHINE〉/text/〈LANGUAGE〉”下,其中〈LANGUAGE〉是運行Pro/ENGINEER時所選的語言類型。% G4 C f2 e" [
(4)將注冊文件命名為“protk.dat”,并放在路徑“〈Pro/ENGINEER〉/text”下。
$ S; y+ D+ B$ J! x 這樣,只要運行Pro/ENGINEER就能自動加載該注冊文件,并運行指定的應用程序。注冊文件protk.dat的樣板在“~\proe2000i\protoolkit”下。/ Q2 H4 C* @7 _
4 Config.pro文件的設置 K0 s \5 O- x* i; `
環境設置文件的內容是以文字形式將選項及參數值存在名為Config.pro的文件內,這些文件均可用一般的文本編輯軟件編輯。- Z, Q: s* {( }# X1 ?
Config.pro文件可設置系統的操作環境,如工具按鈕設置、模型的顯示方式、視角等。Config.pro文件應放在Pro/ENGINEER的啟動目錄下,當啟動Pro/ENGINEER時,系統會自動加載環境設置文件Config.pro。若應用程序是一個大量組裝零、部件的二次開發程序,下面這個Config.pro將十分有用。! L) P6 r9 G+ @* Z7 P# x3 v+ S
BELL NO
2 t1 ?9 a% s7 B5 j8 Z8 J( kDISPLAY SHADE
4 a, F! {: F. I$ F" E6 y, E2 w) QDATUM_DISPLAY NO; B# |+ N/ j0 Z8 l$ T. Z, n
DATUM_POINT_DISPLAY NO( w1 m+ t1 {& @1 n% r9 x
DISPLAY_COORDINATE_SYS NO
; `3 s4 g& D5 T- \AXIS_DISPLAY NO' \/ `8 F% `- `) q& Y
SPIN_CENTER_DISPLAY NO5 C, {5 v1 a8 ~
TOOLKIT_REGISTRY_FILE *
" H5 o3 T( F1 B+ h5 添加自定義菜單
& P! F. M6 l" j; h 在Pro/ENGINEER的二次開發中,添加用戶自定義菜單是最基本、最常用的技術。+ c! a* j% { _- ~, D( U0 {/ }
可以在Pro/ENGINEER界面上現有的菜單條和菜單中添加用戶自定義菜單,如在“文件”等菜單條菜單中添加,也可以在Pro/ENGINEER界面上添加菜單條菜單,它和“文件”等菜單條菜單處于同等地位。或者也可以在模式菜單中添加自定義菜單。
. C/ m& I% o/ N. R W0 d% M( ?) } 筆者建議在Pro/ENGINEER界面上添加菜單條菜單,因為Pro/ENGINEER是一個不斷發展、不斷更新的軟件,某個版本下有的菜單條菜單或模式菜單,在另一個版本下可能沒有,因此,如果用戶自定義菜單依賴于某個菜單,很可能在另一個Pro/ENGINEER的版本中不能正常使用。這樣,只能修改應用程序來適應這種變化,軟件的通用性較差。下面這個程序詳細講述如何在Pro/ENGINEER界面上添加用戶自定義菜單條菜單UserMenu以及在菜單條菜單UserMenu中添加按鈕“A”。
2 t& r7 d3 ~5 H/ Oint user_initialize()
5 s- M' G2 M4 e" d5 R- D+ p{ ProFileName message_file;
' [' m6 @9 r7 h5 [) IuiCmdCmdId cmd_id;( E' u5 D7 s$ J" d/ X
ProStringToWstring(message_file, "user_msg.txt") ;0 D" N ]- h U9 y
ProMenubarMenuAdd("UserMenu","UserMenu", "Help", PRO_B_TRUE , message_file); //添加用戶自定義菜單條菜單UserMenu并放在菜單條菜單“幫助”之后+ J8 b, @6 }* y T7 t M% i
ProCmdActionAdd("A", (uiCmdCmdActFn) Action,uiProe2ndImmediate,NULL,PRO_B_TRUE,1 ]# N, v6 d3 w7 C4 {
PRO_B_TRUE, &cmd_id); //給按鈕A設定動作Action# V) a% u, t; @# `; \0 i0 e
ProMenubarmenuPushbuttonAdd("UserMenu", "A", "A","Non-mode-specific Pro/TOOLKIT test % H2 j& N. ^. J5 E* M
commands", NULL , PRO_B_TRUE , cmd_id ,
1 A. V, D! H. ~" hmessage_file); //在菜單條菜單UserMenu添加按鈕A
& h, \! p9 j8 O/ u2 R) a3 X) Qreturn(0);}' n) n! T* V R" D3 \
其中user_msg.txt文件的內容為 :
9 w# ~, B# ^7 K& H4 M7 X UserMenu(換行)UserMenu(換行)#(換行)#(換行)A(換行)A(換行)#(換行)#" U0 r# Y. M8 s
user_msg.txt文件通常放在“~\text\usascii”下,它的路徑對應于protk.dat注冊文件的TEXT_DIR項。4 s8 n" B, T& p. [% j: `
7 h+ O* C1 I3 E9 h, v4 [$ O- W
Pro/ENGINEER的二次開發功能十分強大,本文主要描述了Pro/ENGINEER二次開發的整體過程(編寫C程序→VC++下編譯→命令提示符下編連→Pro/ENGINEER中注冊)以及所遇到的關鍵性問題,用戶可在此基礎上在Pro/TOOLKIT二次開發程序中通過編寫各種功能函數來實現他的具體要求。 |
|