摘 要:对Pro/Engineer的CAD二次开发技术进行探讨,深入研究Pro/Engineer的几种二次开发工具,并通过对Pro/TOOLKIT二次开发工具包的研究和分析,提出了基于三维模型的用户自定义参数设计,最后利用Pro/TOOLKIT开发模块和Visual C++完成建立齿轮参数化设计。
关键词:二次开发 Pro/TOOLKIT开发工具 参数化设计
一、引言
在CAD技术日益普及的今天,传统的二维CAD软件正逐渐被三维CAD软件所替代。在众多软件中,PTC公司的Pro/Engineer是具有代表性的优秀软件之一。自从面世以来,它以尺寸驱动、基于特征、单一全关联的数据库等优点深受用户好评。企业根据产品对象的不同,在使用CAD软件时也各有侧重。企业要想最大效率的发挥出软件的功效,必须根据企业的产品特征和企业状况对软件进行二次开发。本文列举了在软件Pro/Engineer中常用的二次开发工具与方法,并着重介绍了用Pro/TOOLKIT对Pro/Engineer进行开发时的步骤。最后通过“齿轮快速设计系统”的开发实例进一步说明开发时的技巧。
二、开发工具
Pro/Engineer为用户提供了丰富的二次开发工具。常用的有Pro/Program、簇表(Family Table)、用户自定义特征(UDF)、J-Link和Pro/Toolkit等。为了防止混淆,以下特别对这几种开发工具进行比较和说明。
1.Pro/Program
Pro/Engineer对每个零件或组件模型都有一个主要的设计步骤和参数列表,那就是Pro/Program。它是零件与组件自动化设计的一种有效工具。设计人员可使用类似BASIC的高级语言,根据需要来编写该模型的Program。包括:控制特征的出现与否、尺寸的大小、零件与组件的出现与否、零件与组件的个数等。然而,Pro/Engineer就可以通过运行该程序来读取此零件或组件,并通过人机交互的方法得到不同的几何形状,以满足产品设计的需要。
2.簇表(Family Table)
簇表可用于管理具有相同或相近结构的零件,特别适用于标准零件的管理。它是通过建立基础零件为父零件,然后在簇表中定义各个控制参数来控制模型的形状及大小。这样,就可通过改变各个参数的值来控制派生的各种子零件。
3.用户自定义特征(UDF)
设计人员在使用Pro/Engineer进行零件设计时,经常会遇到一些重复出现的特征。例如,螺钉的座孔等,因此设计人员就要花费许多时间进行这种重复性的操作。用户自定义特征则能将同一特征用于不同的零件上,或将若干个系统特征融合为一个自定义特征,使用时作为一个全局出现。这样,设计人员就可以建立自己的用户自定义特征库,根据产品特征快速生成几何模型,从而极大地提高了设计人员的工作效率。
4.Pro/TOOLKIT
Pro/TOOLKIT是PTC为Pro/Engineer制定的开发工具包,它提供了应用程序接口(API),使客户或第三方厂商具有扩展Pro/Engineer功能的能力。Pro/TOOLKIT使用面向对象风格C编程,且提供一个庞大、用于底层资源调用的C语言函数和头文件,外部应用程序可借此访问Pro/Engineer的数据库和应用程序。
三、Pro/TOOLKIT的运作方式
Pro/TOOLKIT应用程序代码集成进入Pro/Engineer的标准方法是通过“动态链接库”(Dynamical Linked Libraries, DLLs)完成的。当编译Pro/TOOLKIT应用程序的C代码,并将其链接至Pro/TOOLKIT库文件时,就创建了一个可链接至Pro/Engineer可执行文件的对象库文件,这个可执行文件将在Pro/Engineer启动时被执行。这种方法称为“DLL模式”。
此外,Pro/TOOLKIT还支持第二种方法的集成,即“多进程”(Multiprocess),或称为“衍生模式”(Spawned Mode)。在这种模式下,Pro/TOOLKIT应用程序将被编译和链接,从而形成一个独立的执行文件。这个可执行文件将是Pro/Engineer的衍生,并作为Pro/Engineer工作任务的一个子程序来运行。
在DLL模式中,Pro/TOOLKIT应用程序与Pro/Engineer之间的信息交换,是通过直接函数调用完成的。而在多进程模式下,内部进程信息系统会传递必要的信息,以确定两进程间的函数及其所需参数来模拟直接函数调用,以实现和DLL模式中相同的效果。
四、创建齿轮参数设计应用程序的基本方法
1.利用VC向导创建齿轮参数设计应用程序
程序设计的主要工作在三个方面:1)编写下拉菜单的(. txt)文件和对话框的(.res)资源文件;2)按Pro/TOOLKIT应用程序Pro/Engineer环境运行的要求设计接口与程序运行结束时的终止程序;3)根据功能需求设计Pro/TOOLKIT应用程序主体部分。
其程序部分的主体结构
int user_initialize( nt argc, char * argv[ ] ) //其功能相当于C语言中的main( )函数
{ //调用函数
… …(该部分是用来初始化Pro/TOOLKIT应用程序且创建图形窗口,这部分包括了应用程序的所有初始化进程)
return(0)
} void user_terminate( )
{ … …(该部分是用来结束Pro/TOOLKIT应用程序)
return;
}func( )
(该部分是主要添加要完成预定功能的一个或多个的C语言代码)
编辑完源代码后要用Visual C++ 6.0进行编译,首先要设置好编译环境:一是设置好包含头文件的路径;二是设置好连接所需库文件的路径。