【篇首语】以前料及过一点,不过后来没有深入。看到icax的帖子不错,转载过来。

开始: 二次开发工具 PRO/ENGINEER在提供强大的设计、分析、制造功能的同时,也为用户提供了多种二次开发工具。常用的二次开发工具有:族表(Family Table)、用户定义特征(UDF)、Pro/Program、J-link、Pro/toolkit等。

1)族表(Family Table) 通过族表可以方便的管理具有相同或相近结构的零件,特别适用于标准零件的管理。族表通过建立通用零件为父零件,然后在其基础上对各参数加以控制生成派生零件。整个族表通过电子表格来管理,所以又被称为表格驱动。

2)用户定义特征(UDF) 用户定义特征是将若干个系统特征融合为一个自定义特征,使用时作为一个整体出现。系统将UDF特征以gph文件保存。UDF适用特定产品中的特定结构,有利于设计者根据产品特征快速生成几何模型。

3)Pro/Program Pro/ENGINEER软件对于每个模型都有一个主要设计步骤和参数列表―Pro/Program。它是由类似BASIC的高级语言构成的,用户可以根据设计需要来编辑该模型的Program,使其作为一个程序来工作。通过运行该程序,系统通过人机交互的方法来控制系统参数、特征出现与否和特征的具体尺寸等。

4)J-link J-link是PRO/ENGINEER中自带的基于JAVA语言的二次开发工具。用户通过JAVA编程实现在软件PRO/ENGINEER中添加功能。

5)Pro/Toolkit Pro/Toolkit同J-link一样也是Pro/E自带的二次开发工具,在Pro/Toolkit中,PTC向用户提供了大型的C语言函数库,函数采用面向对象的风格,通过调用这些底层函数,用户能方便而又安全地访问Pro/ENGINEER的数据库及内部应用程序,进行二次开发,扩展一些特定功能。


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

接下来就可以编写程序了:
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
#include
#include
#include

再此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;
}


结束:
编译调

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

编写注册文件:


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

注册:

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

现在为Menu1-1添加动作
显示一个消息对话框,
先编写调用函数:

在Menu动作中调用

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

对话框:
在proe下面加弹出对话框我知道有两种
一种是用proe自带的对话框,在编对话框的时候没有vc里面那么容易,也没有那么直观
要写一个.res的文件保存在text文件夹下面。在编辑的程序中调用对话框。编辑对话框 控件的时候 可以借助pro_dialog_view来查看编辑的对话框样式 具体看protoolkit user guide的UI那一章
第二种就是vc的对话框,如果vc程序已经和proe接上去了,比如添加菜单了。就很容易 就在vc里面调用 对话框,和vc编程一样。平时多数使用vc对话框。
不过简单的对话框也可以用proe二次开发做。其样式和proe一致
到此,pro/e的开发已经算人门了
不在详细介绍
pro/e对话框风格在user guide有:

编写调用程序:


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

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

原帖:http://www.mememama.cn/2010/0306/174.html

