《基于SolidEdge企业通用零件参量化设计二次开发.docx》由会员分享,可在线阅读,更多相关《基于SolidEdge企业通用零件参量化设计二次开发.docx(5页珍藏版)》请在第一文库网上搜索。
1、基于SoIidEdge企业通用零件参量化设计二次开发发表时间:2008-8-12蔡元军李春亭来源:e-works本文主要介绍了利用数据库实现SoIidEdge企业通用零件的参量化开发过程。零、前言随着我们企业的做强做大相应产品的设计周期和新产品的研发周期也随之缩短,这就要求我们在设计的任何阶段都要考虑工作的最大效率。在应用SoIidEdge软件进行产品设计时因为没有我们企业的通用零件3D库,这样设计员在设计时需要重新设计企业通用零件从而带来了大量的重复性工作大大的降低了工作效率。为此我们需要在SO1idEdge软件上进行开发建立我们的企业通用零件库。本文主要介绍应用VB进行二次开发的过程。So
2、IidEdge是EDS公司推出的普及型主流CAD系统,是EDSP1M系统的一个分支具有极佳的可展性和很强的易用性。软件本身还为用户提供了采用标准的WindoWS”对象链接与嵌入技术和部件对象模式技术的应用程序接口。这样运用ActiveXAutomation技术的开发工具就可以对SoIidEdge进行二次开发来到达客户化需求的目的。一、AetiVeX技术和ViSUa旧asic在SOIidEdge中的应用1、ACtiVeX技术简介CC)M是M$1993年做为通信机制引入的,是C)1E20的根底。之前的C)1E1Q是简单的多进程间通信方法也不是基于Ce)M的,更早还有一种DDE技术那是更简单的通信机
3、制了。为了使对象可以重用,1/1$在C)1E技术的根底上搞出了AUtomatiOn对象。该技术使得软件包可以将对象导出,供其它程序或脚本使用。在这里SoIidEdge可以理解成为一个效劳程序,开发出来的程序可以称为“客户程序。也就是说客户程序在效劳程序的根底上进行二次开发的,客户程序是调用驱动So1idedge完成的,这样的话用户不需要非常全面的掌握SoIidEdgeo2、对象的导出利用VB或VC+等工具对SoIidEdge进行开发时都要导出ActiveX对象,都要有一个名为App1ication的顶级对象,该对象在程序启动时作为Active对象而初始化。APPIiCation对象代表应用程序
4、,它给ACtiVeX客户提供了绑定、浏览程序所导出的对象的方法。应用程序导出的其它对象都是APP1iCatiOn对象的下级,它是对象继承树的根。应用程序导出对象的方式:使用RegiSterAetiVeObjeCt()注册APP1iCatiorI对象,将把该对象参加ROTo这样AetiVeX客户就可以获取一个实例而不用重新创立一个。VB提供了GetobjeCt语句访问已经存在的对象。3、获取活动对象在面向对象开发时对象的获取是非常关键的,其实开发的过程就是对获取的对象进行各种处理的过程。当我们获取对象时还要知道这个对象是不是我们需要的,针对不同的开发工具查看对象的命令也不一样但是道理是一样的我们
5、只要掌握了方法其它的就触类旁通了。自动化提供了多种手段以标记、获取对象或应用程序的活动实例。以下是常用的几个命令:1) RegisterActiveObject,在应用程序启动时注册活动对象。2) RevokeActiveObject,在应用程序退出时停止活动对象。3) GetActiveObject,取得活动对象实例。4、关闭活动对象我们获取对象对他进行各种处理之后,还要在适宜的时机对其进行关闭。关闭对象是有很多技巧的并不是我们任何时候都可以关闭,结合不同的环境针对处理的过程关闭对象的时机都是相对的。这些方法需要我们在日后的开发工作中不断总结。关闭对象通用的三种方式:(1)如果对象所在的应用
6、程序可视,仅当响应用户明确的退出命令(如FiIeIEX让)或AetiVeX客户的等价命令时关闭。12)当对象所在的应用程序不可视,当最后一个外部引用消失时关闭。3)如果对象所在的应用程序可视并正被客户控制,那么在收到退出命令时应当变成不可视,这样对象仍然可用,直到所有外部引用消失才退出。对象的导出、获取活动对象、关闭活动对象这里只是简单的介绍一下,这些方法的具体应用需要在不同的环境和工程中结合实际的需求得以实现。5、怎样调用SOIidEdge程序利用VB来进行二次开发时必须对SoIidEdge提供的应用对象App1ication)实现通讯。应用对象是唯一一个允许VB程序直接访问的对象,它位于层
7、次结构树的顶部,通过该对象才能访问其下级的其它对象。我们必须在VB的开发环境中引用SoIidEdge的有关类型库。这些库包括:Assemb1y11b装配类型库)、COnStant.t1b(常数类型库)、Drdt.t1b制图类型库)、PrOPaUto.d11(文件属性对象库)、framewrk.r1b(框架结构类型库)、geometyt1b(几何类型库)、part.t1b零件和镀金类型库)等等。怎样引用这些类库呢?在VB的环境中,通过工程菜单中的引用命令,将所要用的库选中即可调用如图1所示)。二、SO1idedge的对象层次结构在SoIidEdge中对象之间就像一个组织结构似的是有层次结构相互联
8、系的。它的结构形式是自上而下的树状结构,最上层即根节点对象就是一个应用App1ication)。详细的结构从SOIidEdge提供的帮助文件中可以查到如图2所示)。在SO1idEdge中拥有四种工作环境分别是:Part零件)、Assemb1y装配)、SheetMeta镀金)、Drdt工程图)。这里的零件和镀金公用一个对象层次结构,而装配和工程图各自独立拥有层次结构。图3是我根据图2生成的简单的装配层fAssemb1y)结构组织图。APP1iCation指的是So1idedge应用程序,DOUCmentS指的是一个对象集合,类似一个数组似的存放着前面的四个环境。要访问其中的一个环境必须得到DoU
9、CmentS对象才能访问。AssembIyDocument就是进入到了装配环境。根据这样的层次关系就可以找到需要编辑的变量所在的类,然后应用语句获得对应的类做属性定义或者属性编辑。图3两边省略掉的是其它的层次关系不做一一介绍了。对于程序开发者一定要会利用这个树状结构图,通过它找到相关的属性是很好的捷径否那么开发工作很难展开。如果对某些节点不是很清楚可以通过程序将其展开看看这个类或者是属性值到底是怎样的。只有确定好对象才能对其展开工作。三、结合数据库实现零件的参量化设计1、建立一个零件的参量化模型创立一个带筋板孔形吊耳如图4所示0中间的孔径是D=80mm、半圆底座的半径是R=135mm、空的中心
10、到底边的距离C=I20、两个板厚的拉伸距离分别为S1=28mmS2=26mmo2、在变量表里添加变量如图5所示,在对应的变量表里设定对应的变量及公式。在确定参量化模型时需要企业的资深专家参与设计,譬如零件的关键变量的定义以及参量的取值范围或取值方式确实定都需要专家的讨论和确认,以免对日后的设计造成错误。在讨论的过程中一定要确认变量的变化范围和方式这直接关系到整个零件的参量化设计的正3、设计数据库在这里我们用MiCrOSOftACCeSS数据库。新建一个数据库数据库的名字为“data_Tree”,然后建几个表,其中的一个表的名字为带筋板孔形吊耳”图6),其中表里有7个关键字分别为:type、D、
11、B、C、R、SKS2如图7所示)。其它的表可以仿照以上方法编辑。数据库是通过数据库控件和程序关联的,当程序触发了事件就会调用数据库里的参数来驱动SoIidEdge的参量化模型。在驱动参量化的时候可以通过表的形式来完成但是这样有局限性因为这些参数都是事先指定的不能实现随机任意性。当我们要实现任意输入时还要考虑参数的取值范围,因为参数的值超过范围就不符合设计的要求。那如何实现任意输入呢?其实很简单我们首先要获取对象然后找到对象里对应的参量属性值,然后将其与界面窗口程序对应实现驱动即可。4、创立工程编写代码11)界面及事件触发过程界面的设计主要是考虑设计员在应用时的方便与否,我做了两个方案分别是下拉
12、式和节点式如图8所示,经过讨论采用了节点式界面。在界面设计时主要用了7个控件分别是:TreeViewTextBox1istBoxSEPreviewCommandButtonDir1istBoxAdodC这7个控件贯穿了整个程序。整个事件的触发过程是:当点击TreeView的节点时先判断该节点是否是叶节点如果不是叶节点那么不激活TextBox反之激活TextBox并且将叶节点的属性值传给TextBox显示名称,点击TeXtBoX激活1iStBOX将数据库里对应的表里的type的属性值全部传给1iStBOX并且将其显示,点击1iStBOX显示的值相对应的参量化动作会在后台进行并且将生成的模型显示在
13、SEPreview上,点击标准件生成位置的浏览按钮弹出对话框在DirIistBox里选择存盘位置最后点击确定生成参量化模型。图8-下拉式ra力文本厂阁供文本厂符号文本直旗文本I1既准群生成僮蟹E二,1一正.1.:芍件IW?r图8-节点式2编码过程在开发的过程中可能存在未定义的关键字我们需要对其进行检查:OptionExp1icit同时还要定义一些数据库联接等例如:DimmyCNAsNewADODB-ConnectionDimmyRSAsNewADODB-Recordset在NodeCIick事件里要清空1ist选项1ist1.C1ear,判断节点是否有节点有那么不激活代码如下所示:IfNode
14、.Chi1drenThenText1.Enab1ed=Fa1seE1seText1.Enab1ed=TrueText1.Text=Node.TextEndIf在Tree_change事件里将数据库里的数据调出形成树状结构,设置表的路径将其传递给数据库控件Adodc。Adodc2.RecordSource=se1ect*from表1*Adodc1-RecordSource=se1ect*from表2where类另IJ编=+Adodc2.Recordset.Fie1ds(类另IJ编号)+激活了TeXt之后首先得清空选项,否那么每次都会列出前一次的选项然后翻开数据库的表如下所示:TabIeName=
15、Text1.TextmyRS.OpenTabIeName,myCN,adOpenStatic,ad1ockReadOnIy,-1同时在1istbox中参加所有的type字段中的内容,如下所示:myRS.MoveFirstDoUnti1myRS.EOF1ist1.Add1temmyRS(type).Va1uemyRS.MoveNext1oopmyRS.MoveFirst还要关闭myRS否那么会导致组合框无法重新选取。在参量化建模时有零件和镀金件两种,这样在程序里需要加以判断并且在SEPreview中显示如下所示:IfTabIeName=止动垫AOrTabIeName=止动垫BOrTabIeName=止动垫CThenSEPreviewI.FiIeName=App.Path&DATA&TabIeName&.psmE1seSEPreviewI-FiIeName=App.Path&DATA&TabIeName&.par编码完成之后的结果如图9所示:图9四、结论在应用开发工具进行SoIidEdge开发时最关键的是要非常了解SoIidEdge的树状结构要准确的找到开发点。开发点就像一把钥匙只有正确的找到钥匙才能翻开所需要开发的特征。在So1idEdge的帮助文档里有很详细的介绍对开