Proe应用ProTOOLKIT二次开发Word下载.docx
- 文档编号:19453048
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:24
- 大小:901.42KB
Proe应用ProTOOLKIT二次开发Word下载.docx
《Proe应用ProTOOLKIT二次开发Word下载.docx》由会员分享,可在线阅读,更多相关《Proe应用ProTOOLKIT二次开发Word下载.docx(24页珍藏版)》请在冰豆网上搜索。
【Pro/E安装目录】\protoolkit\i486_nt\obj
64位:
【Pro/E安装目录】\prodevelop\x86e_win64\obj
【Pro/E安装目录】\protoolkit\x86e_win64\obj
4.添加附加依赖项
mpr.lib
wsock32.lib
psapi.lib
protk_dllmd.lib
prodev_dllmd.lib
netapi32.lib
5.设置工程字符集
推荐优先采用Unicode。
5四、添加Pro/TOOLKIT代码
在test_wf5.cpp文件的最后添加以下Pro/TOOLKIT代码。
该段代码的功能是:
在Pro/E的【帮助】菜单后新增一个菜单【TestMenu】,然后在【TestMenu】下新增两个菜单项【Test】和【ShowCurrModelName】。
分别实现弹出测试对话框和获取当前模型的名称并弹窗显示。
先只要大体理解代码的整体思路即可,本教程会在第三篇:
手把手教你开发Pro/TOOLKIT应用程序(三)中具体阐明代码的所有细节,在学习完本篇和第二篇后,再去学习第三篇会比较好。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
//包含常用头文件
#include<
ProToolkit.h>
ProUtil.h>
ProMenuBar.h>
ProMenu.h>
ProMode.h>
ProMdl.h>
ProSolid.h>
ProAsmcomp.h>
ProArray.h>
ProModelitem.h>
ProLayer.h>
//函数声明
uiCmdAccessStateTestAccess(uiCmdAccessModeaccess_mode);
uiCmdAccessStateShowCurrModelName_Access(uiCmdAccessModeaccess_mode);
intTest(uiCmdCmdId
command,
uiCmdValue*p_value,
void
*p_push_command_data);
intShowCurrModelName(uiCmdCmdId
//Pro/TOOLKIT入口函数
extern"
C"
intuser_initialize()
{
ProErrorerr;
//信息文件名称
ProFamilyNameMsgFile;
ProStringToWstring(MsgFile,"
Test_Msg.txt"
);
//添加菜单:
TestMenu
err=ProMenubarMenuAdd("
TestMenu"
"
Help"
PRO_B_TRUE,MsgFile);
//添加命令和菜单项
//测试命令
uiCmdCmdIdcmd_id1;
err=ProCmdActionAdd("
Test"
Test,uiCmdPrioDefault,TestAccess,
PRO_B_FALSE,PRO_B_FALSE,&
cmd_id1);
err=ProMenubarmenuPushbuttonAdd("
Test_Help"
NULL,PRO_B_TRUE,cmd_id1,MsgFile);
//显示并输出当前模型的名称
uiCmdCmdIdcmd_id2;
ShowCurrModelName"
ShowCurrModelName,uiCmdPrioDefault,
ShowCurrModelName_Access,
cmd_id2);
"
ShowCurrModelName_Help"
NULL,PRO_B_TRUE,cmd_id2,MsgFile);
return0;
}
//Pro/TOOLKIT结束时调用的函数
voiduser_terminate()
{
//测试命令响应函数
*p_push_command_data)
AfxMessageBox(_T("
JustForTest"
));
//命令:
获取当前模型的名称并显示
//获取当前模型
ProMdlmdl;
err=ProMdlCurrentGet(&
mdl);
if(PRO_TK_NO_ERROR!
=err)
return-1;
//获取当前模型名称并显示
ProNamename;
err=ProMdlNameGet(mdl,name);
MessageBoxW(NULL,name,L"
wf5test"
MB_OK);
//测试命令菜单权限函数
//任何情况下菜单都有效
uiCmdAccessStateTestAccess(uiCmdAccessModeaccess_mode)
returnACCESS_AVAILABLE;
/*
ProMode
mode;
err=ProModeCurrentGet(&
mode);
if(err!
=PRO_TK_NO_ERROR)
returnACCESS_UNAVAILABLE;
if(mode==PRO_MODE_PART
||mode==PRO_MODE_ASSEMBLY)
else
*/
//获取当前模型名称并显示菜单权限函数
//只有在当前打开的模型为PART档,ASM档或Drawing档时菜单才有效
uiCmdAccessStateShowCurrModelName_Access(uiCmdAccessModeaccess_mode)
||mode==PRO_MODE_ASSEMBLY
||mode==PRO_MODE_DRAWING)
代码说明:
1.user_initialize()为Pro/TOOLKIT应用程序的入口函数,每个Pro/TOOLKIT程序在被Pro/E加载时,首先执行此函数。
2.user_terminate()是Pro/TOOLKIT程序被Pro/E卸载时执行的函数。
3.ProMenubarMenuAdd为Pro/TOOLKIT程序添加菜单。
4.ProCmdActionAdd为Pro/TOOLKIT程序添加一个命令,一般在添加菜单项时会将命令和菜单项关联,这样在单击菜单项时,就会执行对应的命令。
5.ProMenubarmenuPushbuttonAdd为菜单添加菜单项。
6.以上代码添加了两个命令:
test---直接弹出测试对话框。
ShowCurrModelName---获取当前模型的名称并显示。
6五、编译程序
1.选择需要编译Win32还是x64版本,以及Debug还是Release版本。
2.单击【生成】->
【生成解决方案】即可编译生成DLL文件:
test_wf5.dll。
如果你的VS2008没有安装SP1补丁,编译Debug版本时常会报错,即使编译成功,Pro/E也无法加载生成的test_wf5.dll。
在编写信息文件前,首先在工程文件夹下新建Bin文件夹,然后将第五步生成的test_wf5.dll拷贝到Bin文件夹下。
6.1六、编写信息文件
信息文件是用来定义Pro/TOOLKIT程序菜单及菜单项显示信息的文本文件。
其内容以四行为一组,每行代表的意义如下:
∙菜单或菜单项的名称
∙菜单或菜单项的英文显示
∙菜单或菜单项的中文显示或其他语言版本的显示
∙#
加载Pro/TOOLKIT程序时,会读取信息文件,并根据菜单或菜单项的名称,匹配出菜单或菜单项的显示字符串。
信息文件必须位于text目录下。
操作步骤如下:
1.首先在Bin文件夹下新建text文件夹。
2.然后在text文件夹下新建两个子文件夹:
chinese_cn、usascii,分别代表当Pro/E的语言版本为简体中文时,会读取chinese_cn文件夹下的信息文件。
当Pro/E的语言版本为英文时,会读取usascii文件夹下的信息文件。
3.在chinese_cn文件夹下新建如下内容的文本文件:
Test_Msg.txt。
Test
测试菜单
#
测试
Test_Help
JustForTest
ShowCurrModelName
显示模型名称
ShowCurrModelName_Help
ShowCurrentModelName
4.在usascii文件夹下新建如下内容的文本文件:
6.2七、编写注册文件
注册文件包含Pro/TOOLKIT应用程序的路径,text文件夹的路径等信息,Pro/E通过注册文件中包含的信息,找到Pro/TOOLKIT程序并加载。
在Bin文件夹下新建文本文件protk.dat,并输入如下内容。
name
Test_wf5
startup
dll
exec_file
.\Test_wf5.dll
text_dir
.\
revision
Wildfire
allow_stopTRUE
end
含义如下:
oname:
Pro/TOOLKIT应用程序标识名称
ostartup:
Pro/TOOLKIT应用程序与Pro/E的交互方式,一般为dll
oexec_file:
Pro/TOOLKIT程序的路径,可以是绝对路径,也可以使相对路径
otext_dir:
text文件夹路径
orevision:
版本
oallow_stop:
是否允许手动终止Pro/TOOLKIT程序
oend:
结束标志
6.3八、自动加载Pro/TOOLKI程序
在Bin文件夹下新建一批处理文件GoProE.bat,输入命令:
call[Pro/E全路径]
例如在我的电脑上输入以下命令即可:
call"
C:
\PTC\proeWildfire5.0\bin\proe1.bat"
双击GoProE.bat运行,将会启动Pro/E并自动加载我们编写的Pro/TOOLKIT程序。
这是因为我们通过GoProE.bat来启动Pro/E,那么Pro/E的启动目录就为当前的Bin文件夹,Pro/E启动时,会自动读取启动目录下,名为protk.dat的注册文件,来加载Pro/TOOLKIT程序。
6.4九、测试程序
1.单击【测试】菜单项,会弹出以下对话框。
2.新建一档案:
零件档、组立档或工程图。
单击【显示模型名称】菜单项,会弹出窗口,显示当前模型的名称。
6.5十、手动加载Pro/TOOLKIT程序
我们也可以手动加载Pro/TOOLKIT程序。
在手动加载Pro/TOOLKIT程序之前,我们需要先修改之前创建的注册文件protk.dat。
将exec_dir和text_dir指定的相对路径改为绝对路径,否则手动加载时会由于找不到相对路径指定的文件而报错的。
示例如下:
D:
\WangYao\Test_wf5\Bin\Test_wf5.dll
D:
\WangYao\Test_wf5\Bin\
通过桌面上的快捷方式来启动Pro/E。
单击【工具】->
【辅助应用程序】
1.单击【注册】,在弹出的对话框中选择Bin文件夹下的protk.dat文件。
2.选中加载进来的Pro/TOOLKIT程序。
3.单击【启动】。
这篇主要讲解第一篇中Pro/TOOLKIT代码的具体含义。
Line1~12
包含Pro/TOOLKIT常用的头文件。
Line15~24
函数声明。
Line26~55
user_initialize
user_initialize为Pro/TOOLKIT程序的初始化函数,每个Pro/TOOLKIT程序(DLL)都必须定义该函数。
一般在该函数中添加菜单和菜单项。
Line30~32
定义了宽字符数组变量MsgFile用于存储信息文件的名称:
ProFamilyName为宽字符(wchar_t)数组。
ProStringToWstring函数将char字符串转换为wchar_t字符串。
Line35
在Pro/E【帮助】菜单之后添加菜单【TestMenu】。
ProErrorProMenubarMenuAdd(
ProMenuItemNamemenu_name,
ProMenuItemLabeluntranslated_menu_label,
ProMenuItemNameneighbor,
ProBooleanadd_after_neighbor,
ProFileNamefilename);
∙menu_name:
菜单名称,必须唯一。
∙untranslated_menu_label:
菜单文本,该文本用于匹配信息文件中的内容。
∙neighbor:
相邻的菜单名。
为【帮助】菜单。
∙add_after_neighbor:
是否位于相邻菜单的右侧。
PRO_B_TRUE表明位于右侧,否则位于左侧。
∙filename:
信息文件名。
Line39~41
添加命令:
Test。
ProErrorProCmdActionAdd(
char
*action_name,
uiCmdCmdActFn
action_cb,
uiCmdPriority
priority,
uiCmdAccessFn
access_func,
ProBoolean
allow_in_non_active_window,
allow_in_accessory_window,
uiCmdCmdId
*action_id);
∙action_name:
命令名称,必须唯一。
∙action_cb:
命令的响应函数。
∙priority:
命令的优先级,一般为uiCmdPrioDefault。
∙access_func:
命令的访问权限函数。
该函数的返回值关系到和命令关联的菜单项的状态,具体如下:
typedefenum
ACCESS_REMOVE=-1,
//移除菜单项
ACCESS_INVISIBLE,
//菜单项不可见
ACCESS_UNAVAILABLE,
//菜单项灰化不可选
ACCESS_DISALLOW,
//菜单项不可选
ACCESS_AVAILABLE
//菜单项可选
}uiCmdAccessState;
∙allow_in_non_active_window:
是否在非激活窗口中显示命令关联的菜单项,一般为PRO_B_FALSE。
∙allow_in_accessory_window:
是否在附属窗口中显示命令关联的菜单项,一般为PRO_B_FALSE。
∙action_id:
命令ID。
Line42~43
添加菜单按钮:
ProErrorProMenubarmenuPushbuttonAdd(
ProMenuItemName
parent_menu,
ProMenuItemName
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Proe 应用 ProTOOLKIT 二次开发