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所示。
图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的标准件库、符号库等应用系统的开发具有一定的指导意义。
相关文章
- 2021-09-08BIM技术丛书Revit软件应用系列Autodesk Revit族详解 [
- 2021-09-08全国专业技术人员计算机应用能力考试用书 AutoCAD2004
- 2021-09-08EXCEL在工作中的应用 制表、数据处理及宏应用PDF下载
- 2021-08-30从零开始AutoCAD 2014中文版机械制图基础培训教程 [李
- 2021-08-30从零开始AutoCAD 2014中文版建筑制图基础培训教程 [朱
- 2021-08-30电气CAD实例教程AutoCAD 2010中文版 [左昉 等编著] 20
- 2021-08-30电影风暴2:Maya影像实拍与三维合成攻略PDF下载
- 2021-08-30高等院校艺术设计案例教程中文版AutoCAD 建筑设计案例
- 2021-08-29环境艺术制图AutoCAD [徐幼光 编著] 2013年PDF下载
- 2021-08-29机械AutoCAD 项目教程 第3版 [缪希伟 主编] 2012年PDF