机械CAD应用及开发.docx
《机械CAD应用及开发.docx》由会员分享,可在线阅读,更多相关《机械CAD应用及开发.docx(13页珍藏版)》请在冰豆网上搜索。
机械CAD应用及开发
第四节商用CAD软件Pro/E中某类产品设计方法的实现
一、应用程序接口
产品的CAD系统一般包括分析计算、模拟仿真、数据库系统开发和图形处理等几大部分,而各部分往往采用不同的语言系统及软件开发。
如何在各部分之间实现数据的正确、顺畅地传递,通过信息的集成来实现系统的有效集成,已成为影响CAD系统性能甚至成败的一个关键性问题。
这就要求我们在开发产品CAD系统时,要将接口设计摆在重要的位置上。
1.不同CAD系统间的数据交换
目前市场上流行的CAD系统很多,不同的CAD系统不仅用途和性能各异,而且其内
部产品模型的数据结构和格式、各个CAD系统中的数据元素的类型也不尽相同,所以信息在系统间的传输就要进行格式转换。
目前常用的数据交换方法主要有两种:
(1)点对点交换如图7-59所示。
每个系统都带有专用的数据处理程序,一方面可
以将自身的数据格式转换为其他系统的数据格式,另一方面又可将其他系统的数据格式转换为自身的数据格式。
假设有N个系统,则每个系统都要有N-1个处理程序,所以共需N(N-1)个处理程序。
图7-59点对点交换
(2)星式交换如图7-60所示。
各个系统之间不进行直接的数据交换,而是设置一个标准的中间数据格式,通过该中间格式进行间接交换。
每个系统只需两个数据处理程序,一是将自身数据格式转换为标准的中间格式,另一是从标准格式转换回自身的数据格式。
几个系统共用2N个处理程序。
显然,当系统数目N>3时,星式交换比点对点交换所需的数据处理程序要少得多,从而可以大大减少设计和维护数据处理程序的费用。
目前国际上广泛采用的几个数据交换标准为IGES、PDDI、SET、VDA-FS等,随着各种数据交换标准的不断发展,国际标准化组织ISO制定了一个统一的国际标准—STEP,以保证数据传输的正确性和完整性,以及实际系统的有效集成。
2.CAD系统间各模块的数据交换
一个完整的CAD系统通常包括下述三大部分:
(1)分析计算程序通常采用某种高级语言编写,如Fortran、Basic、C等。
C语言
由于其强大的功能及灵活性,以及面向对象程序设计方法的兴起,其随后的C++语言已成为开发应用程序的首选语言。
(2)数据库系统采用某种数据库管理软件来开发,常用的有Foxbase系列、Visual
Foxpro、Oracle、Sybase、PowerBuilder等。
这些系统的特点是数据库开发功能强大,而分析计算、图形处理等方面的功能比较薄弱。
(3)图形处理系统可采用高级语言来自行开发CAD软件,如C、C++等,但更经
济及便捷的途径是基于商品化的图形系统来进行二次开发。
目前国内普遍采用的二维图形平台为Autodesk公司的AutoCAD,国内有开目CAD,华正电子图版CAXA等。
中档的基于微机的三维图形平台有MDT、SolidEdge、Solidwork等。
高档的基于工作站的三维图形平台有SDRC公司的I_DEAS、PTC公司的Pro/Engineering、Unigraphics公司的UGII等。
随着计算机硬件水平的提高,目前这些大型软件已经可以在微机上运行了。
正是因为CAD系统的各个部分采用不同的开发工具来开发,就导致了信息传输和数据交换的问题。
(1)高级语言与数据库系统间的数据交换(接口设计)
以前的语言系统不具备直接开发数据库、读写数据库的能力,所以高级语言与数据库
资源间的数据交换常通过下面两种方式进行:
1)以文本文件为中心进行交互如图7-61所示,在数据库软件中都提供了与高级语
言的接口功能。
下面以Forpro为例介绍高级语言与数据库实现双相数据传递的方法。
1Foxpro向高级语言传递数据。
通过Foxpro提供的COPYTYPE命令生成一个数据
文件向高级语言传递数据。
具体格式如下:
COPYTO文件名[<范围>][FIELDS<字段表名>][FOR<条件>][WHILE<条件>]
TYPE<文件类型>
说明:
a.文件名:
指生成的数据文件的名字,其扩展名默认为“.TXT”。
这种文件只有数
据,没有结构,是ASCII码文本文件。
b.文件类型:
指生成的数据文件的格式,有SDF和DELIMITED两种类型。
其中,
SDF指标准数据格式,DELIMITED指通用数据格式,可以有三种形式:
·DELIMITED,不带选择项,数据项之间用逗号“,”分割,C型数据用引号扩起来;
·DELIMITEDWITHBLANK,数据项之间用空格分割,取代逗号;
·DELIMITEDWITH<定界符>,数据项之间用逗号“,”分割,C型数据用指定的字符(定界符)扩起来;
c.若未指定<范围>,且未指定FOR子句和WHILE子句,则拷贝全部记录;若未指定FIELDS<字段表>,则拷贝所有字段。
② 高级语言向Foxpro传递数据。
通过Foxpro提供的APPENDFROMTYPE
命令接受外部数据文件。
具体格式如下:
APPENDFROM<文件名>FIELDS<字段名表>[FOR<条件>]TYPE<文件类型>
说明:
a.文件名:
指外部数据文件名,其扩展名默认为“.TXT”。
b.若指定FOR<条件>短语,则向数据库文件追加满足条件的记录。
c.文件类型:
指外部数据文件的格式,其类型与COPYTO命令相同。
若选择SDF类型,则为标准数据格式文件。
数据项之间无间隙,按定长向数据文件
追加记录,遇到回车换行符完成一个记录的追加,直至遇到文件的结束标志为止。
·若选择DELIMITED类型,则追加的数据文件为通用设计格式;
·若指定WITHBLANK类型,则遇到一个空格完成一个字段的添加;
·若指定WITH<定界符>短语或不指定WITH短语,则遇到逗号完成一个字段的添
加,遇到回车换行符,完成一个记录的追加,直至遇到文件结束标志为止。
在追加记录的过程中,D型数据还原成SETDATE指定的日期格式。
d.文件类型的选择应与源数据文件的实际格式相一致,即数据文件的数据项数,各数据项类型及排列顺序都要与数据库文件的各个字段相对应,否则会造成数据的混乱。
2)利用高级语言编写接口模块实现对数据库的操作该接口程序对数据库中的数据
直接进行读写,程序需要用户自行开发,用户必须清楚数据库的结构及数据库的有效格式。
这种方法专业性高,复杂且开发工作量大。
3)利用高级语言内嵌的数据库引擎技术来实现与数据库的交换在目前广泛使用的
几种高级语言中都嵌入了数据库引擎技术,使得高级语言可以直接访问和操作数据,而无需编写接口程序就可实现与数据库的数据交换。
这种方法简单、方便、高效。
常用的有如下几种:
①利用VB的JetSQL来访问数据库。
SQL(StructuredQueryLanguage)是数据库标准的结构化查询语言,只要所使用的程序语言能够支持SQL,就很容易实现对数据库的操作。
VB支持JetSQL,它提供了数据定义语言DDL和数据操纵语言DML,利用DDL可建立和定义数据表、字段以及索引等数据库结构;利用DML可进行数据的查询、排序、筛选、添加和修改等功能。
②利用VisualC访问数据库。
开放数据库系统互连ODBC(OpenDatabaseConnectivity)是Microsoft公司开发的一套开放数据库系统应用程序接口规范。
ODBC为应用程序提供了一套高层调用接口规范和基于动态链接库的运行支持环境。
目前ODBC可以对现存的大多数数据库进行访问。
使用ODBC开发数据库应用程序时,ODBC调用的是标准的ODBC函数和SQL语句,数据库的低层操作由各个数据库的驱动程序完成,所以这样的程序具有良好的适应性和可移置性,并且具备访问多种异构数据库系统的能力,从而克服了传统数据库应用程序的缺陷。
ODBC的体系结构如图7-62所示。
图7-62ODBC的体系结构
从图中可以看出,ODBC是介于用户应用程序与不同的数据库驱动程序之间的一个中介。
在该结构中除了用户的应用程序以及所要操作的数据源及其驱动程序之外,还有两个非常重要的部分:
ODBC驱动程序以及ODBC驱动程序管理器。
在使用ODBC技术编写的应用程序中,用户的应用程序不能对数据库直接进行存取操作,而必须由ODBC驱动程序来完成。
ODBC驱动程序负责将应用程序的SQL语句调用以及其它信息传递给特定数据库的驱动程序,同时将驱动程序返回的结果传递给应用程序。
驱动程序管理器是一个Windows下的应用程序,文件名为ODBCAD32.EXE。
它负责安装驱动程序,管理数据源,并帮助程序员跟踪应用程序的ODBC函数调用。
它对应于控制面板中的ODBC(32bit)图标,若在控制面板中没有该图标,则说明还没有安装ODBC驱动程序管理器。
数据库驱动程序为动态链接库的形式,ODBC应用程序不能直接存取数据库,它将所要执行的操作提交给驱动程序,通过驱动程序实现对数据源的各种操作,数据库的操作结果也通过驱动程序返回给应用程序。
利用ODBC访问数据库的操作方法如下:
a.凳录ODBC数据源;
b.生成ODBC数据库应用程序;
c.创建程序界面以显示数据表的内容;
d.将控件与数据表的字段相链接;
e.运行ODBC数据库应用程序。
(2)高级语言与图形系统的接口
在产品设计过程中,设计计算和图形处理往往是交织在一起,一方面很多的图形信息
来自外部程序的计算结果,另一方面表示机械结构的图形信息需要传递给外部程序处理,这样就产生了图形系统与外部程序交换数据的需求。
本小节讨论的接口程序的作用就是能够从图形系统中生成的文件中提取数据,传递给外部程序,或者用来自外部程序的数据,生成图形系统可以读入的文件,输入给图形系统,转化为图形。
在基于微机的AutoCAD绘图系统中,常用的二次开发方法有以下三种:
1)基于图形交换文件(.DXF)的接口程序设计。
2)基于命令文件(.SCR)的接口程序设计。
3)基于面向对象开发工具ObjectARX的AutoCAD应用程序的开发。
这些方法已相当成熟,有关详细内容及方法请参阅相关资料,限于篇幅,本处不再赘述。
二、商用CAD软件Pro/E中某类产品设计方法的实现
基于CAD支撑软件的二次开发应用程序是沟通支撑软件与最终用户的桥梁和纽带。
一套好的CAD支撑软件通常都会提供强大的图形处理功能及高度开放的体系结构。
充分利用这些性能并结合专业特点进行二次开发,可获得符合各类用户特定要求的实用化工程设计软件。
在不同层次上有针对性的应用开发可赋予CAD软件智能化的设计功能。
本节采用PRO/Engineering2000i2作为商用CAD平台,论述基于PRO/E的二次开发方法。
1.系统开发环境
Pro/E二次开发工具是ProToolkit。
在Window环境下,可采用各种C语言为编程语言。
本例以MSVisualC++为编程语言。
ProToolKit程序主要有两种开发方式:
同步模式和异步模式。
同步模式程序可独立于Pro/E环境,通过程序与Pro/E的交互,完成一定的功能;异步模式依赖于Pro/E环境,以动态链接库的方式存在,在运行的Pro/E环境里,加载该动态库,完成程序的调用。
本例以动态库的方式开发齿轮减速器轴的参数化设计系统。
以减速器轴为例,说明Pro/E二次开发的基本方法。
2.RO/E的参数化建模
建立参数驱动的轴零件实体模型,设置所需的参数,给其命名并赋初始值,添加合理
的参数驱动关系,调试无误后,存储模型作为参数化设计系统的原始模型。
3.开发步骤
(1)在VisualC++语言环境里建立一个基于常规MFC的动态链接库的工程(本例中称为:
ShaftPPD)。
(2)在项目文件主程序里完成如下工作:
①编写user_initialize()函数,这是程序的入口点,基本菜单及其动作执行函数都
是在这里添加的。
②编写user_terminate()函数,它是函数的结束点,应在此完成必要的清除工作。
③添加必要的头文件,在程序里调用了大量ProToolkit函数,这些头文件是必不可
少的(详细内容参考程序ShaftPPD.cpp)。
#include
#include"user_tk_error.h"
#include"ProMdl.h"
#include"ProMenu.h"
#include"ProMessage.h"
……
#include"ProUtil.h"
Pro/TOOLKIT的结构如下:
#include“ProToolkit.h”
……
intuser_initialize()
{
……
return(0);
}
voiduser_terminate()
{
……
}
(3)在工程里设置库文件的环境。
方法是:
Project→Settings→Link,在
Object/LibraryModules里添加mpr.lib、protk_dll.lib、prodev_dll.lib等库文件名。
(4)设置头文件、库文件的路径。
方法是:
Tools→Options→Directories,给出必
要的文件路径,如:
D:
\PTC\PROE2000I2\PROTOOLKIT\INCLUDES。
(5)设计轴零件的参数输入对话框。
首先利用VC的资源编辑器制作对话框,主要完
成参数化设计的用户交互工作;然后添加基于该对话框的类(此处为CShaft类),添加必要的成员变量和成员函数。
(6)在Pro/E主界面中添加设计菜单按钮及菜单按钮调用的动作(如显示设计对话
框)等。
这一步比较复杂,需要通过ProToolKit的函数和一个相应消息文件(messagefile)共同完成。
一个完整的菜单应至少包括两个ProToolKit函数,一个是菜单按钮调用的动作,另一个是真正添加菜单并将它显示出来。
以下是本程序的添加菜单过程。
①ProCmdActionAdd("SHAFTDLG",uiCmdCmdActFn)ShaftDlg,uiProe2ndImmediate,
TestAccessDefault,PRO_B_TRUE,PRO_B_TRUE,&cmd_id);
其功能是添加执行的动作,获得其句柄。
其中,SHAFTDLG指动作名称,可任意命名,但必须保证唯一;cmd_id指分配的动作标识,即唯一的输出变量。
其它参量的含义可参阅帮助文件。
2ProMenubarMenuAdd("GearBox","USER-GearBox","Utilities",
PRO_B_TRUE,MSGFIL))));
其功能是设置主菜单,并列于Pro/E原有菜单中。
其中,GearBox为菜单名称,可任取;USER-GearBox为菜单标签,在消息文件里应有对应的字符标识;Utilities为相邻的菜单名;PRO_B_TRUE可设定新菜单是否位于相邻菜单的后面;MSGFIL为消息文件名。
③ProMenubarmenuMenuAdd("GearBox","PartDesign","USER-PartDesign",
NULL,PRO_B_TRUE,MSGFIL);
其功能是设置带子按钮的菜单子项。
其中,GearBox为父菜单名称,可任取;PartDesign为子菜单的名称。
④ProMenubarmenuPushbuttonAdd("PartDesign","Shaft","USER-Shaft",
"USERNewButtonhelp.",NULL,PRO_B_TRUE,cmd_id,MSGFIL);
其功能是设置子按钮,用于调用主对话框。
其中PartDesign为子菜单的名称;Shaft为子按钮的名称。
生成的菜单结构如图7-63所示。
图7-63菜单结构
(7)设计各函数完成参数驱动。
这些函数包括模型的获取,显示,参数化再生等,如:
ProErrorProUtilMdlDisplay(ProMdlmdl)函数完成模型图形显示;
intUserParaModel(ParaTransp_trans)函数完成模型依参数再生等。
(8)应用数据库技术存储若干组设计参数变量值。
数据库使用的是MSAccess,采用ODBC编程,实现数据的访问与存储。
(9)编译并连接得到动态链接库文件ShaftPPD.dll。
4.注册
(1)动态链接库的注册注册一个Pro/TOOLKIT应用程序就是向Pro/ENGINEER提供Pro/TOOLKIT程序的信息,因此,创建一个小的文本文件,即Pro/TOOLKIT“注册文件”,供Pro/ENGINEER查找和读取相应信息。
在与上述ShaftPPD.dll同一个目录里,创建一个名为protk.dat的文本文件。
该文件至少应包括以下内容:
nameYourApplicationName
startupdll
exec_filefilename.dll
text_dir$LOADDIR
revision
end
说明:
name—指定Pro/TOOLKIT应用程序的名称。
Startup—指定Pro/E与Pro/TOOLKIT交互的方法,本例采用DLL模式。
exec_file—指定编译、连接后生成的Pro/TOOLKIT应用程序名称。
在DLL模式中,它是一个动态连接库;在多处理模式中,它是一个可执行程序。
text_dir—指定包含Pro/TOOLKIT应用程序菜单和消息文件的路径。
revision—指定Po/E的版本。
End—标示Pro/TOOLKIT应用程序描述结束。
本程序的注册信息如下:
NAMEShaftPPD
EXEC_FILEShaftPPD.dll
TEXT_DIR.\\text
ALLOW_STOPTRUE
STARTUPdll
END
(2)数据库的注册由于本程序使用了数据库技术(轴零件的若干组参数值存储于一个数表里),要实现对表的访问,需要现注册一个ODBC数据源。
注册该数据源的过程如下:
1)开始→设置→控制面板→管理工具→数据源(32bitODBC)选择“添加”;
2)在创建数据源对话框中的名称列表中选择MicrosoftAccessDriver(*.mdb),点击“完成”;
3)在ODBCMicrosoftAccess安装里点击“选择”,找到Parameter.mdb,数据源名填写“Shaft_Para”,点击“确定”,再“确定”,就完成了注册。
5.程序的运行关键是dll在Pro/E下的加载。
(1)启动Pro/ENGINEER,将工作路径(workingdirectory)改为包含dll文件的路径;
(2)加载该dll文件,其过程是:
Utilities→Auxiliary/Applications→Register…→protk.dat→Start,如成功则新菜单便显示出来,可以进行相应操作了。
6.实例程序的功能
ShaftPPD程序用于完成齿轮减速器轴的参数化设计过程,相关程序清单见附录A。
轴参数表如图7-64所示,轴设计对话框如图7-65所示。
包括如下功能:
(1)导入模型按对话框所给定的默认参数值导入初始模型;
(2)取下一组数据按当前显示的参数从数据表中向下取一组数据;
(3)取上一组数据按当前显示的参数从数据表中向上取一组数据;
(4)依参数再生改变参数后,使模型重新生成,但图形并无显示变化;
(5)保留数据并完成在执行“依参数再生”后,将数据追加到数据库的末尾,
同时使模型重新显示生成新的图形;
(6)取消本次设计不再保留本次设计。
图7-64齿轮减速器轴参数表(部分)
图7-65轴设计对话框
取数据表中第一组参数即默认参数值,生成齿轮减速器轴零件图,如图7-66所示。
在对话框中改变参数表中的若干数据,如将轴段1直径改为40mm,轴段1长度改为50mm,轴段2直径改为80mm,轴段2长度改为20mm,点击“依参数再生”按钮后,“保留数据并完成”按钮由灰色变成黑色,再点击它即可以在原有数据库中追加新的记录,如图7-67所示,同时又可以生成新的零件图,如图7-68所示。
图7-66齿轮减速器轴零件图
图7-67改变参数后的齿轮减速器轴参数表(部分)
图7-68改变参数后的齿轮减速器轴零件图