Professional Documents
Culture Documents
安装 Pro/E
首先确保你正确安装了 Pro/E
2. 加入库文件:在安装目录下<安装目录>\protoolkit\ i486_nt\obj
新建 工程
新建一个工程
1. 选择 MFC DLL 模板;
2. 填入项目名称,点击确定;
3. 在应用程序设置页,选择“使用共享 MFC DLL 的规则 DLL”
4. 点击完成。
设置 工程属 性
点击项目 ->属性菜单开始设置项目属性。
1. 在 C/C++标签下预处理器页面,预处理器定义中添加一条 PRO_USE_VAR_ARGS 宏。
2. 在代码生成页,设置运行时库为为多线程 DLL(/MD)
Pro/E 的多线程库和 VS 2005 的 Debug 版多线程库有冲突,因此此处必须改为多线程 DLL
3. 在语言页设置将 wchar_t 视为内置类型为否(/Zc:wchar_t-)
4. 在连接器标签->输入页面
a) 附加依赖项中添加要附加的依赖库文件:protk_dllmd.lib,wsock32.lib,mpr.lib。
b) 在忽略特定库中添加要忽略的库文件:msvcrt.lib。
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;
}
3. 重新编译你的工程
注册 和运行 程序
1. 编写一个注册文件 Protk.dat,该文件描述了二次开发程序的注册信息。典型的文件结构
如下:
语法意义如下:
name: 为你的二次开发程序指定一个单独的名字。
startup: 指定程序模式,这里是 DLL 模型。
exec_file: 你编译出来的动态链接库的放置路径。
text_dir: 应用程序使用的菜单和消息文件的放置路径。
allow_stop: 程序运行停止。
delay_start: 延迟启动。
end: 注册文件结束
6. 程序至此运行成功。其它几个按钮分别是停止程序运行(Stop ),和删除已注册程序
(Delete),以及查看程序详细信息(Info)。
调试 程序
常见 问题
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 目录即可。