proe5.0环境下vs2008二次开发(附代码)
proe二次开发教程
![proe二次开发教程](https://img.taocdn.com/s3/m/01a10d2a3169a4517723a3fa.png)
proe二次开发教程——手把手教你如何二次开发经历了千辛万苦才把图片截取完整,现在就把它贴出来吧……本实例是针对proe4.0在VS2005环境下的开发,对于vs2003以上版本的开发本例均适用,本例从开始的打开vs2005软件开始讲解,一步不漏,并加入适当的解释和必要的说明,相信照着做完之后应该没有不成功的了!注:软件安装注意事项:proe的安装目录不能有空格,比如:“D:\Program Files\proeWildfire4.0”是不对的,运行的时候会出错,要把路径中的空格去掉,如“D:\proeWildfire4.0”一、配置相关信息:打开VS2005,选择工具——》选项,在“项目和解决方案”中选择“VC++目录”,在“显示一下内容的目录”中选择“包含文件”,加入以下文件:D:\proeWildfire4.0\protoolkit\includesD:\proeWildfire4.0\protoolkit\protk_appls\includesD:\proeWildfire4.0\prodevelop\includes在“显示一下内容的目录”中选择“库文件”,加入以下文件:D:\proeWildfire4.0\protoolkit\i486_nt\objD:\proeWildfire4.0\prodevelop\i486_nt\obj注:这是开始前的环境配置,一次配置之后永久生效,以后再新建项目就不需要再配置了二、新建项目,进行项目设置:文件——》新建——》项目:选择MFC DLL 模板,输入项目名称:确定后点完成,项目生成后选择项目——》属性,进行属性设置:在test(本例的项目名称)属性页中选择配置属性——》连接器——》输入,在附加依赖项里加入:wsock32.libmpr.libpsapi.libprotk_dllmd.lib注:对于不同的环境附加依赖项是不同的,以上是VS2005版本的开发软件附加依赖项,如果是VC++6.0则是“protk_dll.lib protoolkit.lib mpr.lib wsock32.lib ”,同时还要加入忽略库“msvcrt.lib”,还要选择“强制输出”,否则程序会因为一些警告终止编译。
PROE二次开发
![PROE二次开发](https://img.taocdn.com/s3/m/7983bf685acfa1c7aa00cce0.png)
//在 Help 菜单的左边添加 Test 菜单 status = ProMenubarMenuAdd("TestMenu", "Test", "Help", PRO_B_FALSE, menumsgf ile); status = ProCmdActionAdd("MyTest", (uiCmdCmdActFn)MyTest, uiCmdPrioDefault, PRO_B_TRUE, &cmd_id); status = ProMenubarmenuPushbuttonAdd("TestMenu", "MainBtn1", "Hello", "Hello Hel p", NULL, PRO_B_TRUE, cmd_id, menumsgfile); return(0); } static uiCmdAccessState UserAccessTestMenu (uiCmdAccessMode access_mode) { return (ACCESS_AVAILABLE); } int MyTest() { AfxMessageBox("祝贺你!"); return 0; } extern "C" void user_terminate() { } 6、添加菜单资源文件 在 Hello 文件下创建 text 子文件夹,用来存放资源文件; 在 text 下添加 usascii 子文件夹,同时创建 usermsg.txt 文件,内容如下: Test &Test # # Hello &Hello #
采用 VC++6.0 的 MFC 类库对用户界面进行二次开发,同时也利用 VC++开发相关的数据库,开发的实 质是在 Pro/ E 系统中调用 MFC 应用程序。在开发中使用 MFC Application(exe) 方式实现 Pro/E 系统、Pro/ Toolkit 应用程序、MFC 应用程序三者之间的通信,通信是通过直接调用函数实现的。Pro/ Toolkit 与 MFC 连接在系统中为每个 Pro/ Toolkit 应用程序都开发了对话框界面,在应用程序加载到 Pro/ E 系统后,点 击定制菜单项即可调用对应的应用程序及其界面。图 1 说明了 Pro/E 系统与 MFC 应用程序的连接方式。
ProE5.0+VS2008开发环境配置
![ProE5.0+VS2008开发环境配置](https://img.taocdn.com/s3/m/8e06ab340b4c2e3f5727631e.png)
ProE 5.0+ VS2008二次开发环境配置一新建一个VS dll库与Proe的连接1 建立静态链接库选择File-New-Project新建工程,打开图1所示对话框,name输入文件名自定义(Dtest),Location自定义(E:\VS2008),点击OK确定:图1图2图3(在向导的第二步中选择使用静态链接MFC库方式)2进行工程属性配置新建dll工程后,在新建的工程文件菜单栏中选择Project菜单—--选择属性properties命令,然后进行如下操作:图4(属性配置,注意在Release下进行编译)Release配置1图5 (Release配置2)图6(选择Release后,进行基本配置,采用多字节字符集)图7 (添加处理器预定义PRO_USE_V AR_ARGS,_AFXDLL)图8 (设置运行时库为/MD)图9 (设置语言选项)图10 (添加库依赖wsock32.lib,mpr.lib,psapi.lib,protk_dllmd.lib)3进行工具选项配置(此项配置可以只进行一次,以后创建新的proe二次开发工程时此项操作可以不做修改)单击Tools菜单下—选择options命令进行添加include文件和lib文件搜索路径配置,图11(Include路径:..\ protoolkit\includes;.. \protoolkit\protk_appls\includes;.. \prodevelop\includes;.. \prodevelop\prodev_appls\includes;)图12(Lib路径:..\protoolkit\i486_nt\obj;..\prodevelop\i486_nt\obj;)4函数实现添加头文件:#include "ProMenubar.h"#include "ProMenu.h"#include "ProUtil.h"#include <ProToolkit.h>#define MSGFILE "message.txt"#pragma comment(lib, "netapi32")static uiCmdAccessState UserAccessTestMenu (uiCmdAccessMode);extern "C" int user_initialize()// 入口函数{AfxEnableControlContainer();ProError status;ProName menumsgfile;uiCmdCmdId cmd_id;//在Help菜单的右边添加“二次开发菜单”ProStringToWstring(menumsgfile,"usermsg1.txt");status=ProMenubarMenuAdd("Menu0","USERMenu0","Help",PRO_B_TRUE,menumsgfile );return(0);}static uiCmdAccessState UserAccessTestMenu(uiCmdAccessMode access_mode){return (ACCESS_A V AILABLE);}extern "C" void user_terminate() // 出口函数{AFX_MANAGE_STATE(AfxGetStaticModuleState());}5 进行应用注册设置,选择盘符创建文件(在此选择E:\VS2008\Dtest下创建Protk.dat 文件)图13(protk文件内容设置)(name Dteststartup dllallow_stop TRUEdelay_start FALSEexec_file E:\VS2008\Dtest\Release\Dtest.dlltext_dir E:\VS2008\Dtest\textrevision 1000end )6 进行菜单文字显示设置,选择当前目录下创建text文件夹,如图14,15所示:图147 打开proe---Tools菜单----Auxiliary application命令,按图进行操作,观察结果图16 操作过程二将已经建好的project拷贝到另一台电脑使用只需要修改其菜单Tools下的option属性,因为其本身的properties属性应经定义好。
VS2008建的解决方案在VS2005打开
![VS2008建的解决方案在VS2005打开](https://img.taocdn.com/s3/m/91ad7a03a6c30c2259019eb0.png)
如何将vs2008做的项目转换成vs2005的呢,在网上搜到一篇文章,我按照步骤修改后还是不行,自己又仔细看了下,主要将以下几个部分修改就可以了.如下:一. 修改解决方案文件:解决方案.slnMicrosoft Visual Studio Solution File, Format Version 10.00[w1]# Visual Studio 2008[w2]二. 修改项目文件:项目.csproj1、<Project ToolsVersion="3.5"[w3] DefaultTargets="Build"xmlns="/develope r/msbuild/2003">2、<Import Project="$(MSBuildTools[w4] Path)Microsoft.CSharp.targets" />3、<ProductVersion>9.0.21022<w6></ProductVersi on>4、<ImportProject="$(MSBuildExtensionsPath)\Microsoft\V isualStudio\v9.0[w7]\WebApplications\Microsoft. WebApplication.targets" />通过以上步骤就可以用Vs2005打开vs2008下的项目,不过vs2008下使用的类库跟vs2005的类库是有区别的:1、using System.Linq;[w5]2、移除包含!号的引用然后是替换标识位置的字符:[w1]10.00-->9.00[w2]2008-->2005[w3]ToolsVersion="3.5"删除[w4]Tools-->Bin[w5]删除此句[w6]9.0.21022-->8.0.50727[w7]9.0-->8.0替换后即可用vs2005打开项目啦。
以下为vs2008的相关操作和代码
![以下为vs2008的相关操作和代码](https://img.taocdn.com/s3/m/07615a20dd36a32d737581e5.png)
以下为vs2008的相关操作和代码:一、简单的逃跑按钮//注意下列方法,定义一个类为了捕获鼠标移动点的方便1,创建一个基于对话框的mfc应用程序选中对话框→属性→Front可以改变整个对话框字体2,创建CButton的派生类,与按钮相关联添加类(图1)3,给对话框添加2个相同按钮“你能抓住我吗?”让两个按钮轮流显示。
其中一个visible 设为false,使初始状态只显示一个按钮。
每个按钮都关联一个变量:添加控件变量(图2)mfc8_1Dlg.h头文件自动添加 #include"mybutton.h"CmyButton类添加消息WM_MOUSEMOVE4,给CmyButton类添加变量5,在OnInitDialog添加以下语句,交换2个button的地址m_btn1.m_pBtn = &m_btn2;m_btn2.m_pBtn = &m_btn1;6,CmyButton::OnMouseMove中添加交换显示的语句ShowWindow(SW_HIDE);//SW_HIDE:隐藏窗口并激活其他窗口。
m_pBtn->ShowWindow(SW_SHOW);//SW_SHOW:在窗口原来的位置以原来的尺寸激活和显示窗口。
大功告成!当然可以SetWindowPos函数实现更客观二、属性表的编辑新建mfc应用程序mfc8_21.创建属性页右键属性ID: IDD_PROP1Caption:属性页1属性页1放置groupboxRadio button 单选框List box列表框属性页3添加组合框ComboBox要向下拉的长一些,使列表能向下展开Style:Dropdown 能向下展开、输入Simple列表和编辑框同时显示Droplist 只能展开选择,不能输入本程序设为Droplist2. 双击属性页1添加类类CPropertyPage的对象表示一张属性表的各页,或者说是被看作是标签对话框。
原创_CreoPro5_VS2010转2008开发设置、调试
![原创_CreoPro5_VS2010转2008开发设置、调试](https://img.taocdn.com/s3/m/bbf07d8fd4d8d15abf234e04.png)
CreoPro5_VS2010转2008开发设置与调试复制SDK头文件将C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\VerRsrc.h复制到C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\转调VS2008【项目】|【xx属性】—属性页对话框|【配置属性】|【常规】—【平台工具集】:V90包含文件和库文件【项目】|【xx属性】—属性页对话框|【配置属性】|下【VC++目录】中【包含目录】:<CreoPro5>\protoolkit\includes(早期加<CreoPro5>\prodevelop\includes)(PTK程序实例中函数加<CreoPro5>\protoolkit\protk_appls\includes)C:\Program Files\Common Files\PTC\Creo 1.0\B000\protoolkit\includes【库目录】:<CreoPro5>\protoolkit\i486_nt\obj(早期<CreoPro5>\prodevelop\i486_nt\obj)C:\Program Files\Common Files\PTC\Creo 1.0\B000\protoolkit\i486_nt\obj注意:以上两项务必保持默认的“从父级或项目默认设置继承”【C/C++】|下【预处理器】中【预定处理定义】:若使用ProMessageDisplay()加PRO_USE_VAR_ARGS (或者也可在主cpp文件中加预定义语句#define PRO_USE_VAR_ARGS 1)【链接器】|下【输入】中【附加依赖项】和【忽略特定默认库】(忽略重定义错)设置:必须包含“ProToolkit.h”,且必须是首个PTK包含头文件,这对异步模式尤为重要。
Proe应用ProTOOLKIT二次开发
![Proe应用ProTOOLKIT二次开发](https://img.taocdn.com/s3/m/ec7f1aaf804d2b160a4ec04d.png)
手把手教你开发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 + VS2010、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。
com/s/1ntt7PH3最好安装下VS2008 SP1补丁,否则编译Debug版本时常会报错.VS2008 SP1中文版下载地址:http://www。
microsoft。
com/zh—CN/download/details。
aspx?id=13276如果你需要开发64位的Pro/TOOLKIT程序,请确保安装X64 Compilers andTools,如下图所示:3二、新建工程点击【文件】—〉【新建】—〉【项目】菜单命令,创建MFC DLL工程. 输入工程名称:test_wf5。
单击【确定】,然后在弹出的对话框中单击【下一步〉】DLL类型:使用共享 MFC DLL单击【完成】完成创建工程。
4三、配置工程属性1。
新增64位编译平台注意:如果只编译32位程序,请跳过此步骤。
proe.环境下vs二次开发(附代码)
![proe.环境下vs二次开发(附代码)](https://img.taocdn.com/s3/m/e46af05a5ef7ba0d4b733bab.png)
PRO/E 5.0环境下使用vs2008进行二次开发1、环境设置(只需第一次设置)1)进入工具/选项对话框,包含文件:○1./prodevelop/include; ○2./protoolkit/include2)库文件:○1./protoolkit/i486_nt/obj; ○2./prodevelop/i486_nt/obj2、新建MFC DLL工程(采用默认动态链接烈类型)3、设置项目属性1)进入项目/属性对话框(ALT+F7),选择配置管理器,将Active版本类型改为Release。
2)选择配置属性/链接器/输入,在附加依赖项一栏输入:wsock32.lib mpr.lib protk_dll.lib prodev_dll.lib psapi.lib netapi32.lib3)在忽略特定库一项输入mvcrt.lib1)添加头文件#include"ProMenu.h"#include"ProUtil.h"#include"ProMenubar.h"2)添加初始化函数extern"C"int user_initialize() {ProError status;// 用户接口程序return status;}extern"C"void user_terminate() {// 结束代码}// 定义菜单的可访问性设置函数static uiCmdAccessState UserAccessDefault(uiCmdAccessMode access_mode) {return(ACCESS_AVAILABLE);}int MsgBox() // 定义菜单按钮相应函数{AfxMessageBox(_T("My first Pro/E redeveloping"));return 0;}extern"C"int user_initialize(){ProError status;uiCmdCmdId cmd_idl;ProFileName mfName;ProStringToWstring(mfName, "Msg.txt");// 添加菜单status = ProMenubarMenuAdd("CHECK", "CHECK", "Utilities",PRO_B_TRUE, mfName);// 添加菜单动作status = ProCmdActionAdd("ShowTest1", (uiCmdCmdActFn)MsgBox,uiCmdPrioDefault,UserAccessDefault,PRO_B_TRUE, PRO_B_TRUE, &cmd_idl);// 添加菜单按钮status = ProMenubarmenuPushbuttonAdd("CHECK", "MSGBOX", "PathMsg",NULL, NULL,PRO_B_TRUE, cmd_idl, mfName);return status;}4)关键函数wchar_t* ProStringToWstring ( wchar_t*wstr, char*str );// 把char*类型转换为wchar_t*ProError ProMenubarMenuAdd (ProMenuItemName menu_name,ProMenuItemLabel untranslated_menu_label,ProMenuItemName neighbor,ProBoolean add_after_neighbor,ProFileName filename )ProError ProCmdActionAdd (char *action_name,uiCmdCmdActFn action_cb,uiCmdPriority priority,uiCmdAccessFn access_func,// 是否在非激活窗口显示ProBoolean allow_in_non_active_window,//是否在附属窗口显示ProBoolean allow_in_accessory_window,uiCmdCmdId *action_id );ProError ProMenubarmenuPushbuttonAdd (ProMenuItemName parent_menu,ProMenuItemName push_button_name,ProMenuItemLabel push_button_label,ProMenuLineHelp one_line_help,ProMenuItemName neighbor,ProBoolean add_after_neighbor,uiCmdCmdId action_id,ProFileName filename );static uiCmdAccessState UserAccessDefault(uiCmdAccessMode access_mode) {return(ACCESS_AVAILABLE);// ACCESS_REMOVE 移除菜单项// ACCESS_INVISIBLE 不可见// ACCESS_UNAVALIABLE 可见,变灰不可选// ACCESS_DISALLOW 不可选// ACCESS_AVAILABLE 可选}5)编写信息文件格式第1行:关键字(必须与使用该信息文件函数的相关字符串相同)第2行:菜单显示英文文本第3行:中文文本第4行:为空(用#表示,必须在英文输入法下输入)6)编写注册文件格式:NAME 应用程序标识名EXEC_FILE 可执行程序名(包括路径)TEXT_DIR Text目录路径STARTUP 启动应用模式ALLOW_UP 是否允许在PROE工作时终止应用程序DELAY_START 是否延迟调用应用程序REVISION Pro/TOOLKIT版本号END 结束标志(每次修改后请重启PROE)。
PROE二次开发
![PROE二次开发](https://img.taocdn.com/s3/m/4887b207443610661ed9ad51f01dc281e53a569f.png)
PROE二次开发做PROE毕业设计,初始设置完VS2005中C++的各种设置,用protoolkit对PROE二次开发,但是这段程序在做完编译的时候出现了三个错误两个是未声明的标识符跟一个重新定义清帮我看看到底是哪里错了#include "ProMenu.h"#include "ProUtil.h"#include "ProMenubar.h"extern “C” int user_initalize(){ProError atatus;//用户接口程序return status;}extern “C” void user_terminate(){//结束代码}extern "C" int user_initialize(){ProError status;ProFileName message_file;uiCmdCmdId cmd_idl;ProFileName Msgfile;ProStringT oWstring(MsgFile,"Message 2.txt");status = ProMenubarMenuAdd("CHECK","CHECK","Utilities", PRO_B_TRUE,MsgFile);status = ProCmdActionAdd("ShowTest1",(uiCmdCmdActFn)messagebox,uiCmdPrioDefault,AccessDefault,PRO_B_TRUE,&cmd_idl);status = ProMenubarmenuPushbuttonAdd("CHECK","messagebox","mes sagebox","Active messagebox menu",NULL,PRO_B_TRUE,cmd_idl,ProStringT oWstring(message_file,"Message2.txt"));return status;}int messagebox()//消息框{AfxMessageBox(_T("第一个程序!"));//弹出一个消息框return(0);}由正常的齿轮三视图生成的代码,怎么能够改成全剖视图的呢下面是视图矩阵的一些代码static ProMatrix identity_matrix = { {1.0, 0.0, 0.0, 0.0},////单元矩阵{0.0, 1.0, 0.0, 0.0},{0.0, 0.0, 1.0, 0.0},{0.0, 0.0, 0.0, 1.0}};void ProUtilMatrixCopy(double input[4][4],double output[4][4]){int i,j;if(input == NULL){for(i=0;i<4;i++)for(j=0;j<4;j++)output[i][j] = identity_matrix[i][j];}else{for(i=0;i<4;i++)for(j=0;j<4;j++)output[i][j] = input[i][j];}}/*--------------------------------------------------------------------*\创建一般视图\*--------------------------------------------------------------------*/ProUtilMatrixCopy(NULL, matrix);pos[0] = 200.0;pos[1] = 600.0;pos[2] = 0.0;ProDrawingGeneralviewCreate(drawing, solid, sheet, PRO_B_FALSE,pos, 1, matrix, &view);应部分坛友短信我的要求,现将下列两个函数的代码附上:ParamGetAndShow() //功能:获取模型参数,显示并初始化对话框控件值ParamUpdate() //功能:修改对话框控件值,更新模型参数/*===================================== =============================*\函数:ParamGetAndShow()功能:从零部件模型中获得参数值,并在相应的输入框中显示\*===================================== =============================*/void ParamGetAndShow(char *dialog,char *component,char *Name){ProMdl mdl;ProModelitem modelitem;ProMdlCurrentGet(&mdl);ProMdlToModelitem(mdl,&modelitem);int iparam;double dparam;ProName pname;ProParameter param;ProParamvalue value;ProStringT oWstring(pname,Name);//根据指定的参数名获得参数对象指针ProParameterInit(&modelitem,pname,¶m);//获得参数值ProParameterValueGet(¶m,&value);//根据参数值的类型,显示在相应类型的输入框中if(value.type==PRO_PARAM_DOUBLE){dparam=value.value.d_val;ProUIInputpanelDoubleSet(dialog,component,dparam);}if(value.type==PRO_PARAM_INTEGER){iparam=value.value.i_val;ProUIInputpanelIntegerSet(dialog,component,iparam);}ProParameterValueSet(¶m,&value);}/*===================================== =============================*\函数:ParamUpdate()功能:更新参数值\*===================================== =============================*/void ParamUpdate(char *dialog,char *component,char *Name){ProMdl mdl;ProModelitem modelitem;ProParameter param;ProParamvalue value;ProName pname;ProStringT oWstring(pname,Name);int iparam;double dparam;ProMdlCurrentGet(&mdl);ProMdlToModelitem(mdl,&modelitem);ProParameterInit (&modelitem,pname,¶m); ProParameterValueGet(¶m,&value);if(value.type==PRO_PARAM_DOUBLE){ProUIInputpanelDoubleGet(dialog,component,&dparam); value.value.d_val=dparam;}if(value.type==PRO_PARAM_INTEGER){ProUIInputpanelIntegerGet(dialog,component,&iparam); value.value.i_val=iparam;}ProParameterValueSet(¶m,&value);}int ProUtilStringGet(wchar_t *p_wstr, wchar_t *p_default, int max_len){wchar_t str[PRO_PATH_SIZE];if(ProMessageStringRead(max_len, str)!=0){if (p_default == NULL)return (0);ProUtilWstrcpy(p_wstr, p_default);return (1);}ProUtilWstrcpy(p_wstr, str);return (1);}尺寸表示似乎只能从实体遍历中得到。
VS2008对PROE5.0二次开发设置详解
![VS2008对PROE5.0二次开发设置详解](https://img.taocdn.com/s3/m/bbf2dc1310a6f524ccbf8521.png)
用Microsoft Visual 2008对PRO/E4.0二次开发步骤1.因为PRO/E4.0装在E盘,在二次开发时在E盘新建一个文件夹mytest3 (可以是其他名字的文件夹,注意mytest3必须与PRO/E4.0在同一盘里),在mytest3中在新建一个文件夹text(必须是text)。
2.如图(1),新建一个Hello.dll的文件图(1)3.如图(2),选中使用共享MFC DLL的规则DLL(D)4.单击项目---属性,进行图(3)---图(10)的操作。
图(3) 属性配置,注意是在Release下进行编译的,Release配置1图(4) Release配置2图(5) 在字符集中选择使用多字节字符集图(6) 对预处理器中的预处理器定义进行设置图(7) 代码生成,设置运行时库为多线程DLL(/MD)图(8) 语言的设置图(9) 添加附加依赖项wsock32.libmpr.libpsapi.libprotk_dllmd.libprodev_dllmd.libnetapi32.lib图(10) 添加忽略特定库msvcrtd.lib图(11) 单击主菜单上的工具----选项图(12) 添加包含文件,四个includes图(13) 添加库文件,两个obj图(14) 双击Hello.cpp图(15) 添加头文件#include "ProMenubar.h"#include "ProMenu.h"#include "ProUtil.h"#include <ProToolkit.h>#pragma comment(lib,"netapi32")图(16) 在Hello.cpp的最后添加程序static uiCmdAccessState AccessDefault(uiCmdAccessMode access_mode) {return(ACCESS_AVAILABLE);}void Test1(){AfxMessageBox(_T("轴"));}void Test2(){AfxMessageBox(_T("齿轮"));}extern "C" int user_initialize(){ProError status;ProFileName MsgFile;ProStringToWstring(MsgFile,"IconMessage.txt");//注意此处的IconMessage与后面的text文件夹下的IconMessage.txt文件名必须相同uiCmdCmdId PushButton1_cmd_id,PushButton2_cmd_id;status=ProMenubarMenuAdd("MainMenu","Function","Help",PRO_B_TRUE,MsgFile); ProCmdActionAdd("PushButton1_Act",(uiCmdCmdActFn)Test1,12,AccessDefault,PRO_B_TRUE,P RO_B_TRUE,&PushButton1_cmd_id);ProMenubarmenuPushbuttonAdd("MainMenu","PushButton","FirstButton","this button will show a message",NULL,PRO_B_TRUE,PushButton1_cmd_id,MsgFile);ProCmdActionAdd("PushButton2_Act",(uiCmdCmdActFn)Test2,uiCmdPrioDefault,AccessDefault,P RO_B_TRUE,PRO_B_TRUE,&PushButton2_cmd_id);ProMenubarmenuPushbuttonAdd("MainMenu","PushButton2","SecondButton","this button will show a message",NULL,PRO_B_TRUE,PushButton2_cmd_id,MsgFile);return status;}extern "C" void user_terminate(){AFX_MANAGE_STATE(AfxGetStaticModuleState());}图(17) 选择生成Hello(U)图(18) Hello(U)生成成功后在E:\mytest3\Hello\Release中可以看见Hello.dll文件,将Hello.dll 文件复制到E:\mytest3中。
Proe Wildfire 5.0 J-link二次开发—入门篇
![Proe Wildfire 5.0 J-link二次开发—入门篇](https://img.taocdn.com/s3/m/a213a2ed998fcc22bcd10d3d.png)
Proe Wildfire 5.0 J-link二次开发——入门篇为什么选择J-link?选择J-link二次开发的理由:J-link拥有开源社区的强大优势,JAVA语言开源,社区很活跃,可以说除了PROE以外的所有开发工具都可以免费获得,并且这些开发工具的性能绝不逊色于microsoft;J-link二次开发的程序运行编译过程都较C++二次开发简单。
J-link二次开发所需的准备工作:1.熟悉JAVA语言;JAVA仍为IT界使用最为广泛的开发工具之一,其学习难度并不比C++语言高,网络上有大量免费视频可供学习。
2.初次安装PROE时请选中J2RE(java 2 runtime enviroment)与J-link选项随PROE主程序一起安装,一般默认安装未选中此模块,所以请务必注意;自安装的JRE目录是D:\PTC\pr oeWildfire 5.0\i486_nt\obj\JRE;若已经安装了PROE但是没有安装J2RE(java 2 runtime e nviroment),也可以下载jdk6来安装(jdk7未试过)。
3.安装JAVA的集成开发环境IDE,可以下载Eclipse,选Java开发版即可,不要jee的(用于Web开发)。
4.配置开发环境:配置JVM,设置环境变量(如果网友安装目录与此不同请自行注意更改)5.学习J-link请参考PROE目录下*\jlink\jlinkug.pdf文档,也可以用浏览器打开*\jlin k\jlinkdoc\index.html,里面包含开发文档和api。
自此,J-link开发环境就配置完成!下面以Proe自带的入门的例子来测试一下J-link开发环境是否配置正确。
1. 打开eclipse(网上关于eclipse使用资料非常多,可自行查询),依次File->new->j ava project,建立new javaproject,工程名如:InstallTest,其他选项默认即可,点击fin ish;2. 在InstallTest工程中添加外部JAR包,将*\text\java\pfc.jar引入到project中;3.在InstallTest工程中,新建2个空的java class,name分别是StartInstallTest和pf cInstallTest,然后用win写字板或者EditPlus等工具分别打开*\jlink\jlink_appls\instal l_test下的StartInstallTest.java与pfcInstallTest.java两个文件中的内容复制到刚才创建的相应的class中,并覆盖原有内容;4. 点击run->run运行并编译,因为需和proe配合才能显示工作效果,所以其实就是确认完成编译罢了;5. 在本机上新建test文件夹,在第2步所创建的InstallTest工程目录下找到bin文件夹,复制其中所有的.class文件至test文件夹中。
proe5.0二次开发
![proe5.0二次开发](https://img.taocdn.com/s3/m/b8210e1d650e52ea55189860.png)
Pro/ENGINEER Wildfire5.二次开发程序
安装 Pro/ENGINEER 时,一定要选取“API 工具包”安装 Pro/TOOLKIT
以上软件安装完成之后我们使用安装自带的测试代码
安装测试代码文件:make_install(D:\ptc\proeWildfire5\protoolkit\i486_nt\obj,根据个人安装Pro/E的路径为准)
打开修改Pro/TOOLKIT的安装位置(缺省为空白)
启动"Visual Studio 2008 命令提示",编译代码
切换目录(cd c:\ptc\proeWildfire5\protoolkit\i486_nt\obj)
编译语句:nmake /f make_install dll
编译完成
产生dll文件
修改Pro/E注册文件protk.dat
文件位置:c:\ptc\proeWildfire5\protoolkit
修改protoolkit安装目录(正确指向dll文件和text目录)
Pro/E注册应用二次开发程序
菜单:工具——辅助应用程序
注册
选择protk.dat文件
选中应用程序名称,单击启动
消息信息提示:启动成功
关闭“辅助应用程序”窗口
运行安装测试程序
菜单:文件——安装测试
弹出对话框,显示安装测试成功。
Proe5.0二次开发
![Proe5.0二次开发](https://img.taocdn.com/s3/m/be9e451d964bcf84b9d57bdc.png)
单击“下一步”
选择“带静态链接带 MFC 的规则 DLL”,后点击“完成”
3、进行工程属性配置 (1)“项目” “选项” “配置属性” “常规”,点击 右上角的“配置管理器”,如图:
(2)“字符集”选用“使用多字节字符集”,如下图所示:
“预处理器定义”
代码生成:
语言:
连接器 输入 附加依赖项:
点击“辅助应用程序”之后显示:
选中之前写好的“protk.dat”文件,点击注册,后运行…
That’s all…
五、函数实现:
• • • • • • • •
添加头文件: #include "ProMenubar.h" #include "ProMenu.h" #include "ProUtil.h" #include <ProToolkit.h> #define MSGFILE "message.txt" #pragma comment(lib, "netapi32") static uiCmdAccessState UserAccessTestMenu (uiCmdAccessMode);
包含文件的添加:
(2)库文件的添加:步骤同包含文件的添加… E:\……proeWildfire5.0\prodevelope\i486_nt\obj E:\……proeWildfire5.0\protoolkit\i486_nt\obj
2、建立MFC DLL的一些小问题: 打开Vs2008后“文件” “新建” “项目”,选择MFC DLL,如图所示:点击“确定”
• extern "C" int user_initialize()// 入口函数 • { • AfxEnableControlContainer(); • ProError status; • ProName menumsgfile; • uiCmdCmdId cmd_id; • //在Help菜单的右边添加“二次开发菜单” • ProStringToWstring(menumsgfile,"usermsg1.txt"); • status=ProMenubarMenuAdd("Menu0","USERMenu0 ","Help",PRO_B_TRUE,menumsgfile); • return(0); • } • static uiCmdAccessState UserAccessTestMenu(uiCmdAccessMode access_mode) • { • return (ACCESS_AVAILABLE);
VS2008软件开发说明文档
![VS2008软件开发说明文档](https://img.taocdn.com/s3/m/95139ceafab069dc50220188.png)
目录目录 (1)1.WinCE6.0特征介绍 (2)1.1 WinCE6.0与5.0的区别 (2)1.2 WinCE R3新特征 (3)2.软件编程说明 (4)3. VS2008软件开发 (6)3.1安装VS2008 (6)3.2 创建Hello World 实例 (VB 篇) (6)3.2.1 新建工程 (6)3.2.2 建立连接 (8)3.2.3 编译与下载 (11)3.2.4如何将可执行文件放到一体机设备中且可掉电保存 (13)3.3 创建Hello World 实例(VC++篇) (14)3. 3.1新建工程...........................................................................................................................14 3.3.2建立连接. (20)3.3.3编译与下载 (21)3.3.4如何将可执行文件放到一体机设备中且可掉电保存....................................................24 3.4 创建Hello World 实例 (C#篇).. (24)3.4.1 新建工程...........................................................................................................................24 3.4.2 建立连接...........................................................................................................................27 3.4.3 编译与下载.......................................................................................................................29 3.4.4如何将可执行文件放到一体机设备中且可掉电保存. (32)w w w .b l u e m c u .c o m1.WinCE6.0特征介绍1.1 WinCE6.0与5.0的区别Windows CE 6.0重新设计了Kernel,支持的进程数从32个扩展到32000 每个进程的地址空间从32MB扩展到2GB 很多系统模块(如文件系统和设备管理器)将运行在kernel模式,OAL也从kernel独立出来,driver可以运行在kernel模式和user模式 Visual Studio 2005专业版将包括一个被称为Platform Builder的功能强大的插件,它是一个专门为嵌入式平台提供的“集成开发环境”。
ProE5protoolkit二次开发环境设置
![ProE5protoolkit二次开发环境设置](https://img.taocdn.com/s3/m/d6f29dbc294ac850ad02de80d4d8d15abe230003.png)
ProE5protoolkit二次开发环境设置ProE 5.0+VS2008Protoolkit二次开发环境配置From tkuser.pdf: All Creo Elements/Pro TOOLKIT applications on 32-bit and 64-bitWindows platforms must be built using the Microsoft Visual 2008 compiler. A new library ws2_32.lib has been added.The CC flags no longer need the -D_USE_32BIT_TIME_T flag on32-bit Windows platforms. These changes have been incorporatedin the sample makefiles.1、包含文件和库文件的设置(1)包含文件的添加点击“工具”→“选项”→“项目和解决方案”→“VC++目录”,选择“包含文件”依次添加:D:\PTC\Creo Elements\Pro5.0\protoolkit\includesD:\PTC\CreoElements\Pro5.0\prodevelop\prodev_appls\includesD:\PTC\Creo Elements\Pro5.0\prodevelop\includesD:\PTC\CreoElements\Pro5.0\protoolkit\protk_appls\includes(2)库文件的添加:步骤同包含文件的添加…D:\PTC\Creo Elements\Pro5.0\prodevelop\i486_nt\objD:\PTC\Creo Elements\Pro5.0\protoolkit\i486_nt\obj2、创建MFC DLL项目如图:3、进行工程属性配置(1)“项目”→“属性”→“配置属性”→“常规”,点击右上角的“配置管理器”,使用release。
VS2008中OpenGL环境配置(附代码,测试通过)
![VS2008中OpenGL环境配置(附代码,测试通过)](https://img.taocdn.com/s3/m/e05d266b58fafab069dc024d.png)
VS2008中OpenGL环境配置参照网上方法:将.h文件拷贝到C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\gl将.lib文件拷贝到C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib将.dll文件拷贝到C:\Windows\System32目录中以下方法也是网上的找的,没试过。
下面代码测试通过。
-------------------------------------------------1.安装下载OpenGL类库/source/274113(这个是 1.4版本的),也可以到OpenGL官网下载其他版本。
将.h文件拷贝到C:\Program Files\Microsoft Visual Studio 9.0\VC\include\GL目录中(没有GL 目录就自己创建一个,这里的具体路径视电脑上VS2008安装的位置而定)将.lib文件拷贝到C:\Program Files\Microsoft Visual Studio 9.0\VC\lib目录中将.dll文件拷贝到C:\Windows\System32目录中2.配置环境先创建一个Win32控制台项目,配置项目属性:(1)项目——项目属性——配置属性——C/C++——预处理器——预处理器定义,添加GLUT_BUILDING_LIB(2)项目——项目属性——配置属性——链接器——输入——附加依赖项,添加glut32.lib Opengl32.lib Glu32.lib glaux.lib3.测试创建C++控制台应用程序输入如下代码:#include <windows.h> //这个必不可少#include <gl/glut.h>void display(){glClear(GL_COLOR_BUFFER_BIT);glColor3f(1.0,1.0,1.0);glBegin(GL_POLYGON);glVertex3f(0.25,0.25,0.0);glVertex3f(0.75,0.25,0.0);glVertex3f(0.75,0.75,0.0);glVertex3f(0.25,0.75,0.0);glEnd();glFlush();}void init(){glClearColor(0.0,0.0,0.0,0.0); //以黑色清屏glMatrixMode(GL_PROJECTION); //glMatrixMode - 指定哪一个矩阵是当前矩阵//GL_PROJECTION,对投影矩阵应用随后的矩阵操作glLoadIdentity(); //该函数的功能是重置当前指定的矩阵为单位矩阵glOrtho(0.0,1.0,0.0,1.0,-1.0,1.0);}int main(int argc,char** argv){glutInit(&argc,argv);glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);glutInitWindowSize(250,250);glutInitWindowPosition(100,100);glutCreateWindow("Hello OpenGL");init();glutDisplayFunc(display);glutMainLoop();return 0;}运行,结果是一个矩形。
ProE二次开发教程
![ProE二次开发教程](https://img.taocdn.com/s3/m/fe5a7324ccbff121dd3683f8.png)
ProE二次开发教程Pro/ENGINEER Wildfire4.0 &Microsoft Visual Studio 2005 实现二次开发首个测试作者:无维网TomLee今天终于有时间玩一玩,Microsoft Visual Studio 2005还不熟悉,还要继续摸索: 下面我把我的测试成功的例子做个教程,希望对需要配置新环境进行开发的朋友有所帮助!新建项目新建MFC DLL默认下一步默认完成新建开始创建程序代码代码部分的解释如下:extern "C" int user_initialize(int argc, /** Number of arguments **/char *argv[], /** Pro/E arguments **/ char *proe_vsn, /** Pro/E version **/ char *build, /** Pro/E build **/ wchar_t err_buff[]) /** Error buffer **/ {ProName msgFileName;ProStringToWstring(msgFileName,"message.txt");ProMessageDisplay(msgFileName, "USER Welcome you!");return 0;}extern "C" void user_terminate(){return;}这里我只使用了一个ProMessageDisplay函数来做信息显示功能的测试,本教程的主要目的在于配置编译环境,所以未设置任何功能,甚至菜单都没加:lol包含文件的设置(include)库文件(lib)项目设置,附加的库wsock32.libmpr.libpsapi.libprotk_dllmd.lib(此处接见湃睿技术社区byan的设置)项目设置,预处理器定义添加:PRO_USE_VAR_ARGS,这个是使用ProMessageDisplay函数的需要不管选择Win32 Release 还是Win32 Debug设置都相同,但是不知道什么原因,编译时很多警告,同时我编译成功的Debug 下面的dll不能用,只能用Release,原因不明,欢迎讨论编译警告信息如下:------ 已启动生成: 项目: ProMessageDisplay, 配置: Release Win32 ------正在编译...stdafx.cpp正在编译...ProMessageDisplay.cpp正在编译资源...正在链接...正在创建库c:\toolkit_test\ProMessageDisplay\Release\ProMessageDisplay.lib 和对象c:\toolkit_test\ProMessageDisplay\Release\ProMessageDisplay.exp正在生成代码已完成代码的生成protk_dllmd.lib(protk_comm.obj) : warning LNK4049: 已导入本地定义的符号_btk_vfprintfprotk_dllmd.lib(windows_32.obj) : warning LNK4049: 已导入本地定义的符号_btk_vfprintfprotk_dllmd.lib(protk_comm.obj) : warning LNK4049: 已导入本地定义的符号_btk_vprintfprotk_dllmd.lib(protk_comm.obj) : warning LNK4049: 已导入本地定义的符号_btk_vwprintfprotk_dllmd.lib(protk_comm.obj) : warning LNK4049: 已导入本地定义的符号_btk_vsprintfprotk_dllmd.lib(protk_comm.obj) : warning LNK4049: 已导入本地定义的符号_btk_vfwprintfprotk_dllmd.lib(protk_comm.obj) : warning LNK4049: 已导入本地定义的符号_btk_vswprintfprotk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btk_vswprintfprotk_dllmd.lib(protk_comm.obj) : warning LNK4049: 已导入本地定义的符号_btk_vsnprintfprotk_dllmd.lib(windows_32.obj) : warning LNK4049: 已导入本地定义的符号_btk_vsnprintfprotk_dllmd.lib(protk_comm.obj) : warning LNK4049: 已导入本地定义的符号_btk_vscanfprotk_dllmd.lib(protk_comm.obj) : warning LNK4049: 已导入本地定义的符号_btk_vwscanfprotk_dllmd.lib(protk_comm.obj) : warning LNK4049: 已导入本地定义的符号_btk_vfscanfprotk_dllmd.lib(protk_comm.obj) : warning LNK4049: 已导入本地定义的符号protk_dllmd.lib(protk_comm.obj) : warning LNK4049: 已导入本地定义的符号_btk_vsscanfprotk_dllmd.lib(protk_comm.obj) : warning LNK4049: 已导入本地定义的符号_btk_vswscanfprotk_dllmd.lib(protk_comm.obj) : warning LNK4049: 已导入本地定义的符号_btkStrUtf16ToWideprotk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btkStrUtf16ToWideprotk_dllmd.lib(protk_comm.obj) : warning LNK4049: 已导入本地定义的符号_btkStrUtf16ToEucprotk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btkStrUtf16ToEucprotk_dllmd.lib(protk_comm.obj) : warning LNK4049: 已导入本地定义的符号_btkStrUtf16ToNativeprotk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btkStrUtf16ToNativeprotk_dllmd.lib(protk_comm.obj) : warning LNK4049: 已导入本地定义的符号_btkStrUtf8ToWideprotk_dllmd.lib(protk_comm.obj) : warning LNK4049: 已导入本地定义的符号_btkStrUtf8ToEucprotk_dllmd.lib(protk_comm.obj) : warning LNK4049: 已导入本地定义的符号_btkStrUtf8ToNativeprotk_dllmd.lib(ctpfafs.obj) : warning LNK4049: 已导入本地定义的符号_btkStrUtf8ToNativeprotk_dllmd.lib(protk_comm.obj) : warning LNK4049: 已导入本地定义的符号_btkStrWideToUtf16protk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btkStrWideToUtf16protk_dllmd.lib(protk_comm.obj) : warning LNK4049: 已导入本地定义的符号_btkStrWideToUtf8protk_dllmd.lib(protk_comm.obj) : warning LNK4049: 已导入本地定义的符号_btkStrEucToUtf16protk_dllmd.lib(protk_comm.obj) : warning LNK4049: 已导入本地定义的符号_btkStrEucToUtf8protk_dllmd.lib(protk_comm.obj) : warning LNK4049: 已导入本地定义的符号_btkStrNativeToUtf16protk_dllmd.lib(protk_comm.obj) : warning LNK4049: 已导入本地定义的符号_btkStrNativeToUtf8protk_dllmd.lib(cu_dll_tools.obj) : warning LNK4049: 已导入本地定义的符号_btk_getenvprotk_dllmd.lib(cttime.obj) : warning LNK4049: 已导入本地定义的符号_btk_getenvprotk_dllmd.lib(ctmisc.obj) : warning LNK4049: 已导入本地定义的符号protk_dllmd.lib(windows_32.obj) : warning LNK4049: 已导入本地定义的符号_btk_getenvprotk_dllmd.lib(ctfileutil.obj) : warning LNK4049: 已导入本地定义的符号_btk_getenvprotk_dllmd.lib(cu_appid.obj) : warning LNK4049: 已导入本地定义的符号_btk_getenvprotk_dllmd.lib(ctmemmgr.obj) : warning LNK4049: 已导入本地定义的符号_btk_getenvprotk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btk_getenvprotk_dllmd.lib(ctsyscall.obj) : warning LNK4049: 已导入本地定义的符号_btk_getenvprotk_dllmd.lib(ctpfa.obj) : warning LNK4049: 已导入本地定义的符号_btk_getenv protk_dllmd.lib(cu_appid.obj) : warning LNK4049: 已导入本地定义的符号_btk_sprintfprotk_dllmd.lib(cttime.obj) : warning LNK4049: 已导入本地定义的符号_btk_sprintfprotk_dllmd.lib(ctmisc.obj) : warning LNK4049: 已导入本地定义的符号_btk_sprintfprotk_dllmd.lib(windows_32.obj) : warning LNK4049: 已导入本地定义的符号_btk_sprintfprotk_dllmd.lib(ctfileutil.obj) : warning LNK4049: 已导入本地定义的符号_btk_sprintfprotk_dllmd.lib(frgnalt3.obj) : warning LNK4049: 已导入本地定义的符号_btk_sprintfprotk_dllmd.lib(ctmemmgr.obj) : warning LNK4049: 已导入本地定义的符号_btk_sprintfprotk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btk_sprintfprotk_dllmd.lib(ctsyscall.obj) : warning LNK4049: 已导入本地定义的符号_btk_sprintfprotk_dllmd.lib(ctpfa.obj) : warning LNK4049: 已导入本地定义的符号_btk_sprintf protk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btk_u16tou8protk_dllmd.lib(ctpfafs.obj) : warning LNK4049: 已导入本地定义的符号_btkUnicodeIsEnabledprotk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btkUnicodeIsEnabledprotk_dllmd.lib(ctwcfun_mt.obj) : warning LNK4049: 已导入本地定义的符号_btkUnicodeIsEnabledprotk_dllmd.lib(ctpfa.obj) : warning LNK4049: 已导入本地定义的符号_btkUnicodeIsEnabledprotk_dllmd.lib(ctstrutil.obj) : warning LNK4049: 已导入本地定义的符号_btkUnicodeIsEnabledprotk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btk_u8tou16protk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btkStrUtf16ToUtf8protk_dllmd.lib(ctstrutil.obj) : warning LNK4049: 已导入本地定义的符号_btkStrUtf16ToUtf8protk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btkStrUtf8ToUtf16protk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btk_iswalphaprotk_dllmd.lib(ctwcfun_mt.obj) : warning LNK4049: 已导入本地定义的符号_btk_iswalphaprotk_dllmd.lib(ctstrutil.obj) : warning LNK4049: 已导入本地定义的符号_btk_iswalphaprotk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btk_iswasciiprotk_dllmd.lib(ctstrutil.obj) : warning LNK4049: 已导入本地定义的符号_btk_iswasciiprotk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btk_iswdigitprotk_dllmd.lib(ctstrutil.obj) : warning LNK4049: 已导入本地定义的符号_btk_iswdigitprotk_dllmd.lib(ctfileutil.obj) : warning LNK4049: 已导入本地定义的符号_btk_iswdigitprotk_dllmd.lib(ctstrutil_mt.obj) : warning LNK4049: 已导入本地定义的符号_btk_iswdigitprotk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btk_iswspaceprotk_dllmd.lib(ctmisc.obj) : warning LNK4049: 已导入本地定义的符号_btk_iswspaceprotk_dllmd.lib(ctstrutil.obj) : warning LNK4049: 已导入本地定义的符号_btk_iswspaceprotk_dllmd.lib(ctfileutil.obj) : warning LNK4049: 已导入本地定义的符号_btk_iswspaceprotk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btk_wctombprotk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btk_fgetcprotk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btk_mbtowcprotk_dllmd.lib(ctwcfun_mt.obj) : warning LNK4049: 已导入本地定义的符号_btk_mbtowcprotk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btk_fgetwsprotk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btk_get_stdinprotk_dllmd.lib(ctstrutil.obj) : warning LNK4049: 已导入本地定义的符号_btk_strcasecmpprotk_dllmd.lib(ctfileutil.obj) : warning LNK4049: 已导入本地定义的符号_btk_strcasecmpprotk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btk_strcasecmpprotk_dllmd.lib(ctsyscall.obj) : warning LNK4049: 已导入本地定义的符号_btk_strcasecmpprotk_dllmd.lib(ctpfa.obj) : warning LNK4049: 已导入本地定义的符号_btk_strcasecmpprotk_dllmd.lib(ctmisc.obj) : warning LNK4049: 已导入本地定义的符号_btk_strcasecmpprotk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btkStrUtf8ToUtf16Allocprotk_dllmd.lib(ctstrutil.obj) : warning LNK4049: 已导入本地定义的符号_btkStrUtf8ToUtf16Allocprotk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btk_fputsprotk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_pro_vsnprintf_low_legacyprotk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_pro_vsnprintf_lowprotk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btk_fgetsprotk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btk_scanf_stream_lowprotk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btk_putenvprotk_dllmd.lib(ctsyscall.obj) : warning LNK4049: 已导入本地定义的符号_btk_putenvprotk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btk_iswalnumprotk_dllmd.lib(ctmisc.obj) : warning LNK4049: 已导入本地定义的符号_btk_iswalnumprotk_dllmd.lib(ctwcfun.obj) : warning LNK4049: 已导入本地定义的符号_btk_iswrtolprotk_dllmd.lib(ctsyscall.obj) : warning LNK4049: 已导入本地定义的符号_btkGetMemprotk_dllmd.lib(ctsyscall.obj) : warning LNK4049: 已导入本地定义的符号_btk_spawnvpprotk_dllmd.lib(ctsyscall.obj) : warning LNK4049: 已导入本地定义的符号_btk_systemprotk_dllmd.lib(ctsyscall.obj) : warning LNK4049: 已导入本地定义的符号_btk_wcstombsprotk_dllmd.lib(ctsyscall.obj) : warning LNK4049: 已导入本地定义的符号_btk_mbstowcsprotk_dllmd.lib(ctsigutil_mt.obj) : warning LNK4049: 已导入本地定义的符号_btk_get_stderrprotk_dllmd.lib(ctsigutil.obj) : warning LNK4049: 已导入本地定义的符号_btk_get_stderrprotk_dllmd.lib(ctsyscall.obj) : warning LNK4049: 已导入本地定义的符号_btk_get_stderrprotk_dllmd.lib(ctmisc.obj) : warning LNK4049: 已导入本地定义的符号_btk_get_stderrprotk_dllmd.lib(windows_32.obj) : warning LNK4049: 已导入本地定义的符号_btk_get_stderrprotk_dllmd.lib(ctfileutil.obj) : warning LNK4049: 已导入本地定义的符号_btk_get_stderrprotk_dllmd.lib(ctsyscall.obj) : warning LNK4049: 已导入本地定义的符号_btk_removeprotk_dllmd.lib(ctsyscall.obj) : warning LNK4049: 已导入本地定义的符号_btk_openprotk_dllmd.lib(ctfileutil.obj) : warning LNK4049: 已导入本地定义的符号_btk_openprotk_dllmd.lib(ctdci.obj) : warning LNK4049: 已导入本地定义的符号_btk_open protk_dllmd.lib(ctpfa.obj) : warning LNK4049: 已导入本地定义的符号_btk_strncasecmpprotk_dllmd.lib(ctpfafs.obj) : warning LNK4049: 已导入本地定义的符号_btk_strncasecmpprotk_dllmd.lib(ctpfa.obj) : warning LNK4049: 已导入本地定义的符号_btk_getdcwdprotk_dllmd.lib(ctpfa.obj) : warning LNK4049: 已导入本地定义的符号_btkUConv_Disposeprotk_dllmd.lib(ctpfa.obj) : warning LNK4049: 已导入本地定义的符号_btkLangEucEncodingprotk_dllmd.lib(ctpfa.obj) : warning LNK4049: 已导入本地定义的符号_btkLangGetCurrentprotk_dllmd.lib(ctpfa.obj) : warning LNK4049: 已导入本地定义的符号_btkLangNativeEncodingprotk_dllmd.lib(ctpfa.obj) : warning LNK4049: 已导入本地定义的符号_btkUConv_Createprotk_dllmd.lib(ctpfa.obj) : warning LNK4049: 已导入本地定义的符号_btkUtfTypeFromBOMprotk_dllmd.lib(ctpfa.obj) : warning LNK4049: 已导入本地定义的符号_btkUtfTypeToBOM_btkUConv_ToPivotWithOffsetsprotk_dllmd.lib(ctpfa.obj) : warning LNK4049: 已导入本地定义的符号_btkUConv_CountPendingToPivotprotk_dllmd.lib(ctpfa.obj) : warning LNK4049: 已导入本地定义的符号_btkUConv_Resetprotk_dllmd.lib(ctpfa.obj) : warning LNK4049: 已导入本地定义的符号_btkUConv_FromPivotprotk_dllmd.lib(ctpfa.obj) : warning LNK4049: 已导入本地定义的符号_btkUConv_CountPendingFromPivotprotk_dllmd.lib(ctpfa.obj) : warning LNK4049: 已导入本地定义的符号_btkUConv_TranscodeExprotk_dllmd.lib(ctpfa.obj) : warning LNK4049: 已导入本地定义的符号_btkUConv_ToPivotprotk_dllmd.lib(ctpfa.obj) : warning LNK4049: 已导入本地定义的符号_btk_sscanf protk_dllmd.lib(ctfileutil.obj) : warning LNK4049: 已导入本地定义的符号_btk_sscanfprotk_dllmd.lib(cttime.obj) : warning LNK4049: 已导入本地定义的符号_btk_sscanfprotk_dllmd.lib(ctmisc.obj) : warning LNK4049: 已导入本地定义的符号_btk_execvprotk_dllmd.lib(windows_32.obj) : warning LNK4049: 已导入本地定义的符号_btk_get_stdoutprotk_dllmd.lib(windows_32.obj) : warning LNK4049: 已导入本地定义的符号_btk_fflushprotk_dllmd.lib(windows_32.obj) : warning LNK4049: 已导入本地定义的符号_btk_strlwrprotk_dllmd.lib(ctfileutil.obj) : warning LNK4049: 已导入本地定义的符号_btk_fullpathprotk_dllmd.lib(ctfileutil.obj) : warning LNK4049: 已导入本地定义的符号_btk_getcwdprotk_dllmd.lib(apfutil.obj) : warning LNK4049: 已导入本地定义的符号_btk_getcwdprotk_dllmd.lib(ctfileutil.obj) : warning LNK4049: 已导入本地定义的符号_btk_statprotk_dllmd.lib(apfutil.obj) : warning LNK4049: 已导入本地定义的符号_btk_stat protk_dllmd.lib(ctpfafs.obj) : warning LNK4049: 已导入本地定义的符号_btk_stat protk_dllmd.lib(ctfileutil.obj) : warning LNK4049: 已导入本地定义的符号_btk_accessprotk_dllmd.lib(frgnalt3.obj) : warning LNK4049: 已导入本地定义的符号_btkUnicodeDisableprotk_dllmd.lib(apfutil.obj) : warning LNK4049: 已导入本地定义的符号_btk_chdir protk_dllmd.lib(apfutil.obj) : warning LNK4049: 已导入本地定义的符号_btk_mkdirprotk_dllmd.lib(apfutil.obj) : warning LNK4049: 已导入本地定义的符号_btk_rmdirprotk_dllmd.lib(ctdci.obj) : warning LNK4049: 已导入本地定义的符号_btk_rmdir protk_dllmd.lib(apfutil.obj) : warning LNK4049: 已导入本地定义的符号_btk_unlinkprotk_dllmd.lib(ctdci.obj) : warning LNK4049: 已导入本地定义的符号_btk_unlink protk_dllmd.lib(apfutil.obj) : warning LNK4049: 已导入本地定义的符号_btk_utimeprotk_dllmd.lib(ctpfafs.obj) : warning LNK4049: 已导入本地定义的符号_btk_utimeprotk_dllmd.lib(ctpfafs.obj) : warning LNK4049: 已导入本地定义的符号_btk_tempnamprotk_dllmd.lib(ctdci.obj) : warning LNK4049: 已导入本地定义的符号_btk_fopen protk_dllmd.lib(ctdci.obj) : warning LNK4049: 已导入本地定义的符号_btk_rename正在嵌入清单...生成日志保存在“file://c:\toolkit_test\ProMessageDisplay\ProMessageDisplay\Release\BuildLog.htm”ProMessageDisplay - 0 个错误,159 个警告========== 生成: 1 已成功, 0 已失败, 0 最新, 0 已跳过==========创建测试目录创建测试快捷启动启动验证中文英文测试数据下载请到无维网!。
ProE二次开发设置文档
![ProE二次开发设置文档](https://img.taocdn.com/s3/m/f9d861d084254b35eefd34d2.png)
Pro/E二次开发程序设置与调试安装Pro/E首先确保你正确安装了Pro/EPro/E开发工具Toolkit的目录结构:设置包含文件和库文件然后在你的VS2005IDE中设置好包含文件和库文件目录。
点击工具->选项菜单,弹出选项对话框1.加入包含文件:在安装目录下<安装目录>\protoolkit\includes2.加入库文件:在安装目录下<安装目录>\protoolkit\i486_nt\obj新建工程新建一个工程1.选择MFC DLL模板;2.填入项目名称,点击确定;3.在应用程序设置页,选择“使用共享MFC DLL的规则DLL”4.点击完成。
设置工程属性点击项目->属性菜单开始设置项目属性。
1.在C/C++标签下预处理器页面,预处理器定义中添加一条PRO_USE_VAR_ARGS宏。
3.在语言页设置将wchar_t视为内置类型为否(/Z c:wchar_t-)4.在连接器标签->输入页面a)附加依赖项中添加要附加的依赖库文件:protk_dllmd.lib,wsock32.lib,mpr.lib。
b)在忽略特定库中添加要忽略的库文件:msvcrt.lib。
5.在链接器->命令行标签->附加命令选择中填入/FORCE设置完成以上内容后即可编译成功。
编辑源文件重新编译你的工程注册和运行程序1.编写一个注册文件Protk.dat,该文件描述了二次开发程序的注册信息。
典型的文件结构如下:语法意义如下:name:为你的二次开发程序指定一个单独的名字。
startup:指定程序模式,这里是DLL模型。
exec_file:你编译出来的动态链接库的放置路径。
text_dir:应用程序使用的菜单和消息文件的放置路径。
allow_stop:程序运行停止。
delay_start:延迟启动。
end:注册文件结束2.在工程目录下新建一个Text文件夹,然后在Text文件夹下面,新建一个user_msg.txt启动Pro/E主程序,选择工具->辅助应用程序菜单(Tools->Auxiliary Application)4.然后点击注册(Register)按钮,选择前面编写的注册文件protk.dat。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PRO/E 5.0环境下使用vs2008进行二次开发
1、环境设置(只需第一次设置)
1)进入工具/选项对话框,包含文件:○1./prodevelop/include; ○2./protoolkit/include
2)库文件:○1./protoolkit/i486_nt/obj; ○2./prodevelop/i486_nt/obj
2、新建MFC DLL工程(采用默认动态链接烈类型)
3、设置项目属性
1)进入项目/属性对话框(ALT+F7),选择配置管理器,将Active版本类型改为Release。
2)选择配置属性/链接器/输入,在附加依赖项一栏输入:
wsock32.lib mpr.lib protk_dll.lib prodev_dll.lib psapi.lib netapi32.lib
3)在忽略特定库一项输入mvcrt.lib
1)添加头文件
#include"ProMenu.h"
#include"ProUtil.h"
#include"ProMenubar.h"
2)添加初始化函数
extern"C"int user_initialize() {
ProError status;
// 用户接口程序
return status;
}
extern"C"void user_terminate() {
// 结束代码
}
// 定义菜单的可访问性设置函数
static uiCmdAccessState UserAccessDefault(uiCmdAccessMode access_mode) {
return(ACCESS_AVAILABLE);
}
int MsgBox() // 定义菜单按钮相应函数
{
AfxMessageBox(_T("My first Pro/E redeveloping"));
return 0;
}
extern"C"int user_initialize()
{
ProError status;
uiCmdCmdId cmd_idl;
ProFileName mfName;
ProStringToWstring(mfName, "Msg.txt");
// 添加菜单
status = ProMenubarMenuAdd("CHECK", "CHECK", "Utilities",
PRO_B_TRUE, mfName);
// 添加菜单动作
status = ProCmdActionAdd("ShowTest1", (uiCmdCmdActFn)MsgBox,
uiCmdPrioDefault,UserAccessDefault,
PRO_B_TRUE, PRO_B_TRUE, &cmd_idl);
// 添加菜单按钮
status = ProMenubarmenuPushbuttonAdd("CHECK", "MSGBOX", "PathMsg",
NULL, NULL,
PRO_B_TRUE, cmd_idl, mfName);
return status;
}
4)关键函数
wchar_t* ProStringToWstring ( wchar_t*wstr, char*str );
// 把char*类型转换为wchar_t*
ProError ProMenubarMenuAdd (
ProMenuItemName menu_name,
ProMenuItemLabel untranslated_menu_label,
ProMenuItemName neighbor,
ProBoolean add_after_neighbor,
ProFileName filename )
ProError ProCmdActionAdd (
char *action_name,
uiCmdCmdActFn action_cb,
uiCmdPriority priority,
uiCmdAccessFn access_func,
// 是否在非激活窗口显示
ProBoolean allow_in_non_active_window,
//是否在附属窗口显示
ProBoolean allow_in_accessory_window,
uiCmdCmdId *action_id );
ProError ProMenubarmenuPushbuttonAdd (
ProMenuItemName parent_menu,
ProMenuItemName push_button_name,
ProMenuItemLabel push_button_label,
ProMenuLineHelp one_line_help,
ProMenuItemName neighbor,
ProBoolean add_after_neighbor,
uiCmdCmdId action_id,
ProFileName filename );
static uiCmdAccessState UserAccessDefault(uiCmdAccessMode access_mode) {
return(ACCESS_AVAILABLE);
// ACCESS_REMOVE 移除菜单项
// ACCESS_INVISIBLE 不可见
// ACCESS_UNAVALIABLE 可见,变灰不可选
// ACCESS_DISALLOW 不可选
// ACCESS_AVAILABLE 可选
}
5)编写信息文件
格式第1行:关键字(必须与使用该信息文件函数的相关字符串相同)
第2行:菜单显示英文文本
第3行:中文文本
第4行:为空(用#表示,必须在英文输入法下输入)
6)编写注册文件
格式:
NAME 应用程序标识名
EXEC_FILE 可执行程序名(包括路径)
TEXT_DIR Text目录路径
STARTUP 启动应用模式
ALLOW_UP 是否允许在PROE工作时终止应用程序DELAY_START 是否延迟调用应用程序
REVISION Pro/TOOLKIT版本号
END 结束标志
(每次修改后请重启PROE)。