可以在线看黄的网站-可以免费在线看黄的网站-可以免费看污视频的网站-可以免费看毛片的网站-欧美电影免费看大全-欧美电影免费

Creo的二次開發配置(creo 二次開發)

ProE/Creo Parametric TOOLKIT 二次開發環境推薦設置(上)

一、ProE/Creo與IDE選擇

IDE(Integrated Development Environment):集成開發環境,是用于提供程序開發環境的應用程序,一般包括代碼編輯器、編譯器、調試器和圖形用戶界面等工具。

VS(Microsoft Visual Studio):是微軟發布的一個很完整的開發工具集,包含很多高級語言的開發環境,VC只是VS其中的一個開發環境。

VC(Microsoft Visual C ):是微軟公司的C 開發工具,具有集成開發環境,可提供編輯C語言,C 以及C /CLI等編程語言。

ProE或Creo低版本上開發的插件一般可以在高版本上運行,或將源代碼經過少量修改,然后在高版本上編譯后即可在高版本上運行,高版本上開發的插件不可以在低版本上運行。

二、創建MFC DLL項目(Visual Studio 2012 Creo3.0 M140)

1. 啟動Visual Studio 2012>文件>新建>項目>模板>Visual C >MFC>MFC DLL>填寫項目“名稱(N)”>選擇項目文件存放“位置(L)”>“確定”

DLL (Dynamic Link Library):動態鏈接庫文件,又稱“應用程序拓展”,是一種軟件文件類型。

DLL模式:進程內模式,Pro/TOOLKIT插件與ProE或Creo程序之間的信息交換通過直接函數調用的形式完成,插件與程序無縫集成,推薦使用的一種方式。

EXE模型:多進程模式,插件被編譯為可執行程序,這個插件程序將是ProE或Creo程序的衍生,并作為主程序的一個子進程來運行。

2. “下一步>”

3. DLL類型:選擇“帶靜態鏈接MFC 的規則 DLL(R)”>“完成”

使用共享MFC DLL的規則DLL(D):編譯后的DLL程序文件中不包含MFC的庫,DLL程序文件稍小一些,當發布該程序時,如果對方的機器上沒有安裝對應版本的MFC的庫,那么該DLL程序無法運行。

帶靜態鏈接MFC 的規則 DLL(R):編譯后的DLL程序文件中包含MFC的庫,DLL程序文件稍大一些,當發布該程序時,即使對方電腦即使沒有安裝對應版本的MFC的庫,那么該DLL程序也可以運行。

第一種與第二種類型對于Pro/TOOLKIT插件程序文件大小影響不大,推薦使用第二種類型。

三、項目屬性設置

1. 新建x64平臺

現在用戶安裝的ProE或Creo大多是64位版本,所以開發時建議開發64位平臺的插件程序,具體還是要以用戶安裝的程序平臺位數來定。

Debug:調試版本,包含調試信息,所以容量比Release大很多,并且不進行任何優化(優化會使調試復雜化,因為源代碼和生成的指令間關系會更復雜),便于程序調試。Debug模式下生成兩個文件,除了.exe或.dll文件外,還有一個.pdb文件,該文件記錄了代碼中斷點等調試信息。

Release:發布版本,不對源代碼進行調試,編譯時對應用程序的速度進行優化,使得程序在代碼大小和運行速度上都是最優的。Release模式下生成一個文件.exe或.dll文件(調試信息可在單獨的PDB文件中生成)。

建議開發調試的時候使用Debug模式,方便插入斷點和捕捉變量值,發布的時候使用Release模式,在創建項目的時候可以將兩種方式都配置好,以供后續選擇。

2. 常規設置

輸出目錄:插件DLL程序文件生成的目錄,對x64平臺建議使用“..binx86e_win64”,對x86平臺建議使用“..bini486_nt”。

中間目錄:插件程序編譯鏈接是產生的中間文件的目錄。

平臺工具集:當電腦中安裝有多個版本的平臺工具集時,可修改當前項目使用的平臺工具集,平臺共計集的選擇請參照【表格1】。

MFC的使用:當新建MFC DLL項目時,如果DLL類型選擇“使用共享MFC DLL的規則DLL(D)”,那么此處顯示“在共享 DLL 中使用 MFC”;如果DLL類型選擇“帶靜態鏈接MFC 的規則 DLL(R)”,那么此處顯示“在靜態庫中使用 MFC”。也可在此處修改DLL類型,推薦使用“在靜態庫中使用 MFC”。

