Proe应用ProTOOLKIT二次开发_第1页
Proe应用ProTOOLKIT二次开发_第2页
Proe应用ProTOOLKIT二次开发_第3页
Proe应用ProTOOLKIT二次开发_第4页
Proe应用ProTOOLKIT二次开发_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、手把手教你开发Pro/TOOLKIT应用程序1前言本教程采用VS2008 + Pro/E Wildfire5.0来讲解怎样开发Pro/TOOLKIT应用程开发Pro/TOOLKIT应用程序时,Pro/E和Visual Studio的版本需对应,否则很 难搭建开发环境,具对应关系如下: Wildfire 4.0 <> VS2008 Wildfire 5.0 <> VS2008 Creo 1.0 <> VS2010 Creo 2.0 <> VS2010本教程所述的方法完全适用于 Wildfire4.0 + VS2008 、Creo1.0 + VS20

2、10、Creo2.0 + VS2010。2 一、准备1.Pro/TOOLKIT在安装Pro/E时,默认是不安装Pro/TOOLKIT的,必须选中【API工具包】节点 下的Pro/TOOLKIT选项。可以通过运行:Pro/E安装目录/bin/ptcsetup.bat查看有无安装Pro/TOOLKIT。2.VS2008VS2008中文版下载地址:http:/pan.baidu.eom/s/1ntt7PH3最好安装下VS2008 SP1补丁,否则编译Debug版本时常会报错。VS2008 SP1中文版下载地址:如果你需要开发64位的Pro/TOOLKIT程序,请确保安装 X64 Compilers

3、andTools ,如下图所示:3二、新建工程点击【文件】-【新建】-【项目】菜单命令,创建 MFC DLLX程 输入工程名称:test_wf5 o单击【确定】,然后在弹出的对话框中单击【下一步】DLL类型:使用共享MFC DLL单击【完成】完成创建工程4三、配置工程属性1 .新增64位编译平台注意:如果只编译32位程序,请跳过此步骤。单击【生成】-【配置管理器】菜单命令,然后依照下图操作配置考理案Test wf5Debug-| Win32如果没有x64选项,那说明安装 VS2008时,没有安装X64Compilers and Tools, 重新安装此选项即可。2 .新增头文件路径 单击【项目

