版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、【精品文檔】如有侵權(quán),請(qǐng)聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流Proe應(yīng)用ProTOOLKIT二次開發(fā).精品文檔.手把手教你開發(fā)Pro/TOOLKIT應(yīng)用程序1 前言本教程采用VS2008 + Pro/E Wildfire5.0來講解怎樣開發(fā)Pro/TOOLKIT應(yīng)用程序。開發(fā)Pro/TOOLKIT應(yīng)用程序時(shí),Pro/E和Visual Studio的版本需對(duì)應(yīng),否則很難搭建開發(fā)環(huán)境,其對(duì)應(yīng)關(guān)系如下:· Wildfire 4.0 <> VS2008· Wildfire 5.0 <> VS2008· Creo 1.0 <> VS2010
2、83; Creo 2.0 <> VS2010本教程所述的方法完全適用于Wildfire4.0 + VS2008、Creo1.0 + VS2010、Creo2.0 + VS2010。2 一、準(zhǔn)備1.Pro/TOOLKIT在安裝Pro/E時(shí),默認(rèn)是不安裝Pro/TOOLKIT的,必須選中【API工具包】節(jié)點(diǎn)下的Pro/TOOLKIT選項(xiàng)。可以通過運(yùn)行:Pro/E安裝目錄/bin/ptcsetup.bat 查看有無安裝Pro/TOOLKIT。2.VS2008VS2008中文版下載地址:最好安裝下VS2008 SP1補(bǔ)丁,否則編譯Debug版本時(shí)常會(huì)報(bào)錯(cuò)。VS2008 SP1中文版下載地址
3、:如果你需要開發(fā)64位的Pro/TOOLKIT程序,請(qǐng)確保安裝X64 Compilers and Tools,如下圖所示:3 二、新建工程點(diǎn)擊【文件】->【新建】->【項(xiàng)目】菜單命令,創(chuàng)建MFC DLL工程。輸入工程名稱:test_wf5。單擊【確定】,然后在彈出的對(duì)話框中單擊【下一步 >】DLL類型:使用共享 MFC DLL單擊【完成】完成創(chuàng)建工程。4 三、配置工程屬性1.新增64位編譯平臺(tái)注意:如果只編譯32位程序,請(qǐng)?zhí)^此步驟。單擊【生成】->【配置管理器】菜單命令,然后依照下圖操作。如果沒有x64選項(xiàng),那說明安裝VS2008時(shí),沒有安裝X64 Compilers
4、 and Tools,重新安裝此選項(xiàng)即可。2.新增頭文件路徑單擊【項(xiàng)目】->【屬性】菜單命令,添加如下頭文件路徑?!綪ro/E安裝目錄】prodevelopincludes【Pro/E安裝目錄】protoolkitincludes注意:請(qǐng)先選擇平臺(tái)是Win32還是x64。3.新增庫文件路徑32位:【Pro/E安裝目錄】prodevelopi486_ntobj【Pro/E安裝目錄】protoolkiti486_ntobj64位:【Pro/E安裝目錄】prodevelopx86e_win64obj【Pro/E安裝目錄】protoolkitx86e_win64obj4.添加附加依賴項(xiàng)mpr.l
5、ibwsock32.libpsapi.libprotk_dllmd.libprodev_dllmd.libnetapi32.lib5.設(shè)置工程字符集推薦優(yōu)先采用Unicode。5 四、添加Pro/TOOLKIT代碼在test_wf5.cpp文件的最后添加以下Pro/TOOLKIT代碼。該段代碼的功能是:在Pro/E的【幫助】菜單后新增一個(gè)菜單【TestMenu】,然后在【TestMenu】下新增兩個(gè)菜單項(xiàng)【Test】和【ShowCurrModelName】。分別實(shí)現(xiàn)彈出測(cè)試對(duì)話框和獲取當(dāng)前模型的名稱并彈窗顯示。注意:先只要大體理解代碼的整體思路即可,本教程會(huì)在第三篇:手把手教你開發(fā)Pro/TO
6、OLKIT應(yīng)用程序(三) 中具體闡明代碼的所有細(xì)節(jié),在學(xué)習(xí)完本篇和第二篇后,再去學(xué)習(xí)第三篇會(huì)比較好。1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191
7、20121122123124125126127128129130131132133134135136137138139140141142143/ 包含常用頭文件#include <ProToolkit.h>#include <ProUtil.h>#include <ProMenuBar.h>#include <ProMenu.h>#include <ProMode.h>#include <ProMdl.h>#include <ProSolid.h>#include <ProAsmcomp.h> #i
8、nclude <ProArray.h>#include <ProModelitem.h>#include <ProLayer.h> / 函數(shù)聲明uiCmdAccessState TestAccess(uiCmdAccessMode access_mode);uiCmdAccessState ShowCurrModelName_Access(uiCmdAccessMode access_mode); int Test(uiCmdCmdId command,uiCmdValue *p_value,void
9、160; *p_push_command_data);int ShowCurrModelName(uiCmdCmdId command, uiCmdValue *p_value, void *p_push_command_data); / Pro/TOOLKIT入口函數(shù)extern "C" int user_initialize()ProError err; / 信息文件
10、名稱ProFamilyName MsgFile;ProStringToWstring(MsgFile, "Test_Msg.txt"); / 添加菜單:TestMenuerr = ProMenubarMenuAdd("TestMenu", "TestMenu", "Help", PRO_B_TRUE, MsgFile); / 添加命令和菜單項(xiàng)/ 測(cè)試命令uiCmdCmdId cmd_id1;err = ProCmdActionAdd("Test", Test, uiCmdPr
11、ioDefault, TestAccess, PRO_B_FALSE, PRO_B_FALSE, &cmd_id1);err = ProMenubarmenuPushbuttonAdd("TestMenu", "Test", "Test", "Test_Help",NULL, PRO_B_TRUE, cmd_id1, MsgFile); / 顯示并輸出當(dāng)前模型的名稱uiCmdCmdId cmd_id2;err = ProCmdActionAdd("ShowCurrModelName&qu
12、ot;, ShowCurrModelName, 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);
13、160;return 0; / Pro/TOOLKIT結(jié)束時(shí)調(diào)用的函數(shù)extern "C" void user_terminate() / 測(cè)試命令響應(yīng)函數(shù)int Test(uiCmdCmdId command,uiCmdValue *p_value,void *p_push_command_data)AfxMessageBox(_T("Just For Test");return 0;
14、60;/ 命令:獲取當(dāng)前模型的名稱并顯示int ShowCurrModelName(uiCmdCmdId command, uiCmdValue *p_value, void *p_push_command_data)ProError err; / 獲取當(dāng)前模型ProMdl mdl;err = ProMdlCurrentGet(&mdl);if (PRO_TK_NO_ERROR != err)return -1; / 獲取當(dāng)前模型
15、名稱并顯示ProName name;err = ProMdlNameGet(mdl, name);MessageBoxW(NULL, name, L"wf5 test", MB_OK); return 0; / 測(cè)試命令 菜單權(quán)限函數(shù)/ 任何情況下菜單都有效uiCmdAccessState TestAccess(uiCmdAccessMode access_mode)return ACCESS_AVAILABLE;/*ProError err;ProMode mode; err = ProModeCurrentGet(&a
16、mp;mode);if (err != PRO_TK_NO_ERROR)return ACCESS_UNAVAILABLE; if (mode = PRO_MODE_PART | mode = PRO_MODE_ASSEMBLY)return ACCESS_AVAILABLE;elsereturn ACCESS_UNAVAILABLE;*/ / 獲取當(dāng)前模型名稱并顯示 菜單權(quán)限函數(shù)/ 只有在當(dāng)前打開的模型為PART檔,ASM檔或Drawing檔時(shí)菜單才有效uiCmdAccessState ShowCurrModelName_Access(uiCmdAccessMode ac
17、cess_mode)ProError err;ProMode mode; err = ProModeCurrentGet(&mode);if (PRO_TK_NO_ERROR != err)return ACCESS_UNAVAILABLE; if (mode = PRO_MODE_PART | mode = PRO_MODE_ASSEMBLY| mode = PRO_MODE_DRAWING)return ACCESS_AVAILABLE;elsereturn ACCESS_UNAVAILABLE;代碼說明:1. user_initializ
18、e()為Pro/TOOLKIT應(yīng)用程序的入口函數(shù),每個(gè)Pro/TOOLKIT程序在被Pro/E加載時(shí),首先執(zhí)行此函數(shù)。2. user_terminate()是Pro/TOOLKIT程序被Pro/E卸載時(shí)執(zhí)行的函數(shù)。3. ProMenubarMenuAdd為Pro/TOOLKIT程序添加菜單。4. ProCmdActionAdd為Pro/TOOLKIT程序添加一個(gè)命令,一般在添加菜單項(xiàng)時(shí)會(huì)將命令和菜單項(xiàng)關(guān)聯(lián),這樣在單擊菜單項(xiàng)時(shí),就會(huì)執(zhí)行對(duì)應(yīng)的命令。5. ProMenubarmenuPushbuttonAdd為菜單添加菜單項(xiàng)。6. 以上代碼添加了兩個(gè)命令:test - 直接彈出測(cè)試對(duì)話框。Show
19、CurrModelName - 獲取當(dāng)前模型的名稱并顯示。6 五、編譯程序1.選擇需要編譯Win32還是x64版本,以及Debug還是Release版本。2.單擊【生成】->【生成解決方案】即可編譯生成DLL文件:test_wf5.dll。注意:如果你的VS2008沒有安裝SP1補(bǔ)丁,編譯Debug版本時(shí)常會(huì)報(bào)錯(cuò),即使編譯成功,Pro/E也無法加載生成的test_wf5.dll。在編寫信息文件前,首先在工程文件夾下新建Bin文件夾,然后將第五步生成的test_wf5.dll拷貝到Bin文件夾下。6.1 六、編寫信息文件信息文件是用來定義Pro/TOOLKIT程序菜單及菜單項(xiàng)顯示信息的文本
20、文件。其內(nèi)容以四行為一組,每行代表的意義如下:· 菜單或菜單項(xiàng)的名稱· 菜單或菜單項(xiàng)的英文顯示· 菜單或菜單項(xiàng)的中文顯示或其他語言版本的顯示加載Pro/TOOLKIT程序時(shí),會(huì)讀取信息文件,并根據(jù)菜單或菜單項(xiàng)的名稱,匹配出菜單或菜單項(xiàng)的顯示字符串。信息文件必須位于text目錄下。操作步驟如下:1. 首先在Bin文件夾下新建text文件夾。2. 然后在text文件夾下新建兩個(gè)子文件夾:chinese_cn、usascii,分別代表當(dāng)Pro/E的語言版本為簡(jiǎn)體中文時(shí),會(huì)讀取chinese_cn文件夾下的信息文件。當(dāng)Pro/E的語言版本為英文時(shí),會(huì)讀取usascii文件
21、夾下的信息文件。3. 在chinese_cn文件夾下新建如下內(nèi)容的文本文件:Test_Msg.txt。1234567891011121314151617181920TestMenuTest測(cè)試菜單#TestTest測(cè)試#Test_HelpJust For Test測(cè)試#ShowCurrModelNameShowCurrModelName顯示模型名稱#ShowCurrModelName_HelpShow Current Model Name顯示模型名稱#4. 在usascii文件夾下新建如下內(nèi)容的文本文件:Test_Msg.txt。1234567891011121314151617181920T
22、estMenuTest#TestTest#Test_HelpJust For Test#ShowCurrModelNameShowCurrModelName#ShowCurrModelName_HelpShow Current Model Name#6.2 七、編寫注冊(cè)文件注冊(cè)文件包含Pro/TOOLKIT應(yīng)用程序的路徑,text文件夾的路徑等信息,Pro/E通過注冊(cè)文件中包含的信息,找到Pro/TOOLKIT程序并加載。在Bin文件夾下新建文本文件protk.dat,并輸入如下內(nèi)容。1234567name Test_wf
23、5startup dllexec_file .Test_wf5.dlltext_dir .revision Wildfireallow_stop TRUEend含義如下:o name:Pro/TOOLKIT應(yīng)用程序標(biāo)識(shí)名稱o startup:Pro/TOOLKIT應(yīng)用程序與Pro/E的交互方式,一般為dllo exec_file:Pro/TOOLKIT程序的路徑,可以是絕對(duì)路徑,也可以使相對(duì)路徑o text_dir:text文件夾路徑o revision:版本o allow_st
24、op:是否允許手動(dòng)終止Pro/TOOLKIT程序o end:結(jié)束標(biāo)志6.3 八、自動(dòng)加載Pro/TOOLKI程序在Bin文件夾下新建一批處理文件GoProE.bat,輸入命令:call Pro/E全路徑例如在我的電腦上輸入以下命令即可:1call "C:PTCproeWildfire 5.0binproe1.bat"雙擊GoProE.bat運(yùn)行,將會(huì)啟動(dòng)Pro/E并自動(dòng)加載我們編寫的Pro/TOOLKIT程序。這是因?yàn)槲覀兺ㄟ^GoProE.bat來啟動(dòng)Pro/E,那么Pro/E的啟動(dòng)目錄就為當(dāng)前的Bin文件夾,Pro/E啟動(dòng)時(shí),會(huì)自動(dòng)讀取啟動(dòng)目錄下,名為protk.dat的
25、注冊(cè)文件,來加載Pro/TOOLKIT程序。6.4 九、測(cè)試程序1.單擊【測(cè)試】菜單項(xiàng),會(huì)彈出以下對(duì)話框。2.新建一檔案:零件檔、組立檔或工程圖。單擊【顯示模型名稱】菜單項(xiàng),會(huì)彈出窗口,顯示當(dāng)前模型的名稱。6.5 十、手動(dòng)加載Pro/TOOLKIT程序我們也可以手動(dòng)加載Pro/TOOLKIT程序。在手動(dòng)加載Pro/TOOLKIT程序之前,我們需要先修改之前創(chuàng)建的注冊(cè)文件protk.dat。將exec_dir和text_dir指定的相對(duì)路徑改為絕對(duì)路徑,否則手動(dòng)加載時(shí)會(huì)由于找不到相對(duì)路徑指定的文件而報(bào)錯(cuò)的。示例如下:1234567name
26、; Test_wf5startup dllexec_file D:WangYaoTest_wf5BinTest_wf5.dlltext_dir D:WangYaoTest_wf5Binrevision Wildfireallow_stop TRUEend通過桌面上的快捷方式來啟動(dòng)Pro/E。單擊【工具】->【輔助應(yīng)用程序】1.單擊【注冊(cè)】,在彈出的對(duì)話框中選擇Bin文件夾下的protk.dat文件。2.選中加載進(jìn)來的Pro/TOOLKIT程序。3.單擊【啟動(dòng)】。
27、這篇主要講解第一篇中Pro/TOOLKIT代碼的具體含義。Line 112包含Pro/TOOLKIT常用的頭文件。Line 1524函數(shù)聲明。Line 2655 user_initializeuser_initialize為Pro/TOOLKIT程序的初始化函數(shù),每個(gè)Pro/TOOLKIT程序(DLL)都必須定義該函數(shù)。一般在該函數(shù)中添加菜單和菜單項(xiàng)。Line 3032定義了寬字符數(shù)組變量MsgFile用于存儲(chǔ)信息文件的名稱:Test_Msg.txt。ProFamilyName為寬字符(wchar_t)數(shù)組。ProStringToWstring函數(shù)將char字符串轉(zhuǎn)換為wchar_t
28、字符串。Line 35在Pro/E【幫助】菜單之后添加菜單【TestMenu】。123456ProError ProMenubarMenuAdd(ProMenuItemName menu_name,ProMenuItemLabel untranslated_menu_label,ProMenuItemName neighbor,ProBoolean add_after_neighbor,ProFileName filename);· menu_name:菜單名稱,必須唯一。· untranslated_menu_label:菜單文本,該文本用于匹配信息文件中的內(nèi)容。
29、3; neighbor:相鄰的菜單名。"Help"為【幫助】菜單。· add_after_neighbor:是否位于相鄰菜單的右側(cè)。PRO_B_TRUE表明位于右側(cè),否則位于左側(cè)。· filename:信息文件名。Line 3941添加命令:Test。12345678ProError ProCmdActionAdd(char *action_name, uiCmdCm
30、dActFn action_cb, uiCmdPriority priority, uiCmdAccessFn access_func, ProBoolean allow_in_non_active_window,
31、; ProBoolean allow_in_accessory_window, uiCmdCmdId *action_id);· action_name:命令名稱,必須唯一。· action_cb:命令的響應(yīng)函數(shù)。· priority:命令的優(yōu)先級(jí),一般為uiCmdPrioDefault。· access_fun
32、c:命令的訪問權(quán)限函數(shù)。該函數(shù)的返回值關(guān)系到和命令關(guān)聯(lián)的菜單項(xiàng)的狀態(tài),具體如下:12345678typedef enum ACCESS_REMOVE = -1, / 移除菜單項(xiàng) ACCESS_INVISIBLE, / 菜單項(xiàng)不可見 ACCESS_UNAVAILABLE, / 菜單項(xiàng)灰化不可選 ACCESS_DISALLOW,
33、 / 菜單項(xiàng)不可選 ACCESS_AVAILABLE / 菜單項(xiàng)可選 uiCmdAccessState;· allow_in_non_active_window:是否在非激活窗口中顯示命令關(guān)聯(lián)的菜單項(xiàng),一般為PRO_B_FALSE。· allow_in_accessory_window:是否在附屬窗口中顯示命令關(guān)聯(lián)的菜單項(xiàng),一般為PRO_B_FALSE。· action_id:命令I(lǐng)D。Line 4243添加菜單按鈕:Tes
34、t。123456789ProError ProMenubarmenuPushbuttonAdd(ProMenuItemName parent_menu, ProMenuItemName push_button_name, ProMenuItemLabel push_button_label, ProMenuLineHelp one_line_help, ProMenuItemName neighbor, ProBool
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024美團(tuán)外賣店配送時(shí)效及服務(wù)質(zhì)量合同3篇
- 2025年度體育用品代銷及賽事贊助合同4篇
- 2025年度別墅庭院景觀照明節(jié)能改造與維護(hù)合同3篇
- 2024玉石行業(yè)區(qū)塊鏈技術(shù)應(yīng)用與合作合同集錦3篇
- 2024版事業(yè)單位續(xù)簽勞動(dòng)合同申請(qǐng)書
- 2025年度物流運(yùn)輸代理服務(wù)合同標(biāo)準(zhǔn)范本4篇
- 2025年度智能電網(wǎng)用電安全出租房屋合同范本4篇
- 2025年分公司設(shè)立與市場(chǎng)開發(fā)合作協(xié)議書4篇
- 建筑垃圾再利用可行性研究報(bào)告x
- 2025年電子商務(wù)平臺(tái)租賃續(xù)租服務(wù)協(xié)議3篇
- TD/T 1060-2021 自然資源分等定級(jí)通則(正式版)
- 人教版二年級(jí)下冊(cè)口算題大全1000道可打印帶答案
- 《創(chuàng)傷失血性休克中國(guó)急診專家共識(shí)(2023)》解讀
- 倉庫智能化建設(shè)方案
- 海外市場(chǎng)開拓計(jì)劃
- 2024年度國(guó)家社會(huì)科學(xué)基金項(xiàng)目課題指南
- 供應(yīng)鏈組織架構(gòu)與職能設(shè)置
- 幼兒數(shù)學(xué)益智圖形連線題100題(含完整答案)
- 2024年九省聯(lián)考新高考 數(shù)學(xué)試卷(含答案解析)
- 紅色歷史研學(xué)旅行課程設(shè)計(jì)
- 如何避免護(hù)理患者投訴
評(píng)論
0/150
提交評(píng)論