You are on page 1of 14

Pro/E 二次 开发程 序设置 与调试

安装 Pro/E

首先确保你正确安装了 Pro/E

Pro/E 开发工具 Toolkit 的目录结构:


设置 包含文 件和库 文件

然后在你的 VS2005 IDE 中设置好包含文件和库文件目录。


点击工具 ->选项菜单,弹出选项对话框
1. 加入包含文件:在安装目录下<安装目录>\protoolkit\includes

2. 加入库文件:在安装目录下<安装目录>\protoolkit\ i486_nt\obj
新建 工程

新建一个工程
1. 选择 MFC DLL 模板;
2. 填入项目名称,点击确定;
3. 在应用程序设置页,选择“使用共享 MFC DLL 的规则 DLL”
4. 点击完成。
设置 工程属 性

点击项目 ->属性菜单开始设置项目属性。
1. 在 C/C++标签下预处理器页面,预处理器定义中添加一条 PRO_USE_VAR_ARGS 宏。

ProE 的某些函数(比如 ProMessageDisplay)使用了变长的参数列表,只有在预处理器定义


中加入此宏才能正常编译

2. 在代码生成页,设置运行时库为为多线程 DLL(/MD)
Pro/E 的多线程库和 VS 2005 的 Debug 版多线程库有冲突,因此此处必须改为多线程 DLL
3. 在语言页设置将 wchar_t 视为内置类型为否(/Zc:wchar_t-)

在 C++标准中 wchar_t 以及作为内置的基本类型加入,而 ProTK 3.0 为了兼容一些不标准的


C++编译器(比如 VC6.0)而把 wchart_t 作为 short int 的 typedef 替换。此处关闭这个选项才
能编译通过。

4. 在连接器标签->输入页面
a) 附加依赖项中添加要附加的依赖库文件:protk_dllmd.lib,wsock32.lib,mpr.lib。
b) 在忽略特定库中添加要忽略的库文件:msvcrt.lib。

Msvrtt.lib 库和 ProE 的库有冲突,因此忽略它

5. 在链接器->命令行标签->附加命令选择中填入/FORCE
设置完成以上内容后即可编译成功。

编辑 源文件

1. 在源文件顶部插入包含文件
#include <ProToolkit.h>

#include <ProArray.h>
#include <ProMessage.h>
#include <ProUIMessage.h>
#include <ProUtil.h>
#include <ProMenubar.h>

2. 再插入下列代码
ProError NewPartAction()

{
AfxMessageBox(L"Hello World");
return PRO_TK_NO_ERROR;
}
uiCmdAccessState TestAccessDefault(uiCmdAccessMode mode)
{
return ACCESS_AVAILABLE;
}
ProError UsrInitializeMemu()
{
ProFileName userMsg;
uiCmdCmdId cmd_id1;

ProStringToWstring(userMsg,"user_msg.txt");
ProMenubarMenuAdd("UserMenu","USER MENU0","Utilities",PRO_B_TRUE,userMsg);
ProCmdActionAdd(
"Dispay1",
(uiCmdCmdActFn)NewPartAction,
uiCmdPrioDefault,
TestAccessDefault,
PRO_B_TRUE,
PRO_B_TRUE,
&cmd_id1);
ProMenubarmenuPushbuttonAdd("UserMenu","MainBtn1","USER MENU1",
"User New Button help",NULL,PRO_B_TRUE,cmd_id1,userMsg);
return PRO_TK_NO_ERROR;
}

extern "C" int user_initialize()


{
UsrInitializeMemu();
return 0;
}
extern "C" void user_terminate()
{
}

3. 重新编译你的工程

注册 和运行 程序

1. 编写一个注册文件 Protk.dat,该文件描述了二次开发程序的注册信息。典型的文件结构
如下:
语法意义如下:
name: 为你的二次开发程序指定一个单独的名字。
startup: 指定程序模式,这里是 DLL 模型。
exec_file: 你编译出来的动态链接库的放置路径。
text_dir: 应用程序使用的菜单和消息文件的放置路径。
allow_stop: 程序运行停止。
delay_start: 延迟启动。
end: 注册文件结束

2. 在工程目录下新建一个 Text 文件夹,然后在 Text 文件夹下面,新建一个 user_msg.txt


文件,内容如下:
USER MENU0
MyMenu
#
#
USER MENU1
Menu1
#
#
USER MENU2
Menu2
#
#
USER MENU3
Menu3
#
#
USER New Button help
the help
#
#

3. 启动 Pro/E 主程序,选择工具 ->辅助应 用程序 菜单(Tools->Auxiliary Application)


4. 然后点击注册(Register)按钮,选择前面编写的注册文件 protk.dat。

5. 点击开始(Start)按钮运行程序,程序会在 Tools 菜单后面添加一个 MyMenu 菜单。

6. 程序至此运行成功。其它几个按钮分别是停止程序运行(Stop ),和删除已注册程序
(Delete),以及查看程序详细信息(Info)。

调试 程序

1. 打开 VS2005 IDE 的工具->选项,确定调试->实时页面中本机选项被选中。


2. 打开你要调试的工程文件,设置好断点。

3. 打开资源管理器找到 xtop.exe 进程,点击右键,在弹出的菜单选择调试按钮。

4. 这时弹出 Visual Studio 实时调试对话框。如果你的工程已经打开,选择已存在的实例;


如果没有打开,选择新实例 Visual Studio 2005。
5. 此时即可进行调试。

常见 问题

1. 消息文件:
1) 菜单名称和消息文本都要放在消息文件中,消息文件是一个以行为单位的格式文
件。
格式以每四行为一条独立的消息,四行中第一行是消息标识,第二行是要显示的消息
本体,第三行是消息的另一语言的翻译(可以为空),第四行为空行(用 #标识,留作
以后扩展)。
下面是示例:
Part List
Part List
零件列表
#

2) 消息文本的放置目录。
Pro/E 从下面的搜索路径查找信息文件
i. ProE 的当前工作目录
ii. 或者我们在注册文件定义的 text_dir 目录下的 Text 目录。
容易出错的地方:
如果我们直接将 text_dir 定义为 E:\Workshop\PrDemo ,就需要在 ProDemo 目录下新建
一个 Text 目录,把消息文件放入。
如果我们把 text_dir 定义成 E:\Workshop\ProDemo\Text,ProE 会自动截断后面的 Text,
把路径变成 E:\Workshop\ProDemo。这时我们把消息文件直接放入 Text 目录即可。

You might also like