基于SolidEdge企业通用零件参量化设计二次开发_第1页
基于SolidEdge企业通用零件参量化设计二次开发_第2页
基于SolidEdge企业通用零件参量化设计二次开发_第3页
基于SolidEdge企业通用零件参量化设计二次开发_第4页
基于SolidEdge企业通用零件参量化设计二次开发_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于SolidEdge企业通用零件参量化设计二次开发发表时间:2008-8-12蔡元军李春亭来源:e-works本文主要介绍了利用数据库实现SolidEdge企业通用零件的参量化开发过程。

零、

前言

随着我们企业的做强做大相应产品的设计周期和新产品的研发周期也随之缩短,这就要求我们在设计的任何阶段都要考虑工作的最大效率。在应用SolidEdge软件进行产品设计时因为没有我们企业的通用零件3D库,这样设计员在设计时需要重新设计企业通用零件从而带来了大量的重复性工作大大的降低了工作效率。为此我们需要在SolidEdge软件上进行开发建立我们的企业通用零件库。本文主要介绍应用VB进行二次开发的过程。

SolidEdge是EDS公司推出的普及型主流CAD系统,是EDSPLM系统的一个分支具有极佳的可展性和很强的易用性。软件本身还为用户提供了采用标准的Windows"对象链接与嵌入"技术和"部件对象模式"技术的应用程序接口。这样运用ActiveXAutomation技术的开发工具就可以对SolidEdge进行二次开发来到达客户化需求的目的。

一、ActiveX技术和VisualBasic在SolidEdge中的应用

1、ActiveX技术简介

COM是M$1993年做为通信机制引入的,是OLE2.0的根底。之前的OLE1.0是简单的多进程间通信方法也不是基于COM的,更早还有一种DDE技术那是更简单的通信机制了。为了使对象可以重用,M$在OLE技术的根底上搞出了Automation对象。该技术使得软件包可以将对象导出,供其它程序或脚本使用。

在这里SolidEdge可以理解成为一个效劳程序,开发出来的程序可以称为"客户程序"。也就是说客户程序在效劳程序的根底上进行二次开发的,客户程序是调用驱动Solidedge完成的,这样的话用户不需要非常全面的掌握SolidEdge。

2、对象的导出

利用VB或VC++等工具对SolidEdge进行开发时都要导出ActiveX对象,都要有一个名为Application的顶级对象,该对象在程序启动时作为Active对象而初始化。Application对象代表应用程序,它给ActiveX客户提供了绑定、浏览程序所导出的对象的方法。应用程序导出的其它对象都是Application对象的下级,它是对象继承树的根。

应用程序导出对象的方式:

使用RegisterActiveObject()注册Application对象,将把该对象参加ROT。这样ActiveX客户就可以获取一个实例而不用重新创立一个。VB提供了GetObject语句访问已经存在的对象。

3、获取活动对象

在面向对象开发时对象的获取是非常关键的,其实开发的过程就是对获取的对象进行各种处理的过程。当我们获取对象时还要知道这个对象是不是我们需要的,针对不同的开发工具查看对象的命令也不一样但是道理是一样的我们只要掌握了方法其它的就触类旁通了。

自动化提供了多种手段以标记、获取对象或应用程序的活动实例。以下是常用的几个命令:

〔1〕RegisterActiveObject,在应用程序启动时注册活动对象。

〔2〕RevokeActiveObject,在应用程序退出时停止活动对象。

〔3〕GetActiveObject,取得活动对象实例。

4、关闭活动对象

我们获取对象对他进行各种处理之后,还要在适宜的时机对其进行关闭。关闭对象是有很多技巧的并不是我们任何时候都可以关闭,结合不同的环境针对处理的过程关闭对象的时机都是相对的。这些方法需要我们在日后的开发工作中不断总结。

关闭对象通用的三种方式:

〔1〕

如果对象所在的应用程序可视,仅当响应用户明确的退出命令(如File|Exit)或ActiveX客户的等价命令时关闭。

