您的位置:网站首页 > CAD新闻

SolidEdge中属性块定义技术

时间:2011-02-26 10:04:18 来源:

  0 引言

  UGS公司推出SolidEdge产品是一款优秀的中端的三维CAD产品,目前在国内已经广泛使用,其三维设计功能已经得到用户的认可。其工程图设计模块所提供的二维设计功能虽然也很丰富,但其使用习惯与AutoCAD不尽相同,同时其二次开发技术还不为大家熟悉,因此SolidEdge上的应用程序开发相对较少。在实际的项目开发过程中发现SolidEdge本身没有提供块和属性块的功能。本文在分析AutoCAD中的块和属性块定义的方法和技术之后,结合实际项目开发需要提出了基于SolidEdge产品的属性块定义技术。详细的介绍在SoHdEdge环境中如何实现块和属性块的定义、块属性的定义、信息存储技术,并给出了主要算法过程的UML描述对开发基于SolidEdge产品的应用系统开发具有一定参考价值。

  1 AutoCAD中属性块的定义技术

  在AutoCAD中将块定义为绘制在几个图层上的不同特性对象的组合。这些组合后的对象作为一个整体将作为新的独立对象使用,这些方便了用户重复使用对象。当块被打散后,块的生命周期结束,但是块内的各个对象仍可以独立存在。块技术可以广泛应用于符号库和图库等软件的开发过程中。

  AutoCAD中对块操作包括块实体本身的操作和块属性的操作。块实体的处理包括:①创建块:主要是定义块对象。②修改块:添加和删除几何实体,对集合内部对象进行编辑和修改。③块的应用:将块插入到当前的图形中。

  块属性的处理包括:①块属性的处理:添加必要的属性信息到块对象,便于用户属性信息的存储和编辑,此类属性为显示信息,方便用户编辑。②扩展属性的处理:扩展属性主要用于存储用户自定义属性,此类信息多为隐式信息,一般用作系内部信息的存储,对一般用户不可见。

  2 SolidEdge二次开发接口

  在SolidEdge中没有提供专门的块定义功能,但是其提供了组Group和符号Symbol的定义功能,两种对象均可用于存储图元集合。可以利用这两个对象为基础构建块。SolidEdge提供了基于COM的二次开发接口,可以应用VB、VC、VB.NET或VC.NET,以及Java等多种工具进行二次开发。图1为SolidEdge提供的COM对象的层次关系。

  

  图1 SolidEdge对象层次关系

  2.1组对象及其特征

  由图1可知组Group在SolidEdge各级对象中的地位,其用于文档内部的图元分组,例如直线、圆、尺寸标注、剖面线,以及组都可以作为集合元素添加到组中。通过API接口分析,Group对象不存储图元的具体信息,仅仅存储图元对象的指针,并提供了如下的接口用于组内对象的添加与删除:

  void AddToGroup()

  void RemoveFromGroup();

  同时提供通用的Item方法来访问组内对象,同时通过如下的方法分类访问组内的图元集合对象:

  Dispatch*Item([in]VARIANT Index);

  Lines2d*Lines2d();

  Circles2d*Circles2d();

  利用VB调用SolidEdgeCOM接口定义组的一般方法为:

  Dim oGroups As SolidEdgeFrameworkSupport.Groups

  Dim oGroup As SolidEdgeFrameworkSupport.Group

  Dim oSelectSet As SelectSet

  Set oGroups=oSheet.Groups

  Set oSelectSet=m-oActiveDoc.SelectSet’构建选择集

  …

  Set oGroup=oGroups.Add

  对于组对象可以添加用户自定义的属性信息,在交互状态下SolidEdge允许用户输入如下文本类型的自定义属性信息。

  通过COM接口可以定义更加复杂的属性信息,用户可以构建自定义的属性集合,并可以控制属性信息的读取。SolidEdge中对象的属性信息是通过属性集集合AttributeSets来存储,在属性集集合AttributeSets中包括多个属性集AttributeSet,SolidEdge系统提供的对象属性一般存储在序号为1-5的集合属性集中。用户可以调用AttributeSets提供的Add方法构建信息的属性集合,典型过程如下:

  Dim oPropSets As SolidEdgeFramework.AttributeSets

  Dim oPropSet As SolidEdgeFramework.AttributeSet

  Set oPropSets=oBlock.AttributeSets

  Set oPropSet=oPropSets.Add(”UserProperty”)

  在每个属性集内部可以构建用户自定义的属性(Attribute),属性对象包括Name、Type和Value这3个属性。其中Name为字符串,Value为Variant类型,因此可以存储各种类型的数据。

  2.2符号对象

  符号(Symbol2d)对象在SolidEdge中代表另外一类集合对象,其主要用于存储外部文件构成的图元集合。通过Symbol2d的SourccDoc属性可获得源文件的相关信息。符号集(Symbols)提供了两种方法将外部文件插入到当前的文档中,其一是Add方法,其二为InsertSymbolAsGeometry。后一种方法将生成一个新组对象,而不是符号对象。从上述的分析看,以组Group对象为基础实现内部块对象,以符号实现外部块比较方便。

  3 SolidEdge中块技术实现

  从SolidEdge本身提供的组对象为基础构建新的类ExtBlock(如图2所示,其中SolidEdge表示为SolidEdge本身提供的对象定义),此类继承于Group类,类基本属性如表1所示。

   JPG

  图2类关系

  表1 自定义块(ExtBlock)类基本属性

  

  3.1创建块

  选择当前图形文件中的图元构建选择集合,以此为基础创建组对象,并将其转化为自定义块对象,并添加块属性。图3为块的创建过程。具体的实现方法如下:

  Dim oGroups As SolidEdgeFrameworkSupport.Groups

  Dim oGroup As SolidEdgeFrameworkSupport.Group

  Dim oSelectSet As SeleetSet

  Set oGroups=oSheet.Group

  Set oSelectSet=m -oActiveDoc.SelectSet’构建选择集

  Set oGroup=oGroups.Add

  

  图3块的创建过程

  3.2插入块

  插入块包括插入当前文件中的块和从外部文件创建块。在SolidEdge中不存在块操作,因此必须构建插入块的相关方法:

  InsertBlock(InsertionPoint,Name,XScale,YScale,ZScale,Rotation[,Password])

  图4给出了插入块的基本算法,图5给出了具体实现过程。从外部文件创建块时,需要利用Symbols对象提供的InsertSymbolAsGeometry方法,来创建Group对象,然后以此对象为基础建立块对象。

  

  图4插入块算法

  

  图5插入块实现

  3.3修改块

  利用Group对象的现有方法ungroup()为基础实现ExtB-lock对象的分解方法Explode(),块分解后即可重新定义。

  3.4块属性定义

  创建属性定义的过程如下,使用AddAttribute方法在块上创建属性定义。这个方法需要输入6个参数:属性文字的高度、属性模式、提示字符串、插入点、标记字符串和默认属性值,如表1所示。具体操作方式如下,为ExtBlock对象创建两个属性集合:①ExtBaseProperty:存储块的基本属性;②ExtUserProperty:存储块的用户自定义属性。如下为以VB代码为例说明基本属性的建立方法:

  Dim oPropSets As SolidEdgeFramework.AttributeSets

  Dim oPropSet As SolidEdgeFramework.AttributeSet

  Dim oProp As SolidEdgeFramework.Attribute

  Set oPropSets=oBlock.AttributeSets

  If oGraph2d.IsAttnibuteSetPresent(”MySEExtPmperty”)=True

  Then

  oPropSets.Remove(”MySEExtProperty”)

  End If

  Set oPropSet=oPropSets.Add(”MySEExtProperty”)

  Call oPropSet.Add(”ID”,seLong)

  Call oPropSet.Add(”class”,seStringUnicode)

  Call oPropSet.Add(”type”,seLong)

  oPropSet.Item(”index”).Value=ID

  oPropSet.Item(”class”).Value=”extBlock”

  oPropSet.Item(”type”).Value=1001

  3.5块属性读取

  在块的引用中,用户可以使用如下公共的方法来读取和保存块的属性:

  SetExtAttribute(oGraph2d As Object,csName As String,vtValue As Variant) As Long

  GetExtAttribute(oGraph2d As Object’csName As String,vtValueAs Variant)As Long

  其中csName为属性名称,vtValue为属性值。

  4应用实例

  应用本文提出的属性块技术,实现了基于SolidEdge软件的标准图纸自动生成系统,包括标准图幅选择与自动绘制,标题栏的自动绘制和编辑,明细表的自动生成和编辑。图6给出了明细表编辑的界面。目前此系统已经成功应用到企业实际工作当中,显著提高了工程图纸绘制的标准化程度和工作效率,并为以后的BOM信息汇总和提取打下了基础。

  

  图6明细表编辑

  5结束语

  本文探讨了在SolidEdge环境下实现属性块技术的方法和过程,从而弥补了SolidEdge软件本身的功能不足,并应用UML给出具体的设计过程和部分VB代码。对基于SotidEdge的标准件库、符号库等应用系统的开发具有一定的指导意义。