字符集:可以選擇“使用 Unicode 字符集”或“使用多字節字符集”,PTC官方推薦選擇“使用 Unicode 字符集”。

3. VC 目錄

對于x64平臺和x86平臺,包含目錄一樣,庫目錄有所不同。

x64平臺:

包含目錄:D:PTCCreo 3.0M140CommonFilesprotoolkitincludes

庫目錄:D:PTCCreo 3.0M140CommonFilesprotoolkitx86e_win64obj

x86平臺:

包含目錄:D:PTCCreo 3.0M140CommonFilesprotoolkitincludes

庫目錄:D:PTCCreo 3.0M140CommonFilesprotoolkit i486_ntobj

4. 預處理器定義

運行庫選擇“多線程 DLL (/MD)”或“多線程調試 DLL (/MDd)”時,添加:_AFXDLL,因為不推薦選擇這兩種方式,所以不采用這兩種方式是不需要添加。

在插件DLL程序中用到頭文件“ProMessage.h”中函數時,添加:PRO_USE_VAR_ARGS,一般都會使用該文件中的函數,默然是添加。

5. 運行庫

對與Debug和Release模式,運行庫的選擇有所不同:

Debug模式:多線程調試 (/MTd),推薦。

Debug模式:多線程調試 DLL (/MDd),不推薦。

Release模式:多線程 (/MT),推薦。

Release模式:多線程 DLL (/MD) ,不推薦。

運行庫:是程序在運行時所需要的庫文件。通常運行庫是以DLL的形式提供。

6. 附加依賴項

Creo版本不同,需要添加的庫文件也有所不同,一般都需要添加的項有:

mpr.lib

psapi.lib

ws2_32.lib

netapi32.lib

Creo版本

庫文件:(/MT)或(/MTd)

庫文件:(/MD)或(/MDd)

ProE4.0

protk_dll.lib

protk_dllmd.lib

ProE5.0

protk_dll.lib

protk_dllmd.lib

Creo2.0

protk_dll.lib

protk_dllmd.lib

Creo3.0

protk_dll_NU.lib、ucore.lib、udata.lib

protk_dllmd.lib、ucore.lib、udata.lib

Creo4.0

protk_dll_NU.lib、ucore.lib、udata.lib

protk_dllmd_NU.lib、ucore.lib、udata.lib

Creo5.x.x.x

protk_dll_NU.lib、ucore.lib、udata.lib

protk_dllmd_NU.lib、ucore.lib、udata.lib

四、代碼編輯

以下是該插件程序中,需要在文件“TkPlugin.cpp”中輸入的代碼:

//頭文件

#include “ProMenubar.h”

#include “ProMenu.h”

#include “ProUtil.h”

#include “ProMessage.h”

//菜單狀態

static uiCmdAccessState AccessDefault(uiCmdAccessMode access_mode)

{

return(ACCESS_AVAILABLE);

}

//自定義函數

void SayHello()

{

//消息文件

ProFileName msg_file;

ProStringToWstring(msg_file, “message.txt”);

//消息轉換

ProLine msg;

ProMessageToBuffer(msg, msg_file, “Hello World”);

//顯示消息

AfxMessageBox(msg);

}

//入口函數

extern “C” int user_initialize()

{

ProError status = PRO_TK_NO_ERROR;

//菜單文件

ProFileName menu_file;

ProStringToWstring(menu_file,”menu.txt”);

//創建菜單

status = ProMenubarMenuAdd(“TkPluginMenu”,”TkPluginMenu”,”Help”,PRO_B_TRUE,menu_file);

//第一個命令

uiCmdCmdId FirstCmd_Id;

status = ProCmdActionAdd(“FirstCmd_Act”,(uiCmdCmdActFn)SayHello,uiCmdPrioDefault,

AccessDefault,PRO_B_TRUE,PRO_B_TRUE,&FirstCmd_Id);

status = ProMenubarmenuPushbuttonAdd(“TkPluginMenu”,”FirstCmd”,”FirstCmd”,

“This button will show a message”,NULL,PRO_B_TRUE,FirstCmd_Id,menu_file);

status = ProCmdIconSet(FirstCmd_Id,”FirstCmd.gif”);

//返回值

return (0);

}

//出口函數

extern “C” void user_terminate()

{

AFX_MANAGE_STATE(AfxGetStaticModuleState());

}

Creo的二次開發配置(creo 二次開發)

相關新聞

聯系我們
聯系我們
在線咨詢
分享本頁
返回頂部