〔2〕

当对象所在的应用程序不可视,当最后一个外部引用消失时关闭。

〔3〕

如果对象所在的应用程序可视并正被客户控制,那么在收到退出命令时应当变成不可视,这样对象仍然可用,直到所有外部引用消失才退出。

对象的导出、获取活动对象、关闭活动对象这里只是简单的介绍一下,这些方法的具体应用需要在不同的环境和工程中结合实际的需求得以实现。

5、怎样调用SolidEdge程序

利用VB来进行二次开发时必须对SolidEdge提供的应用对象〔Application〕实现通讯。

应用对象是唯一一个允许VB程序直接访问的对象,它位于层次结构树的顶部,通过该对象才能访问其下级的其它对象。我们必须在VB的开发环境中引用SolidEdge的有关类型库。这些库包括:Assembly.tlb〔装配类型库〕、constant.tlb(常数类型库)、Drdt.tlb〔制图类型库〕、propauto.dll(文件属性对象库)、framewrk..rlb(框架结构类型库)、geometry.tlb(几何类型库)、part.tlb〔零件和钣金类型库〕等等。怎样引用这些类库呢?在VB的环境中,通过"工程"菜单中的"引用"命令,将所要用的库选中即可调用〔如图1所示〕。二、Solidedge的对象层次结构

在SolidEdge中对象之间就像一个组织结构似的是有层次结构相互联系的。它的结构形式是自上而下的树状结构,最上层即根节点对象就是一个应用〔Application〕。详细的结构从SolidEdge提供的帮助文件中可以查到〔如图2所示〕。

在SolidEdge中拥有四种工作环境分别是:Part〔零件〕、Assembly〔装配〕、SheetMeta〔钣金〕、Drdt〔工程图〕。这里的零件和钣金公用一个对象层次结构,而装配和工程图各自独立拥有层次结构。图3是我根据图2生成的简单的装配层〔Assembly〕结构组织图。Application指的是Solidedge应用程序,Doucments指的是一个对象集合,类似一个数组似的存放着前面的四个环境。要访问其中的一个环境必须得到Doucments对象才能访问。AssemblyDocument就是进入到了装配环境。根据这样的层次关系就可以找到需要编辑的变量所在的类,然后应用语句获得对应的类做属性定义或者属性编辑。图3两边省略掉的是其它的层次关系不做一一介绍了。

对于程序开发者一定要会利用这个树状结构图,通过它找到相关的属性是很好的捷径否那么开发工作很难展开。如果对某些节点不是很清楚可以通过程序将其展开看看这个类或者是属性值到底是怎样的。只有确定好对象才能对其展开工作。

三、结合数据库实现零件的参量化设计

1、建立一个零件的参量化模型

创立一个"带筋板孔形吊耳"如图4所示。中间的孔径是D=80mm、半圆底座的半径是R=135mm、空的中心到底边的距离C=120、两个板厚的拉伸距离分别为S1=28mm、S2=26mm。

2、在变量表里添加变量

如图5所示,在对应的变量表里设定对应的变量及公式。在确定参量化模型时需要企业的资深专家参与设计,譬如零件的关键变量的定义以及参量的取值范围或取值方式确实定都需要专家的讨论和确认,以免对日后的设计造成错误。在讨论的过程中一定要确认变量的变化范围和方式这直接关系到整个零件的参量化设计的正确与否。

3、设计数据库

在这里我们用MicrosoftAccess数据库。新建一个数据库数据库的名字为"data_Tree",然后建几个表,其中的一个表的名字为"带筋板孔形吊耳"〔图6〕,其中表里有7个关键字分别为:type、D、B、C、R、S1、S2〔如图7所示〕。其它的表可以仿照以上方法编辑。

