|
Pro/ENGINEER是美国PTC公司研制的CAD/CAM软件。Pro/TOOLKIT是PTC提供用于对Pro/ENGINEER进行二次开发的软件包,Pro/TOOLKIT提供了大量的C语言函数,帮助我们利用C语言编程来增加Pro/ENGINEER的功能。在Pro/ENGINEER的二次开发过程中,有以下几个问题值得注意(笔者使用的是Pro/ENGINEER 2000i)。1 编写应用程序/ ~% E+ {* a. A5 _6 n0 u3 y
可在Visual C++环境下编写Pro/TOOLKIT应用程序,此应用程序包含Pro/TOOLKIT提供的函数,必须和Pro/TOOLKIT提供的头文件编译(Compile)到一起,所以,必须在Visual C++的菜单“Tools→Options→Directories”中添加如下内容 :
% C9 s- P' z/ G( Z* G) q3 ?$ E~\PROTOOLKIT\INCLUDES
: w+ i3 r5 p& u/ Q3 ~~\PROTOOLKIT\PROTK_APPLS\INCLUDES
/ s- x3 K$ j/ [+ g6 M7 T+ [~\PRODEVELOP\INCLUDES( S5 v& T" ~ `" h% f$ s9 k
~\PRODEVELOP\PRODEV_APPLS\INCLUDES
; Y+ g0 m0 ^9 H4 K" h# S9 a2 p4 _% x其中,~表示Pro/ENGINEER的安装路径。2 g6 s# U5 D' d- M+ r( K
2 编译应用程序
8 k8 q* `. \; _2 B& q0 S 编译(Compile)通过的应用程序,还必须在命令提示符下编译和连接(nmake),以生成可执行的.exe或.dll文件。
* ?2 f" A: e+ }+ j& ?$ i0 Y 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”下。
$ P$ X3 j7 N0 ?& r1 p1 M3 运行应用程序+ {. Q5 n/ I. C2 `6 F9 E$ n2 O
要在Pro/ENGINEER环境中运行自己的应用程序,必须在Pro/ENGINEER中对该程序进行注册。注册分为手动注册和自动注册两种。手动注册就是在Pro/ENGINEER界面上依次选取“Utilities→Auxiliary Application”对话框,加载该注册文件,自动注册有以下4个步骤。
3 y O9 ?: g& \% c- }2 _ (1)将注册文件命名为protk.dat,并放在Pro/ENGINEER的启动目录下。
2 T6 r! C) c# W4 b6 l (2)将注册文件放在Pro/ENGINEER的启动目录下,并在启动目录下创建一个config.pro文件,其中设置“TOOLKIT_REGISTRY_FILE * ”语句即可,“*” 就是要注册的注册文件名。
% j3 q5 V2 Y- t5 S0 G (3)将注册文件命名为“protk.dat”,并放在路径“〈Pro/ENGINEER〉/〈MACHINE〉/text/〈LANGUAGE〉”下,其中〈LANGUAGE〉是运行Pro/ENGINEER时所选的语言类型。
* _" F# p) c4 e: d+ S (4)将注册文件命名为“protk.dat”,并放在路径“〈Pro/ENGINEER〉/text”下。 F' h( \# J' h& K5 X' j
这样,只要运行Pro/ENGINEER就能自动加载该注册文件,并运行指定的应用程序。注册文件protk.dat的样板在“~\proe2000i\protoolkit”下。2 s) N8 U( h& k- c
4 Config.pro文件的设置& H4 ~6 `0 x9 R, G4 l/ p
环境设置文件的内容是以文字形式将选项及参数值存在名为Config.pro的文件内,这些文件均可用一般的文本编辑软件编辑。
+ p, l# J& K$ L7 s ? Config.pro文件可设置系统的操作环境,如工具按钮设置、模型的显示方式、视角等。Config.pro文件应放在Pro/ENGINEER的启动目录下,当启动Pro/ENGINEER时,系统会自动加载环境设置文件Config.pro。若应用程序是一个大量组装零、部件的二次开发程序,下面这个Config.pro将十分有用。
y% n/ P# ~& Q9 ?7 Z% {/ CBELL NO: S4 u) H5 ?8 g( w$ M8 W, L
DISPLAY SHADE
+ b" f; o7 |" F. D$ @DATUM_DISPLAY NO$ i% j7 D* H; A2 `" C( l
DATUM_POINT_DISPLAY NO
* U. E7 e6 c5 A% m( `1 j4 p, _: dDISPLAY_COORDINATE_SYS NO
$ O* |8 W8 n9 i: R) O, U/ M2 t1 c% yAXIS_DISPLAY NO
' S9 I$ l% F: h" `# K4 ~5 |( vSPIN_CENTER_DISPLAY NO* O5 i( [" o4 U( r) O) [, }
TOOLKIT_REGISTRY_FILE *8 m1 t+ u$ H" P9 r+ S+ W
5 添加自定义菜单
: f, u6 ~! j# F" E/ y# {+ G 在Pro/ENGINEER的二次开发中,添加用户自定义菜单是最基本、最常用的技术。6 x* u5 _( ]+ p- L
可以在Pro/ENGINEER界面上现有的菜单条和菜单中添加用户自定义菜单,如在“文件”等菜单条菜单中添加,也可以在Pro/ENGINEER界面上添加菜单条菜单,它和“文件”等菜单条菜单处于同等地位。或者也可以在模式菜单中添加自定义菜单。
6 G" j3 h) e# k' V) [ b7 u8 H 笔者建议在Pro/ENGINEER界面上添加菜单条菜单,因为Pro/ENGINEER是一个不断发展、不断更新的软件,某个版本下有的菜单条菜单或模式菜单,在另一个版本下可能没有,因此,如果用户自定义菜单依赖于某个菜单,很可能在另一个Pro/ENGINEER的版本中不能正常使用。这样,只能修改应用程序来适应这种变化,软件的通用性较差。下面这个程序详细讲述如何在Pro/ENGINEER界面上添加用户自定义菜单条菜单UserMenu以及在菜单条菜单UserMenu中添加按钮“A”。$ s5 R" ?. d+ A/ Q. V4 |
int user_initialize()9 I( w4 }, ?8 d% Y1 X
{ ProFileName message_file;; y+ a1 n2 S& B& c9 c2 F: f3 L' w
uiCmdCmdId cmd_id;
; T/ G$ {, [; F* v: ^ProStringToWstring(message_file, "user_msg.txt") ;3 Y- g5 t, {. {0 M. s8 N4 D
ProMenubarMenuAdd("UserMenu","UserMenu", "Help", PRO_B_TRUE , message_file); //添加用户自定义菜单条菜单UserMenu并放在菜单条菜单“帮助”之后1 s+ ~ X% N5 g4 _0 A
ProCmdActionAdd("A", (uiCmdCmdActFn) Action,uiProe2ndImmediate,NULL,PRO_B_TRUE,
- P# d; ?4 s: h) Z5 bPRO_B_TRUE, &cmd_id); //给按钮A设定动作Action
' u3 m( i- O2 r- fProMenubarmenuPushbuttonAdd("UserMenu", "A", "A","Non-mode-specific Pro/TOOLKIT test ( s; y. u9 Y# i/ u% v# M
commands", NULL , PRO_B_TRUE , cmd_id ,7 X$ S& \( a% }; M% u- |
message_file); //在菜单条菜单UserMenu添加按钮A
# p4 ~( b% l+ t( o8 v B ]! Yreturn(0);}
2 [, h8 ^% z0 X0 k, V其中user_msg.txt文件的内容为 :
C, W+ u. X9 @# ~! b7 u+ s. @ UserMenu(换行)UserMenu(换行)#(换行)#(换行)A(换行)A(换行)#(换行)#$ p- J! K- o X1 C1 D, g9 X4 W0 V
user_msg.txt文件通常放在“~\text\usascii”下,它的路径对应于protk.dat注册文件的TEXT_DIR项。3 R- S. F' n( p- J; [
4 l1 {/ ?5 ?+ g" a( M- m6 T
Pro/ENGINEER的二次开发功能十分强大,本文主要描述了Pro/ENGINEER二次开发的整体过程(编写C程序→VC++下编译→命令提示符下编连→Pro/ENGINEER中注册)以及所遇到的关键性问题,用户可在此基础上在Pro/TOOLKIT二次开发程序中通过编写各种功能函数来实现他的具体要求。 |
|