一、ProE客制化开发工具
ProE的二次开发工具主要有以下四种
(1) Pro/Toolkit
基于C/C++语言的二次开发工具包,功能最强大,但学习的难度也最大。
(2) Pro/J-Link
基于Java语言的二次开发工具包。
(3) Pro/WebLink
基于javascript语言的二次开发工具包,通过编写基于javascript的Web程序,使用户能通过内嵌在ProE中的网页和ProE进行交互操作。
(4) Pro/VB
基于Visual Basic语言的二次开发工具包。
Pro/Toolkit与其他二次开发工具包最大的区别在于提供了创建特征的能力,而其他3种工具包则只能创建UDF特征。但Pro/Toolkit也不是万能的,它能大概实现ProE 80%的功能,而Pro/J-Link&Pro/WebLink&Pro/VB只能实现Pro/Toolkit 60%的功能。还有一点关系到开发者的切身利益,Pro/J-Link&Pro/WebLink&Pro/VB是完全免费的,而开发Pro/Toolkit程序需要从PTC公司购买Pro/Toolkit License。(从网络论坛上得知,2006年的时候,一个Pro/Toolkit License大概需要2万美金。)
二、Pro/Toolkit介绍。
Pro/Toolkit是PTC公司为Pro/E提供的客制化开发包。它使用户和第三方使用者有能力通过编写C语言程式扩展ProE的功能并无缝集成到ProE中。
Pro/Toolkit提供了大量的C函数库以供外部程式安全地控制和访问ProE。Pro/Toolkit是ProE客制化开发的首选开发工具。
三、Pro/Toolkit风格
Pro/Toolkit采用面向对象的编程风格。Toolkit应用程序与ProE程序之间传递信息的数据结构,对应用程序而言,并不是直观可见的。这些数据只能通过Pro/Toolkit函数访问处理。
对象和动作
最基本的Pro/Toolkit概念就是对象和动作。
每一个Pro/Toolkit的C库函数,都会对一个特定类型的对象执行一个动作。它采用这样的命名约定:Pro + 对象类型名 + 动作名
例如:ProSectionLocationGet()
一个Pro/Toolkit对象拥有着完整定义和独立的C结构,用于对与其关联的对象执行动作。大部分的对象对应ProE数据库中的项,比如特征和表面。其他的则对应一些更为抽象的或是暂态的ProE项,比如在ProE中通过选择操作所产生的信息。
在Pro/Toolkit中,每种对象类型的名称都以Pro开头,后接首字母大写的用于描写该对象的名字。以下是一些Pro/Toolkit对象类型与ProE项之间对应关系的简单范例:
ProFeature: 特征
ProSurface: 面
ProSolid: 表示零件和组件的抽象对象
ProWcell: 一个制造组件中的工作单元
Pro/Toolkit为每个对象类型都提供了一个C类型定义,用于定义该类型的变量或执行动作时作为参数传递。Pro/Toolkit对象之间还有一个层次关系,反应了对应ProE数据库项之间的关系。例如:一个ProFeature对象可以包含ProSurface类型的对象。
以下函数执行一个动作:
ProSolidRegenerate()
ProFeatureDelete()
一些Pro/Toolkit函数名需要包含一个以上的对象类型的名称。这类函数通常以 对象类型+动作 来命名。例如:
ProFeatureParentsGet()
ProWcellTypeGet()
Pro/Toolkit函数名的动作名词表明了要被执行的动作。如下表所示:
ProEdgeLengthEval()示例如下:
ProSurfaceAreaEval()
ProSolidRayIntersectionCompute()
为进一步说明,函数ProSolidOutlineGet()从ProE读取当前储存的实体模型轮廓,而ProSolidOutlineCompute()则会重新计算实体模型轮廓并获取该数据。所以,要获取一个实体模型轮廓的精确值时请使用ProSolidOutlineCompute()。
注意:请不要使用ProSolidOutlineGet()来计算实体模型的轮廓,因为它不会返回正确的计算结果。
其他Pro/Toolkit函数的规则还包括:第一个参数指定要操作的对象,输入参数位于输出参数之后。
函数原型
每一个Pro/Toolkit函数都有一个ANSI函数的原型。(在Pro/Toolkit支持的平台上的C编译器,至少要提供函数原型检查的选项)所有和特定的Pro/Toolkit对象相关的函数之原型,都在以该对象名命名的头文件中。例如,ProEdgeLengthEval()函数的原型就在头文件ProEdge.h中。
注意:PTC强烈建议使用函数原型,请确保在你的Pro/Toolkit程式中包含适当的头文件。
函数的错误状态
大部分Pro/Toolkit函数的返回值类型都是ProError。ProError是一个枚举类型,它包含了Pro/Toolkit函数执行成功或失败的具体状态值。
函数执行成功最常见的返回值是PRO_TK_NO_ERROR。当函数执行过程中确实出现了问题或是由于一些正常操作上的原因(即良性原因),都会返回错误状态。例如,以下错误状态表明函数执行确实出现了问题:
PRO_TK_BAD_INPUTS --- Pro/Toolkit程式调用函数不正确。
PRO_TK_OUT_OF_MEMORY或PRO_TK_COMM_ERROR --- 系统错误
以下错误则是良性的:
PRO_TK_USER_ABORT --- 支持用户交互的ProE函数执行中被用户中断
PRO_TK_E_NOT_FOUND --- 函数试图在空的对象列表上执行操作
程式设计者必须小心应对Pro/Toolkit函数返回的错误状态,对应不同的返回值应当有对应的处理。不管是执行成功还是失败,都会有好几种状态值,每一种一般都要求有不同的处理。
每一个Pro/Toolkit函数可能的返回值在API文档中对应函数的下面都有描述。并且在头文件中函数原型的下面的注释中也有。