数据库是通过数据库控件和程序关联的,当程序触发了事件就会调用数据库里的参数来驱动SolidEdge的参量化模型。在驱动参量化的时候可以通过表的形式来完成但是这样有局限性因为这些参数都是事先指定的不能实现随机任意性。当我们要实现任意输入时还要考虑参数的取值范围,因为参数的值超过范围就不符合设计的要求。那如何实现任意输入呢?其实很简单我们首先要获取对象然后找到对象里对应的参量属性值,然后将其与界面窗口程序对应实现驱动即可。

4、创立工程编写代码

〔1〕界面及事件触发过程

界面的设计主要是考虑设计员在应用时的方便与否,我做了两个方案分别是下拉式和节点式如图8所示,经过讨论采用了节点式界面。在界面设计时主要用了7个控件分别是:TreeView、TextBox、ListBox、SEPreview、CommandButton、DirlistBox、Adodc这7个控件贯穿了整个程序。

整个事件的触发过程是:当点击TreeView的节点时先判断该节点是否是叶节点如果不是叶节点那么不激活TextBox反之激活TextBox并且将叶节点的属性值传给TextBox显示名称,点击TextBox激活ListBox将数据库里对应的表里的type的属性值全部传给ListBox并且将其显示,点击ListBox显示的值相对应的参量化动作会在后台进行并且将生成的模型显示在SEPreview上,点击标准件生成位置的浏览按钮弹出对话框在DirlistBox里选择存盘位置最后点击确定生成参量化模型。

图8--下拉式

图8--节点式〔2〕编码过程

在开发的过程中可能存在未定义的关键字我们需要对其进行检查:

OptionExplicit

同时还要定义一些数据库联接等例如:

DimmyCNAsNewADODB.Connection

DimmyRSAsNewADODB.Recordset

在NodeClick事件里要清空list选项List1.Clear,判断节点是否有节点有那么不激活代码如下所示:

IfNode.ChildrenThen

Text1.Enabled=False

Else

Text1.Enabled=True

Text1.Text=Node.Text

EndIf

在Tree_change事件里将数据库里的数据调出形成树状结构,设置表的路径将其传递给数据库控件"Adodc"。

Adodc2.RecordSource="select*from表1"

Adodc1.RecordSource="select*from表2where类别编="+Adodc2.Recordset.Fields("类别编号")+""

激活了Text之后首先得清空选项,否那么每次都会列出前一次的选项然后翻开数据库的表如下所示:

TableName=Text1.Text

myRS.OpenTableName,myCN,adOpenStatic,adLockReadOnly,-1

同时在listbox中参加所有的type字段中的内容,如下所示:

myRS.MoveFirst

DoUntilmyRS.EOF

List1.AddItemmyRS("type").Value

myRS.MoveNext

Loop

myRS.MoveFirst

还要关闭myRS否那么会导致组合框无法重新选取。

在参量化建模时有零件和钣金件两种,这样在程序里需要加以判断并且在SEPreview中显示如下所示:

IfTableName="止动垫A"OrTableName="止动垫B"OrTableName="止动垫C"Then

SEPreview1.FileName=App.Path&"\DATA\"&TableName&".psm"

Else

SEPreview1.FileName=App.Path&"\DATA\"&TableName&".par"

编码完成之后的结果如图9所示:

图9

四、结论

在应用开发工具进行SolidEdge开发时最关键的是要非常了解SolidEdge的树状结构要准确的找到开发点。开发点就像一把钥匙只有正确的找到钥匙才能翻开所需要开发的特征。在SolidEdge的帮助文档里有很详细的介绍对开发人员有很大的帮助。我们要善于总结,在看文档的时候将其繁杂的文档按类归纳结合实际工作将其应用到开发工作中,开始可能是一头雾水但是当其总结出它的规律之后你就会得心应手。

其次是对开发工具的熟悉程度,在制定开发方案及流程时需要考虑到开发工具是不是能够很好的提供支持以及在实现时是否有困难如果能解决还要考虑工作效率。在解决一个问题时最

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论