沐鸣娱乐


        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 二次开发)

        相关新闻

        联系我们
        联系我们
        分享本页
        返回顶部

          XML地图