加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSS
您当前的位置:首页 > 机械之家 > CAX一体化

手把手Proe二次开发

时间:2010-10-23 22:17:03  来源:网络  作者:古墓居士 DGM

开始: 二次开发工具 PRO/ENGINEER在提供强大的设计、分析、制造功能的同时,也为用户提供了多种二次开发工具。常用的二次开发工具有:族表(Family Table)、用户定义特征(UDF)、Pro/ProgramJ-linkPro/toolkit等。 1)族表(Family Table 通过族表可以方便的管理具有相同或相近结构的零件,特别适用于标准零件的管理。族表通过建立通用零件为父零件,然后在其基础上对各参数加以控制生成派生零件。整个族表通过电子表格来管理,所以又被称为表格驱动。 2)用户定义特征(UDF 用户定义特征是将若干个系统特征融合为一个自定义特征,使用时作为一个整体出现。系统将UDF特征以gph文件保存。UDF适用特定产品中的特定结构,有利于设计者根据产品特征快速生成几何模型。 3Pro/Program Pro/ENGINEER软件对于每个模型都有一个主要设计步骤和参数列表―Pro/Program。它是由类似BASIC的高级语言构成的,用户可以根据设计需要来编辑该模型的Program,使其作为一个程序来工作。通过运行该程序,系统通过人机交互的方法来控制系统参数、特征出现与否和特征的具体尺寸等。 4J-link J-linkPRO/ENGINEER中自带的基于JAVA语言的二次开发工具。用户通过JAVA编程实现在软件PRO/ENGINEER中添加功能。 5Pro/Toolkit Pro/ToolkitJ-link一样也是Pro/E自带的二次开发工具,在Pro/Toolkit中,PTC向用户提供了大型的C语言函数库,函数采用面向对象的风格,通过调用这些底层函数,用户能方便而又安全地访问Pro/ENGINEER的数据库及内部应用程序,进行二次开发,扩展一些特定功能。

图片:

image001.jpg

 

二次开发实例步骤:
打开VC,新建工程,名为Toolkit,选择动态链接库dll方式





简单介绍一下开发模式:
Pro/Toolkit
下的开发的程序有两种模式:同步模式(Synchronous Mode)和异步模式(Asynchronous Mode)。同步模式下,Pro/E根据注册文件中的信息启动应用程序,Pro/Toolkit应用程序和Pro/E产生各自的进程,程序的控制权在两个进程之间切换。该应用程序不能够独立于Pro/E而运行。在异步模式下,Pro/Toolkit应用程序和Pro/E能够进行各自的操作,在通信方面,异步模式使用远程调用(Remote Procedure CallsRPC)方式,程序(含有独立主函数)能独立于Pro/E启动。由于异步模式采用远程调用,程序运行速度相比同步模式慢很多,整合性也不好,所以一般基于Pro/EToolkit开发采用同步模式。在同步模式下又有两种开发方式:动态链接库(DLL Mode)和多进程(Multiprocess Spawned Mode)。前者为的动态连接库文件,无自身主程序函数,直接连接于Pro/E进行程序调用。后者为.exe文件,有独立的主程序和Pro/E进行相连接。一般为了调试方便,开发程序时可以采用多进程模式,在程序完成时,采用动态连接库提高程序运行效率。

图片:

image003.jpg

选择dll工程建立好之后
进行相关路径的设置图片:

image004.jpg

 

start运行程序:
添加的菜单为:

图片:

image014.jpg

 

现在为Menu1-1添加动作
显示一个消息对话框,

先编写调用函数:

图片:

image015.jpg

Menu动作中调用

图片:

image016.jpg

同样的编译调试-注册-运行之后
点击Menu1-1菜单出现:

图片:

image017.jpg

对话框:
proe下面加弹出对话框我知道有两种

一种是用proe自带的对话框,在编对话框的时候没有vc里面那么容易,也没有那么直观

要写一个.res的文件保存在text文件夹下面。在编辑的程序中调用对话框。编辑对话框 控件的时候 可以借助pro_dialog_view来查看编辑的对话框样式 具体看protoolkit user guideUI那一章

第二种就是vc的对话框,如果vc程序已经和proe接上去了,比如添加菜单了。就很容易 就在vc里面调用 对话框,和vc编程一样。平时多数使用vc对话框。


不过简单的对话框也可以用proe二次开发做。其样式和proe一致

到此,pro/e的开发已经算人门了

不在详细介绍

pro/e
对话框风格在user guide有:

图片:

image018.jpg

编写调用程序:

图片:

image019.jpg

编写消息注册文件(重要):

图片:

image020.jpg

注册运行:
弹出确认对话框

添加链接库(非常重要的一步)

图片:

image005.jpg

接下来就可以编写程序了:

Pro/TOOLKIT
应用程序必须包含有两个函数:

user_initialize()
user_terminate()
Pro/E
初始化且创建图形窗口后,Pro/TOOLKIT调用函数
user_initialize()
该函数具有多个参数,用户根据需要使用,这些参数提供了运行Pro/E的命令行参数信息和版本号

Pro/E
结束时,Pro/TOOLKIT调用函数
user_terminate()

下面为开发TOOLKIT应用程序的起点


#include "roToolkit.h"
int user_initialize()
{
  return(0);
}
void user_terminate()



下面介绍添加菜单的开发过程:

#include <roToolkit.h>
#include <roMenu.h>
#include <roMenuBar.h>
#include <roUtil.h>

image006.jpg

再此TOOLKIT程序和VC的交互无需使用动态库调用(编写两个动态库)
编写入口及菜单添加函数:
/*====================================================================*\
FUNCTION : user_initialize()
PURPOSE : Pro/TOOLKIT
程序的总入口,完成初始化工作
\*====================================================================*/
extern "C" int user_initialize(
  int argc,    
  char *argv[],
  char *version,
  char *build,
  wchar_t errbuf[80])
{

roError status;
uiCmdCmdId cmd_id;
roFileName mf;

roStringToWstring(mf,"usermsg.txt");
 
status = ProMenubarMenuAdd ("Menu0", "USER Menu0",
    "Help", PRO_B_TRUE, mf);
// 0
添加父菜单Menu0

status = ProMenubarmenuMenuAdd ("Menu0", "Menu1", "USER Menu1",
        NULL, PRO_B_TRUE, mf);
添加弹出式菜单Menu1

status = ProCmdActionAdd("Menu2", (uiCmdCmdActFn)TestAccessDefault,
  uiCmdPrioDefault, TestAccessDefault, PRO_B_TRUE, PRO_B_TRUE, [$cmd_id)]
-1
菜单Menu2动作

status = ProMenubarmenuPushbuttonAdd ("Menu1", "Menu2",
        "USER Menu2", "USER Menu2 help", NULL, PRO_B_TRUE,cmd_id, mf);
-1
添加菜单Menu2
 
return 0;
}

图片:

image007.jpg

结束:

图片:

image008.jpg

编译调试:

图片:

image009.jpg

生成Toolkit.dll后,编写菜单消息文件usermsg.txt

图片:

image010.jpg

编写注册文件:

图片:

image011.jpg

运行Pro/E
打开uitilities下拉菜单,点击辅助应用程序

图片:

image012.jpg

注册:

图片:

image013.jpg

 

安装完Pro/Toolkit后的目录为:

图片:

image002.jpgimage002.jpg

来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
相关文章
    无相关信息
栏目更新
栏目热门
Free Web Hosting