基于SQLSERVER的参数化夹具标准件库的开发技术朱浩煜秦国华叶海潮周美丹(南昌航空大学航空制造工程学院,江西南昌330063)摘要:CAFD(计算机辅助夹具设计)系统需要夹具标准件库的支持,以实现夹具设计的高效率。本文介绍了以功能强大的三维软件UG为平台,SQLSERVER数据库为存储介质,采用MFC编程方式进行UG二次开发,建立了一个可搜索、可预览的尺寸参数化驱动的夹具标准件库,从而大大提高夹具设计速度,减少重复劳动。关建词:夹具标准件库;CAFD;二次开发;参数化驱动DevelopmenttechnologyofaParameterizationStandardFixtureelementLibraryBasedonSQLSERVERZhuHao-yuQingGuo-huaYeHai-chaoZhouMei-dan(SchoolofAeronauticalandManufacturingEngineering,NanchangHangkongUniversity,NanchangJiangxi330063,China)Abstract:CAFD(ComputerAidedFixtureDesign)systemneedastandardfixturelibrarytomakethefixturedesignmoreefficient.Thisarticleintroducesastandardfixturelibrarywiththefunctionyoucansearchandpreview.UGisapowerfulthree-dimensionaldrawingsoftware.ThelibraryisworkintheUGplatform,andusethedatabasetostorage.Inordertobuildalibrarywhichthroughchangeabasedmodel’ssizeparametertowork,weneedtousetheMFCtohaveasecondarydevelopmentonUG.Thelibrary’sappearingcanreduceunnecessaryworkinthefixturedesign.Keywords:Fixtureelement;CAFD;Secondarydevelopment;parameterization1、引言随着现代化生产的不断发展,夹具设计中标准件的数量日益增多,这主要是因为采用标准件给产品的设计、制造、装配带来了很大的方便。在进行夹具设计时,设计人员会尽量考虑选用标准件,当标准件不能满足要求时,才会考虑重新设计新零件。在绘图时,标准件会在不同的位置反复地被绘制,标准件的绘制极为繁琐,而且需要反复翻阅手册查找数据,非常耗时耗力,若每次设计人员都需要重新对这些零件进行造型,设计人员必然要做许多重复性的劳动。高效率地使用标准件已成为企业提高经济效益和降低成本的必由之路[1]。因此有必要利用CAD软件的二次开发功能,开发一个夹具标准件库,在需要时将其从标准零件库中取出,既可免去繁琐的重复绘制工作,又能保证标准件的绘制的精度,提高设计效率。所以,标准件库是CAFD(计算机辅助夹具设计)系统的一个重要组成部分,也是评价CAFD系统的一个重要指标。2、标准件库的组成CAFD系统[2]往往是CAD软件内部的一个系统,是在三维CAD软件中扩展出来的一个有夹具组建、出图能力的一个子程序,因此标准件库的建立也将在CAD软件的内部进行,本文将采用UG软件。参数化标准件库的开发,还需要一个存储数据的容器,这里所选择的是SQLSERVER数据库。作为一个优秀的关系数据库管理系统,它有着强大的数据交互功能:搜索、查询、数据分析、报表、数据整合,和强大的同步功能,使标准件库的开发更灵活,可以开发出更人性化的功能。2.1标准件库的零件信息夹具标准件是在夹具设计中要经常甚至反复使用的,按功能可分为基础件、定位件、导向件、压紧件、紧固件、组合件及其它件[3]。2.2标准件库的功能结构UG参数化标准件库让UG有一个可以方便调用绘制好夹具标准件平台,所有功能都在UG内部实现,程序流程如图1所示:进入UG用户菜单可搜索的模型库模型选取模型预览构建模型搜索标准件图1程序流程图用户可以在UG内部调出并使用模型库程序,搜索模型、预览模型并通过参数化驱动的方法构建模型。3、用户菜单设计UG/OpenMenScript是UG软件提供的用户定制菜单的专用模块,其语法非常简单,包括说明块、主菜单块和下拉菜单块。通过UG/OpenMenScript可以对UG的菜单进行用户化开发,可对UG标准菜单进行添加、重组、剪裁或在UG软件中集成用户自己开发的软件功能。UG/OpenMenScript可以执行宏文件(macros)、UG/OpenAPI程序、UG/OpenGRIP程序[4]。通过MenScript开发的菜单(下拉式菜单或者弹出式菜单),可以把自己开发的应用程序无缝地嵌入到UG系统中。菜单脚本文件的扩展名为men,存放在用户路径startup文件夹下,在UG启动时自动加载,如图2所示。标准件库菜单脚本代码如下:VERSION120EDITUG_GATEWAY_MAIN_MENUBARBEFOREUG_HELPCASCADE_BUTTONLOCATORS_DESIGNLABEL模型库END_OF_BEFOREMENULOCATORS_DESIGNBUTTONFIXTURE_MODELLABEL夹具标准件ACTIONSFIXTURE_MODEL_ACTIONEND_OF_MENU图2在UG中制作的菜单实现下拉菜单与对话框的连接则需要用UG/OpenAPI中的UF_MB_add_actions函数,注册脚本中FIXTURE_MODEL_ACTION到菜单命令表中。4、可搜索的模型库4.1参数化设计参数化设计即实现零件尺寸驱动,它不仅可使CAD系统具有交互式绘图功能,还具有自动绘图的功能。目前它是CAD技术应用领域中的一个重要课题。利用参数化设计手段开发的实用产品设计系统,将己有的某种机械产品设计的经验和知识继承下来。参数化设计的模型尺寸用对应关系表示,而不需要确定具体数值;在一个模板零件中变化参数值,将自动改变所有与它相关的尺寸,并遵循约束条件;采用参数化模型,通过调整参数来修改和控制几何形状,能够自动实现产品的精确造型[5]。在UG中实现零件的参数化分三步进行:第一步,确定模板零件几何信息,在UG中建立约束表达式。固定V形块A型的几何信息如图3所示,可以看出,在手工绘图时零件的几何信息可以全部在图纸中规范的表达。而UG作为一个强大的三维制图软件可以快速地生成零件三维图形,它在标注零件几何信息时并不像手工绘图时那样规范化,并且是将零件几何信息分为两部分,一部分在草图约束中,如图3(b)所示,另一部分则是建模时产生。(a)左视图(b)俯视图图3固定V形块A型(JB/T8018.2-1999)图3(b)中的尺寸L对应UG草图约束中的P13,而尺寸B对应的是P1(见图4)。在UG中,这些草图的尺寸约束是可见的,建模时产生的约束无法从图中直接看到,但不管是哪一部分约束都可以在约束表达式中找到对应的值,如图5所示。因此,在表达式中除去草图中的约束,剩下的便是建模时产生的约束,将其记录并在零件的几何信息中找到与之对应的值,就可以得到表达式对模型的完整的约束。图4固定V形块A型草图约束图5固定V形块A型在UG中的约束表达式第二步,将零件模型及其尺寸数据存储在SQLSERVER数据库[6]中。在标准件库有大量的数据需要存储,为了数据的安全,同时也为了方便数据的使用,在建立标准件库过程将数据在SQLSERVER数据库中以表格形式存储。UG模型.prt格式文件转换为二进制数据建表存储,模板零件几何信息与不同规格零件的数据信息分别建表存储,如图7-9所示。一个UG模型对应一个几何信息表,零件的一个几何信息则对应一列数据信息。从而使每个模型的每种型号在数据库中都被有规律的存储。图7SQLSERVER中UG模型表格部分截图图8SQLSERVER中零件几何信息表格部分截图图9SQLSERVER中UG模型数据信息表格部分截图第三步,编写模型的驱动程序。在UG环境下零件驱动参数[7]的写入与提取都是借助表达式完成的。表达式可以用来控制部件特性的算术和条件语句,在参数化设计中,表达式具有十分重要的意义,它是UG中建立参数间关系的重要方式。在UG中给约速表达式赋值的功能函数是UF_MODL_edit_exp。在MicrosofeVisualC++软件中使用MFC类库和UG/OpenAPI可编写出对模型的驱动程序,其原理就是根据相同零件不同型号零件的几何信息改变表达式的值。对表达式的赋值参数则由数据库提供,通过循环算法,在SQLSERVER数据库不断的查询数据执行表达式赋值,达到整个零件尺寸驱动的目的。参数化改变的结果如图11所示。图11零件模随尺寸的参数化改变而改变在VC中连接并使用UG/OpenAPI步骤如下:1、在VC中包含UG接口的头文件和引入库文件路径,操作VC软件,Tools-Options-Includefiles与Tool-Options-Library中添加UG程序下UGOPEN文件夹路径。2、查找所用API函数对应的头文件和引入库文件,并将其包含。例如:UF_PART_save的头文件是uf_part.h,引入库文件是libufun.lib。VC与数据库连接方式有ODBC、DAO、ADO、OLEDB等,ADO(ActiveXDataObjects)是其中较为成熟的一种。在VC中用ADO方式连接SQLSERVER数据库的步骤如下:1、引入ADO库文件使用ADO前必须在工程的stdafx.h头文件里用直接引入符号#import引入ADO库文件,以使编译器能正确编译。2、初始化OLE/COM库环境ADO库是一组COM动态库,这意味应用程序在调用ADO前,必须初始化OLE/COM库环境。在MFC应用程序里,一个比较好的方法是在应用程序主类的InitInstance成员函数里初始化OLE/COM库环境,执行初始化的函数为CoInitialize。3、使用ADO接口在VC中对SQLSERVER数据库的操作要用SQL语句执行,这就要依赖于ADO接口。ADO库包含三个基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr接口。可使用全局_ConnectionPtr接口创建一个数据连接,例如:_ConnectionPtrm_pConnection;m_pConnection.CreateInstance(ADODB.Connection);_bstr_tstrConnect=Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=demo;DataSource=(local);m_pConnection-Open(strConnect,,,adModeUnknown);然后使用_CommandPtr、_RecordsetPtr接口执行存储过程和SQL语句,以实现数据的查询分析。例如:_RecordsetPtrm_pRecord;m_pRecordset.CreateInstance(__uuidof(Recordset));_bstr_tbstrSQL;m_sql=SELECT*FROMd1ORDERBYgid;m_pRecordset-Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);4.2搜索功能标准件库参数化的实现,使得可以在UG中方便地生成想要的标准件。然而标准件的数量是非常庞大的,每种标准件的型号也有很多