4、】-【属性】菜单命令,添加如下头文件路径【Pro/E 安装目录】prodevelopincludes【Pro/E 安装目录】protoolkitincludes注意:请先选择平台是 Win32还是x64。Word资料1.选择口in32或可4Test wf5层性更配詈(C):活菊(Release)/程息数据库(/Zi)tU包含目录,平台(除Win323.-C:PTCp roeWi I dfi re 5.0prodevelo|指i逋用意性配置层性宫规 谑试C/C + +2 .座 优化 预处理器 代再生成 语言 预狷深头1S出文件 浏览信息 高级 命令行髓接器 清聿工具 潘XML文档生成器 浏览信息

5、 生成事# 皂定空牛或生骡目录析#jsing引用 调试信息格式3 .新增库文件路径32位:【Pro/E 安装目录】prodevelopi486_ntobj【Pro/E 安装目录】protoolkiti486_ntobj64位:【Pro/E 安装目录】prodevelopx86e_win64obj【Pro/E 安装目录】protoolkitx86e_win64obj4 .添加附加依赖项mpr.lib wsock32.libpsapi.lib protk_dllmd.lib prodev_dllmd.lib netapi32.libTest_wf5是性更ReJease,平台(P); Win32附加

6、依赖项忽照所有默认集mpr.lib wsock92.lib psapi.lib protk_d逋用意性配置层性注试C/C + +链接器常规蛇人 清单文件 取妾蜿优化展入的IDL高级命令行清单工具溺XML文烂生或嚣 浏览信息 生成事件 昌至义生成步要5.设置工程字符集推荐优先采用UnicodeWord资料逋用居性ji年雪堂性 .重规0 C/C + + 避援器清单工具飒XML文档生成器0浏览信息 生成事件 耳罡文生成步臻取后Test_wf5层性页配置© Release,平白(P); Win32, | 配日 喻出目录S(SolutionDir)$(ConfigurationName中间目录

7、$(ConfigurationNaine)清除盯要删除的扩展名*.o bj;*.«lk;*.tl b/.tlp;*. rsp/.pgc;生成日志文件$(IntDi rJBuildLog.htm塞承的项目属性表 启用E管甯量生成星曰项目默认值 配置美型朝态的.dll)MFC的使用在共享DLL中使用MFCATL的使用不使用ATL字符集使用 ede字符集k公共语言运行库支持无公共造喜运行JS支持降 二全程序优化使用蹒时间代码生成输出目录指定或出文件目录的相归路径;可以包含不谟变量.5四、添加Pro/TOOLKIT代码在test_wf5.cpp 文件的最后添加以下Pro/TOOLKIT代码。

8、该段代前的功能是:在Pro/E的【帮助】菜单后新增一个菜单【TestMenu,然 后在【TestMenu】下新增两个菜单项【Test和【ShowCurrModelName。分别 实现弹出测试对话框和获取当前模型的名称并弹窗显示。注意:先只要大体理解代码的整体思路即可,本教程会在第三篇:注把手教你开发Pro/TOOLKIT应用程序(三)中具体阐明代码的所有细节,在学习完本篇和第 二篇后,再去学习第三篇会比较好。/包含常用头文件#include <ProToolkit.h>#include <ProUtil.h>#include <ProMenuBar.h>#i

9、nclude <ProMenu.h>#include <ProMode.h>JI1234567891011121314151617181920212223242526272829303132333435363738394041424344/包含常用头文件#include <ProToolkit.h>#include <ProUtil.h>#include <ProMenuBar.h>#include <ProMenu.h>#include <ProMode.h>#include <ProMdl.h>

10、#include <ProSolid.h>#include <ProAsmcomp.h>#include <ProArray.h>#include <ProModelitem.h>#include <ProLayer.h>/函数声明uiCmdAccessState TestAccess(uiCmdAccessMode access_mode);uiCmdAccessState ShowCurrModelName_Access(uiCmdAccessMode access_mode);int Test(uiCmdCmdId comman

11、d,uiCmdValue *p_value,void*p_push_command_data);int ShowCurrModelName(uiCmdCmdId command,uiCmdValue *p_value,void*p_push_command_data);/ Pro/TOOLKIT 入口函数extern "C" int user_initialize().ProError err;/信息文件名称ProFamilyName MsgFile;ProStringToWstring(MsgFile, "Test_Msg.txt");/添加菜单:Te

12、stMenuerr = ProMenubarMenuAdd("TestMenu", "TestMenu", "Help", PRO_B_TRUE, MsgFile);/添加命令和菜单项/测试命令uiCmdCmdId cmd_id1;err = ProCmdActionAdd("Test", Test, uiCmdPrioDefault, TestAccess, PRO_B_FALSE, PRO_B_FALSE, &cmd_id1);err = ProMenubarmenuPushbuttonAdd(&quo

13、t;TestMenu", "Test", "Test",4546474849505152535455565758596061626364656667686970717273747576777879808182838485868788"Test_Help",NULL, PRO_B_TRUE, cmd_id1, MsgFile);/显示并输出当前模型的名称uiCmdCmdId cmd_id2;err = ProCmdActionAdd("ShowCurrModelName", ShowCurrModelNam

14、e, uiCmdPrioDefault,ShowCurrModelName_Access,PRO_B_FALSE, PRO_B_FALSE, &cmd_id2);err = ProMenubarmenuPushbuttonAdd("TestMenu", "ShowCurrModelName", "ShowCurrModelName","ShowCurrModelName_Help", NULL, PRO_B_TRUE, cmd_id2, MsgFile);return 0;/ Pro/TOOLKIT结束时调

15、用的函数extern "C" void user_terminate()./测试命令响应函数int Test(uiCmdCmdId command,uiCmdValue *p_value,void*p_push_command_data)AfxMessageBox(_T("Just For Test"); return 0;/命令:获取当前模型的名称并显示int ShowCurrModelName(uiCmdCmdId command, uiCmdValue *p_value, void*p_push_command_data)ProError err;

16、/获取当前模型ProMdl mdl;err = ProMdlCurrentGet(&mdl);if (PRO_TK_NO_ERROR != err)return -1;8990 /获取当前模型名称并显示91 ProName name;92 err = ProMdlNameGet(mdl, name);93 MessageBoxW(NULL, name, L"wf5 test", MB_OK);9495 return 0;96 9798 /测试命令 菜单权限函数99 /任何情况下菜单都有效100 uiCmdAccessState TestAccess(uiCmdAcc

17、essMode access_mode)101 102 return ACCESS_AVAILABLE;103 /*104 ProError err;105 ProMode mode;106107 err = ProModeCurrentGet(&mode);108 if (err != PRO_TK_NO_ERROR)109 110 return ACCESS_UNAVAILABLE;111 112113 if (mode = PRO_MODE_PART114 | mode = PRO_MODE_ASSEMBLY)115 116 return ACCESS_AVAILABLE;117

18、 118 else119 120 return ACCESS_UNAVAILABLE;121 122 */123 124125 /获取当前模型名称并显示 菜单权限函数126 /只有在当前打开的模型为 PART3 ,ASM档或Drawing档时菜单才有效127 uiCmdAccessState ShowCurrModelName_Access(uiCmdAccessMode128 access_mode)129 130 ProError err;131 ProMode mode;132133 err = ProModeCurrentGet(&mode);134 if (PRO_TK_NO

19、_ERROR != err)135 136 return ACCESS_UNAVAILABLE;137 138139 if (mode = PRO_MODE_PART140 | mode = PRO_MODE_ASSEMBLY141 | mode = PRO_MODE_DRAWING)142 143 return ACCESS_AVAILABLE; elsereturn ACCESS_UNAVAILABLE;代码说明:1. user_initialize() 为Pro/TOOLKIT应用程序的入口函数,每个 Pro/TOOLKIT程序在被Pro/E加载时,首先执行此函数。2. user_ter

20、minate() 是Pro/TOOLKIT程序被Pro/E卸载时执行的函数。3. ProMenubarMenuAdcfc Pro/TOOLKIT程序添加菜单。4. ProCmdActionAdd为Pro/TOOLKIT程序添加一个命令,一般在添加菜单项 时会将命令和菜单项关联,这样在单击菜单项时,就会执行对应的命令。5. ProMenubarmenuPushbuttonAdd为菜单添力口菜单项。6. 以上代码添加了两个命令:test -直接弹出测试对话框。ShowCurrModelName -获取当前模型的名称并显示。6五、编译程序1 .选择需要编译 Win32还是x64版本,以及Debug还

21、是Release版本调试(D)格式(O) TMCD 测试窗口 (W)帮助(H)> Release - k642 .单击【生成】,【生成解决方案】即可编译生成 DLL文件:test_wf5.dll 。 注意:如果你的VS2008没有安装SP1补丁,编译Debug版本时常会报错,即使 编译成功,Pro/E也无法加载生成的test_wf5.dll 。在编写信息文件前,首先在工程文件夹下新建 Bin文件夹,然后将第五步生成的test_wf5.dll 拷贝到Bin文件夹下。6.1六、编写信息文件信息文件是用来定义Pro/TOOLKIT程序菜单及菜单项显示信息的文本文件。其内 容以四行为一组,每行代

22、表的意义如下: 菜单或菜单项的名称 菜单或菜单项的英文显示 菜单或菜单项的中文显示或其他语言版本的显示 # 加载Pro/TOOLKIT程序时,会读取信息文件,并根据菜单或菜单项的名称,匹配 出菜单或菜单项的显示字符串。信息文件必须位于text目录下。操作步骤如下:- Test_wf5 Bin textchine$e_cn .jsascii1 .首先在Bin文件夹下新建text文件夹。2 .然后在text文件夹下新建两个子文件夹:chinese_cn、usascii ,分别代表当Pro/E的语言版本为简体中文时,会读取 chinese_cn文件夹下的信息文件。当Pro/E的语言版本为英文时,会读

23、取usascii文件夹下的信息文件。3 .在chinese_cn文件夹下新建如下内容的文本文件:Test_Msg.txt。TestMenuTest 测试菜单# TestTest1 TestMenu2 Test3测试菜单4 #5 Test6 Test7测试8 #9 Test_Help10 Just For Test11测试12 #13 ShowCurrModelName14 ShowCurrModelName15 显示模型名称16 #17 ShowCurrModelName_Help18 Show Current Model Name19显示模型名称20 #4.在usascii文件夹下新建如下内

24、容的文本文件:Test_Msg.txt。TestMenu Test # # Test Test1 TestMenu2 Test3 #4 #5 Test6 Test7 #8 #9 Test_Help10 Just For Test11 #12 #13 ShowCurrModelName14 ShowCurrModelName15 #16 #17 ShowCurrModelName_Help18 Show Current Model Name19 #20 #21 2七、编写注册文件注册文件包含Pro/TOOLKIT应用程序的路径,text文件夹的路径等信息,Pro/E 通过注册文件中包含的信息,找

25、到 Pro/TOOLKIT程序并加载。在Bin文件夹下新建文本文件protk.dat ,并输入如下内容。name Test_wf5startup dllexec_file .Test_wf5.dllrevision Wildfire allow_stop TRUE1 name Test_wf52 startup dll3 exec_file .Test_wf5.dll4 text_dir.5 revisionWildfire6 allow_stop TRUE7 end含义如下:o name Pro/TOOLKIT应用程序标识名称o startup : Pro/TOOLKIT应用程序与 Pro/

26、E的交互方式,一般为 dllo exec_file : Pro/TOOLKIT程序的路径,可以是绝对路径,也可以使相对路 径otext_dir: text文件夹路径orevision :版本o allow_stop :是否允许手动终止Pro/TOOLKIT程序o end:结束标志6.3 八、自动加载 Pro/TOOLKI程序在Bin文件夹下新建一批处理文件 GoProE.bat,输入命令:call Pro/E全路径 例如在我的电脑上输入以下命令即可:call "C:PTCproeWildfire 5.0bd|1 call "C:PTCproeWildfire 5.0binp

27、roe1.bat"名称text艾 GoProEnbat| : protkdatTest_vf5.dll双击GoProE.bat运行,将会启动Pro/E并自动加载我们编写的 Pro/TOOLKIT程 序。姓显示模型名称 "这是因为我们通过GoProE.bat来启动Pro/E ,那么Pro/E的启动目录就为当前 的Bin文件夹,Pro/E启动时,会自动读取启动目录下,名为 protk.dat的注册 文件,来加载Pro/TOOLKIT程序。6.4 九、测试程序1 .单击【测试】菜单项,会弹出以下对话框。C:PTCproeW i I dfi re 51 Dx86e_w i n 64

28、o bjxtop.Just For Test确定2 .新建一档案:零件档、组立档或工程图。单击【显示模型名称】菜单项,会弹 出窗口,显示当前模型的名称。6.5十、手动加载 Pro/TOOLKIT程序我们也可以手动加载Pro/TOOLKIT程序。在手动加载Pro/TOOLKIT程序之前,我们需要先修改之前创建的注册文件 protk.dat 。将exec_dir和text_dir 指定的相对路径改为绝对路径,否则手动 加载时会由于找不到相对路径指定的文件而报错的。示例如下:1 name Test_wf52 startup dll3 exec_file D:WangYaoTest_wf5BinTes

29、t_wf5.dll4 text_dirD:WangYaoTest_wf5Bin5 revisionWildfire6 allow_stop TRUE7 end通过桌面上的快捷方式来启动 Pro/E。单击【工具】-【辅助应用程序】1 .单击【注册】,在弹出的对话框中选择Bin文件夹下的protk.dat文件2 .选中加载进来的Pro/TOOLKIT程序。3 .单击【启动】。这篇主要讲解第一篇中Pro/TOOLKIT代码的具体含义Line 112包含Pro/TOOLKIT常用的头文件Line 1524 函数声明。Line 2655 user_initializeuser_initialize 为P

30、ro/TOOLKIT程序的初始化函数,每个 Pro/TOOLKIT程序 (DLD都必须定义该函数。一般在该函数中添加菜单和菜单项。Line 3032定义了宽字符数组变量 MsgFile用于存储信息文件的名称:Test_Msg.txt 。ProFamilyName为宽字符(wchar_t)数组。ProStringToWstring 函数将char字符串转换为 wchar_t字符串。Line 35ProError ProMenubarMenuAdd(在Pro/E【帮助】菜单之后添加菜单【TestMenu!。ProMenuItemName menu_naProMenuItemLabel untran

31、ProMenuItemName neighbo ProBoolean add_after_ne ProFileName filename);1 ProError ProMenubarMenuAdd(2 ProMenuItemName menu_name,3 ProMenuItemLabel untranslated_menu_label,4 ProMenuItemName neighbor,5 ProBoolean add_after_neighbor,6 ProFileName filename); menu_name菜单名称,必须唯一。 untranslated_menu_label :菜

32、单文本,该文本用于匹配信息文件中的内容。 neighbor :相邻的菜单名。"Help"为【帮助】菜单。 add_after_neighbor :是否位于相邻菜单的右侧。PRO_B_TRUE明位于 右对,否向位于左侧。一 一 filename :信息文件名。Line 3941添加命令:Test oProError ProCmdActionAdd( char *actio uiCmdCmdActFn action_cb uiCmdPriority priority, uiCmdAccessFn access_fu ProBoolean allow_in_Word资料1 Pro

33、Error ProCmdActionAdd(2 char3 uiCmdCmdActFn4 uiCmdPriority5 uiCmdAccessFn6 ProBoolean7 ProBoolean8 uiCmdCmdId*action_name,action_cb,priority,access_func,allow_in_non_active_window allow_in_accessory_window,*action_id); action_name :命令名称,必须唯一。 action_cb :命令的响应函数。 priority :命令的优先级,一般为 uiCmdPrioDefault

34、 。 access_func :命令的访问权限函数。该函数的返回值关系到和命令关联 的菜单疏的状态,具体如下:typedef enumACCESS_REMOVE = -1, /ACCESS_INVISIBLE, /ACCESS_UNAVAILABLE, ACCESS_DISALLOW, /除单单单 移菜菜菜1 typedef enum2 3 ACCESS_REMOVE = -1, / 移除菜单项4 ACCESS_INVISIBLE,/菜单项不可见5 ACCESS_UNAVAILABLE, /菜单项灰化不可选6 ACCESS_DISALLOW,/菜单项不可选7 ACCESS_AVAILABLE/菜单项可选8 uiCmdAccessState;allow_in_non_active_window 项,二遢 Pro_b_falsE allow_in_accessory_window 一般为 PRO_B_FALSE action_id :命令 ID。:是否在非激活窗口中显示命令关联的菜单:是否在附属窗口中显示命令关联的菜单项,Line 4243添加菜单按钮:TestProError Pr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论