Pro/E二次开发入门详细教程相关推荐

  1. ProE野火4.0+vs2005 Pro/Toolkit 二次开发测试详细教程

    ProE野火4.0+vs2005 Pro/Toolkit 二次开发测试详细教程 2011-04-09 23:02 536人阅读 评论(0) 收藏 举报 Pro/Toolkit可以帮助我们开发出自己需要 ...

  2. Flow-3D二次开发入门 教程

    Flow-3D二次开发入门 教程 加载体热源 (默认的,没有任何热源) General Physics Fluid设定 Meshing & Geometry Geometry meshing ...

  3. ThinkJS框架入门详细教程(二)新手入门项目

    一.准备工作 参考前一篇:ThinkJS框架入门详细教程(一)开发环境 安装thinkJS命令 npm install -g think-cli 监测是否安装成功 thinkjs -v 二.创建项目 ...

  4. Spring入门详细教程(二)

    前言 本篇紧接着spring入门详细教程(一),建议阅读本篇前,先阅读第一篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/1016553 ...

  5. Revit二次开发入门教程一(工具篇)

    对BIM开发感兴趣的读者可以关注我的BIM开发系列教程 什么是BIM开发?这篇文章可以告诉你 Revit二次开发教程提纲 Revit二次开发编程入门一(工具篇) 前言 BIM诞生的背景 Revit在B ...

  6. spring入门详细教程(五)

    前言 本篇紧接着spring入门详细教程(三),建议阅读本篇前,先阅读第一篇,第二篇以及第三篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/ ...

  7. Spring入门详细教程(三)

    前言 本篇紧接着spring入门详细教程(二),建议阅读本篇前,先阅读第一篇和第二篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/101 ...

  8. Revit二次开发入门秘籍 01如何入门

    关于入门 我想在开始学习之前大家应该更需要知道如何入门,对比一下我们在学校的学习,我们需要书.老师-书上呢,是有所有的知识点,有重要的,有不重要的,而老师呢,会知道哪些是重点,也就是我们考试要考的,教 ...

  9. Revit二次开发入门捷径_升维学习、降维打击

    问题 入门Revit二次开发有捷径吗? 答案 量子力学:有也没有.(皮一下:叠加态) 没有:目的地只有一个,路只有一条,学习没有捷径. 有:虽然路只有一条,但我们可以借助交通工具,缩短时间就是捷径. ...

最新文章

  1. 构建高性能J2EE应用的五种核心策略
  2. 【错误记录】Android Studio 向 GitHub 提交代码报错 ( Push failed: Failed with error: Could not read | 使用命令行提交代码 )
  3. 图系列|7篇动态时空图网络学习必读的顶会论文
  4. 1143 多少个Fibonacci数
  5. __name__ == ‘__main__‘的原理
  6. linux 列出当前视频设备,如何获取Linux(ubuntu)上的视频捕获设备(网络摄像机)列表?(C / C ++)...
  7. 深入理解Nginx 阅读笔记(一)
  8. Java静态代理详解
  9. 微信群聊在哪个服务器,微信怎么找附近的群聊?微信群不见了怎么找?
  10. [SourceTree - Git] 如何解决冲突 (以我的版本解决冲突以他人版本解决冲突)
  11. 墨天轮“高可用架构”干货文档分享(含Oracle、MySQL、PG资料124篇)
  12. python提取文件中含某一字符串的行,并写入新的文件中
  13. 【详细图解】七彩虹智能主板的开机键连接线怎么插 | 七彩虹主板的前置音频接线法怎么插 | 七彩虹2.0主板 F_PANEL怎样插
  14. watch蜂窝开通服务器中断,原因找到了!Apple Watch Series 3为何无法连接蜂窝网络...
  15. linksys 路由器刷机备忘
  16. php正则匹配中文和英文字母,PHP正则匹配中文字母数字正则的表达式
  17. 聂易铭:3月20日数字货币筑底失败,破位遥遥无期
  18. 国内5款优秀的WEB前端框架
  19. elasticsearch性能测试工具rally深入详解
  20. C语言中Switch语句的范围比较解决方案(学习笔记)

热门文章

  1. Cisco系列第一节-----前提基础知识
  2. uniapp的APP证书、秘钥、应用包名、应用签名
  3. php 宽字节注入 转成utf8,Hr-Papers|宽字节注入深度讲解
  4. mysql sql注入例子_SQL注入的实际案例
  5. 科普:IT行业各种术语
  6. 2022-2028年中国高频高速覆铜板行业市场专项调研及竞争战略分析报告
  7. 海尔集团CEO张瑞敏--21世纪的企业是为利益相关者共荣共享的组织
  8. 编程技术不断迭代,驱动少年向上发展!
  9. 『杭电1811』Rank of Tetris
  10. 【多重分形谱】基于MATLAB的图像多重分形谱分析仿真