【这篇文章是以前从Pro/E讨论区发的,现在我转贴过来】
Pro/E 二次开发中的若干问题
Pro/E是美国参数技术公司(PTC)研制的CAD/CAM软件。Pro/TOOLKIT是PTC提供专门用于对Pro/E进行二次开发的软件包。Pro/TOOLKIT软件包提供了大量的C语言函数,使得我们利用C语言编程来增加Pro/E的功能。在Pro/E的二次开发过程中,有以下几个问题值得注意(以Pro/E2000i):
1.可在Visual C++(4.0、5.0、6.0)环境下开发Pro/TOOLKIT应用程序
此C应用程序包含Pro/TOOLKIT提供的函数,必须和Pro/TOOLKIT提供的头文件编译(compile)到一起。所以,必须在Visual C++的菜单tools→Options→Directories中添加如下内容:
~\PROTOOLKIT\INCLUDES
~\PROTOOLKIT\PROTK_APPLS\INCLUDES
~\PRODEVELOP\INCLUDES
~\PROTOOLKIT\PRODEV_APPLS\INCLUDES
其中,~表示Pro/E的安装路径。
2.编译(compile)通过的应用程序,还必须在命令提示符下编译、连接一遍(nmake),以生成可执行的.exe或.dll文件
nmake命令是由第三方软件(micosoft Visual C++)提供的。要在命令提示符下使用这个命令,必须在安装Visual C++时注册环境变量(安装时会有对话框“设置环境变量”)提示,将“注册环境变量”选中),或者在Windows的“设置→控制变量→系统→高级→环境变量→用户变量”中,选取变量名path,在值中添加~:\Microsoft Visual Studio\VC98\bin,其中~表示Visual C++的安装路径(适用于Windows 2000).而且,命令提示符的默认路径为~:\protoolkit\i486_nt\obj,此路径下必须要有一个对应于C应用程序的make文件,命令全形为nmake-f*.*为对应的make文件名。make文件的样板在~proe 2000i\protoolkit\i486_nt\obj下。
3.在Pro/E环境中要运行自己的应用程序,必须在Pro/E中对该程序进行注册
注册分为手动注册和自动注册两种。手动注册就是在Pro/E界面上选取Utilities→Auxiliary Application 对话框加载该注册文件。自动注册有四种:一是将注册文件命名为protk.dat并放在Pro/E的启动目录下,并在启动目录下创建一个config.pro文件,其中设置一句:TOOLKIT_REGISTRY_FILE*就可,*就是要注册的注册文件名;三是将注册文件命名为protk.dat并放在路径//text/下,其中< LANGUAGE >是运行Pro/ ENGINEER就能自动加载该注册文件并运行指定的应用程序。注册文件protk.dat的样板在~proe 2000i\protoolkit下。
4.Config.pro文件的设置
环境设置文件的内容是以文字模式将选项及参数值存在名为Config.pro的文件内,这些文件均可用一般的文本编辑软件编辑。Config.pro文件可设置系统的操作环境,如工具按钮位置、模型的显示方式、视角等。Config.pro文件应放在Pro/E的启动目录下,当启动Pro/E时,系统会自动加载环境设置文件Config.pro。若应用程序是一个大量组装零、部件的二次开发程序,下面的Config.pro将十分有用:
BELL NO
DISPLAY SHADE
DATUM_DISPLAY NO
DATUM_POINT_DISPLAY NO
DISPLAY_COORDINATE_SYS NO
AXIS_DISPLAY NO
SPIN_CENTER_DISPLAY NO
TOOLKIT_REGISTRY_FILE*
5.在Pro/E的二次开发中,添加用户自定义菜单是最基本、最常用的技术
可以在Pro/E界面上现有的菜单条添加用户自定义菜单,如在“文件”等菜单条菜单中添加;也可以在Pro/E界面上添加菜单条菜单,它和“文件”等等菜单条菜单处于同等地位。笔者建议在Pro/E界面上添加菜单条菜单,因为Pro/E是一个不断发展、不断更新的软件,某个版本下有的菜单在另一个版本下可能没有,因此,如果用户自定义菜单依赖某个菜单条菜单,很可能在另一个Pro/E的版本中不能正常使用。这样,只能修改应用程序来适应这种变化,软件的通用性较差。
下面这个程序详细讲述如何在Pro/E界面上添加用户自定义菜单条菜单UserMenu以及在菜单条菜单UserMenu中添加按钮A:
int user _initialize( )
{ProFileName message _file;
uiCmdCmdId cmd _id;
ProStringToWstring(message_ file,”use_rmsg.txt”);
ProMenubarMenuAdd(“UserMenu”,”UserMenu”,”Help”,PRO_B_TRUE,message_file);(添加用自定义菜单条菜单UserMenu并放在菜单条菜单“帮助”之后)
ProCmdActionAdd(“A”, (uiCmdCmdActFn)Action,uiProe2ndImmediate, NULL, PRO_B_TRUE, PRO_B_TRUE, [$cmd _id)](给按钮A设定动作Action)
ProMenubarmenuPushbuttonAdd(“UserMenu”,“A”,“A”,“Non-mode-specific Pro/TOOLKIT test commands”,NULL,PRO_B_TRUE,cmd_id, message_file); (在菜单条菜单UserMenu添加按钮A)
return(0);}
其中user_msg.tst文件的内容为:
UserMenu
UserMenu
#
#
A
A
#
#
user_msg.tst文件通放在~\text\usascii下,它的路径对应于protk.dat注册文件的TEXT_DIR项。
6.结语Pro/E的第二次开发功能十分强大。本文主描述了Pro/E二次开发的整体过程(编写C程序→VC++下编译→命令提示符下编连→Pro/E中注册)以及所遇到的关键性问题,用户可在此基础上,在Pro/TOOLKIT二次开发程序中通过编写各种功能函数来实现其他具体要求。 |