摘要:介绍了基于Pro/Toolkit参数化CAD系统的开发方法及实例,该方法利用Pro/ENGINEER软件自带的Pro/Toolkit二次开发工具,采用VC++6.0++高级语言建立dll动态链接库,创建友好的用户界面用以输入基本参数;采用ADO数据库调用零件的的有关表格数据信息,从而实现零件参数的输入以自动生成三维实体模型。该方法不仅适用于机械行业典型零件的参数化设计,并对其他工程设计中典型零件的设计有借鉴意义。
关键词:Pro/Toolkit,ADO数据库,参数化设计
中图分类号:TP391.72 文献标识码: 引言
随着CAD技术的发展,三维CAD软件也得到了广泛应用,PTC公司的Pro/ENGINEER(以下简称Pro/E)以其参数化驱动、单一全关联的数据库、功能齐全的模块等强大优势而占据着重要地位。对于结构简单的零件,一般的工程人员即可应用Pro/E的三维造型模块中的命令实现,但对于结构复杂,参数繁多的典型零件如齿轮、带轮等,每个零件的造型就需要大量的参数,关系式等,这样将造成烦琐的重复劳动,降低设计效率,本系统即是利用Pro/Toolkit软件包和VC++6.0高级语言对Pro/E实施二次开发,开发了基于Pro/Toolkit参数化CAD系统。 系统总体结构 本系统参数化设计的思想是:首先在Pro/E环境中创建典型零件三维实体模型库,并建立零件的基本参数,然后利用VC++6.0创建的用户界面输入零件的基本参数;应用Pro/Toolkit进行二次开发创建集成于Pro/E的用户菜单,编写VC++6.0与Pro/E的接口,利用数据库读取实体模型的各种表格信息,从而达到输入基本参数后即可自动得到三维实体的目的。系统的总体结构如图1,由以下几个主要模块组成:
参数化CAD系统 数据库 保存当前数据 增加或删除数据 修改数据 查询数据 VC部分 Pro/Engineer 用户界面设计 3D模型的建立 参数化设计 参数输入 数据库操作 Pro/TOOLKIT接口 图1 系统总体结构
(1) 零件的参数化设计模块
该模块应用PRO/E主要是用于建立零件的三维模型及模型中的参数或关系式。
(2) Pro/Toolkit接口模块
Pro/Toolkit提供了一个很大的C函数库,利用其库函数编写的外部应用程序可方便又安全地访问Pro/E的数据库及其应用程序,进行二次开发,扩展其功能。因此,也可以把Pro/T看成是 PTC用户应用程序的界面(API)。
(3)用户界面设计模块
该模块主要应用VC++6.0建立Pro/Toolkit用户程序接口,并创建用户界面,实现零件参数的输入及对数据库数据的管理操作。
(4) 数据库管理模块
该模块应用数据库对零件中的参数进行有效管理。下面重点介绍本系统中的关键技术:Pro/Toolkit接口技术、参数化设计方法、数据库管理技术。
2、Pro/Toolkit接口技术
2.1 Pro/Toolkit应用程序模式
Pro/T应用程序主要有两种模式:同步模式(synchronous modes)和异步模式(Asynchronous mode)。
由于在本论文中应用的主要是同步模式,所以下面介绍的主要是和同步模式相关的技术。
同步模式又可分为两种:动态连接库模式(DLL Mode)和多过程模式(Multiprocess Mode)。 动态连接库模式(DLL mode) Pro/T应用程序代码集成到Pro/E中所用的标准方法是通过应用动态连接库(Dynamically Linked Libraries),用户应用程序经过VC++6.0编译后生成动态连接库文件(*.dll)供PRO/E调用。这种模式称为“动态连接库模式(DLL mode)”。
(2) 多过程模式(Multiprocess Mode或Spawned Mode)
Pro/T也支持集成的第二种方法:多过程模式(Multiprocess Mode),也称分离模式(Spawned Mode).在多过程模式下, Pro/T应用程序代码被编译和链接生成一个独立的可执行文件(*.exe文件)。 与DLL模式相比,多过程模式需要更多的通信开销。
本系统应用的是动态连接库模式(DLL Mode)。
2.2 Pro/Toolkit应用程序结构
(1)Pro/T应用程序的主程序
Pro/T应用程序的主程序与一般C语言的程序有所区别,它无须包括 main函数,而必须包含两个称为 user_initialize()和user_terminate()的函数,分别在Pro/T开始和Pro/E会话结束时被调用。
本系统中用户应用程序的主程序的主要代码为:
extern "C" int user_initialize()
{
ProError status;
ProFileName message_file;
uiCmdCmdId cmd_id;
// ProCmdActionAdd为添加菜单按钮动作函数
status = ProCmdActionAdd("ShowTest",
(uiCmdCmdActFn)ShowGeerDlg,
uiCmdPrioDefault,AccessDefault,
PRO_B_TRUE,PRO_B_TRUE,&cmd_id);
// ProMenubarmenuPushbuttonAdd为添加菜单按钮,提供用户程序的接口。
status = ProMenubarmenuPushbuttonAdd( "Utilities", "ShowGeerDlg",
"ShowGeerDlg", "Show the dialog to select geer element",
NULL, PRO_B_TRUE,cmd_id,
ProStringToWstring(message_file, "Message2.txt"));
return status;
}
user_terminate()函数由用户定义,如:
extern “C” void user_terminate()
{
//用户添加的终止代码
……
}
(2) 用户添加的函数体
这是用户自已根据需要添加的函数代码,用户自己的应用程序通过这些函数体实现。
2.3 Pro/Toolkit应用程序编译、连接和注册
(1) 应用程序的编译和连接
本系统所用的是Windows平台,采用VC++6.06.0++做调试器。
应用VC++6.0建立并编译Pro/T应用程序项目,主要步骤如下:
1)编写C语言源程序,打开此程序,运行选择VC++6.0主菜单命令Build/Build生成一个默认的工程项目。
2)选择VC++6.0主菜单命令Tools/Options,系统弹出Options对话框,打开Directories选项卡,在Show directories for下拉列表框中分别选择Includes files和Library files,并分别添加相应的包含文件和库文件路径。 择VC++6.0主菜单命令Project/Settings,系统弹出Project Settings对话框。打开Link选项卡,在Category一栏选General,在Output file name编辑框中填写输出文件名称,在Object/library modules文本框中加入对应的库文件。将Category切换至Customize,选中Force files out设置强制输出。 (2)应用程序的注册和运行
编译连接成功生成可执行程序后,需要先进行PRO/T应用程序的注册。
应用程序的注册有自动和手动注册方式,与自动注册方式相比,手动注册方式可以在不关闭Pro/E系统的前提下反复修改应用程序,可提高系统运行效率。本系统应用的是手动注册方式。
具体方法选择Pro/E界面上的“工具”/“辅助应用程序”选项,选择“注册”按钮注册应用程序。注册成功后选择“运行”按钮运行应用程序。
2.4 Pro/Engineer 与MFC的接口开发技术