0 引言
UGS公司推出SolidEdge產(chǎn)品是一款優(yōu)秀的中端的三維CAD產(chǎn)品,目前在國內(nèi)已經(jīng)廣泛使用,其三維設(shè)計(jì)功能已經(jīng)得到用戶的認(rèn)可。其工程圖設(shè)計(jì)模塊所提供的二維設(shè)計(jì)功能雖然也很豐富,但其使用習(xí)慣與AutoCAD不盡相同,同時(shí)其二次開發(fā)技術(shù)還不為大家熟悉,因此SolidEdge上的應(yīng)用程序開發(fā)相對較少。在實(shí)際的項(xiàng)目開發(fā)過程中發(fā)現(xiàn)SolidEdge本身沒有提供塊和屬性塊的功能。本文在分析AutoCAD中的塊和屬性塊定義的方法和技術(shù)之后,結(jié)合實(shí)際項(xiàng)目開發(fā)需要提出了基于SolidEdge產(chǎn)品的屬性塊定義技術(shù)。詳細(xì)的介紹在SoHdEdge環(huán)境中如何實(shí)現(xiàn)塊和屬性塊的定義、塊屬性的定義、信息存儲(chǔ)技術(shù),并給出了主要算法過程的UML描述對開發(fā)基于SolidEdge產(chǎn)品的應(yīng)用系統(tǒng)開發(fā)具有一定參考價(jià)值。
1 AutoCAD中屬性塊的定義技術(shù)
在AutoCAD中將塊定義為繪制在幾個(gè)圖層上的不同特性對象的組合。這些組合后的對象作為一個(gè)整體將作為新的獨(dú)立對象使用,這些方便了用戶重復(fù)使用對象。當(dāng)塊被打散后,塊的生命周期結(jié)束,但是塊內(nèi)的各個(gè)對象仍可以獨(dú)立存在。塊技術(shù)可以廣泛應(yīng)用于符號庫和圖庫等軟件的開發(fā)過程中。
AutoCAD中對塊操作包括塊實(shí)體本身的操作和塊屬性的操作。塊實(shí)體的處理包括:①創(chuàng)建塊:主要是定義塊對象。②修改塊:添加和刪除幾何實(shí)體,對集合內(nèi)部對象進(jìn)行編輯和修改。③塊的應(yīng)用:將塊插入到當(dāng)前的圖形中。
塊屬性的處理包括:①塊屬性的處理:添加必要的屬性信息到塊對象,便于用戶屬性信息的存儲(chǔ)和編輯,此類屬性為顯示信息,方便用戶編輯。②擴(kuò)展屬性的處理:擴(kuò)展屬性主要用于存儲(chǔ)用戶自定義屬性,此類信息多為隱式信息,一般用作系內(nèi)部信息的存儲(chǔ),對一般用戶不可見。
2 SolidEdge二次開發(fā)接口
在SolidEdge中沒有提供專門的塊定義功能,但是其提供了組Group和符號Symbol的定義功能,兩種對象均可用于存儲(chǔ)圖元集合。可以利用這兩個(gè)對象為基礎(chǔ)構(gòu)建塊。SolidEdge提供了基于COM的二次開發(fā)接口,可以應(yīng)用VB、VC、VB.NET或VC.NET,以及Java等多種工具進(jìn)行二次開發(fā)。圖1為SolidEdge提供的COM對象的層次關(guān)系。
圖1 SolidEdge對象層次關(guān)系
2.1組對象及其特征
由圖1可知組Group在SolidEdge各級對象中的地位,其用于文檔內(nèi)部的圖元分組,例如直線、圓、尺寸標(biāo)注、剖面線,以及組都可以作為集合元素添加到組中。通過API接口分析,Group對象不存儲(chǔ)圖元的具體信息,僅僅存儲(chǔ)圖元對象的指針,并提供了如下的接口用于組內(nèi)對象的添加與刪除:
void AddToGroup()
void RemoveFromGroup();
同時(shí)提供通用的Item方法來訪問組內(nèi)對象,同時(shí)通過如下的方法分類訪問組內(nèi)的圖元集合對象:
Dispatch*Item([in]VARIANT Index);
Lines2d*Lines2d();
Circles2d*Circles2d();
利用VB調(diào)用SolidEdgeCOM接口定義組的一般方法為:
Dim oGroups As SolidEdgeFrameworkSupport.Groups
Dim oGroup As SolidEdgeFrameworkSupport.Group
Dim oSelectSet As SelectSet
Set oGroups=oSheet.Groups
Set oSelectSet=m-oActiveDoc.SelectSet’構(gòu)建選擇集
…
Set oGroup=oGroups.Add
對于組對象可以添加用戶自定義的屬性信息,在交互狀態(tài)下SolidEdge允許用戶輸入如下文本類型的自定義屬性信息。
通過COM接口可以定義更加復(fù)雜的屬性信息,用戶可以構(gòu)建自定義的屬性集合,并可以控制屬性信息的讀取。SolidEdge中對象的屬性信息是通過屬性集集合AttributeSets來存儲(chǔ),在屬性集集合AttributeSets中包括多個(gè)屬性集AttributeSet,SolidEdge系統(tǒng)提供的對象屬性一般存儲(chǔ)在序號為1-5的集合屬性集中。用戶可以調(diào)用AttributeSets提供的Add方法構(gòu)建信息的屬性集合,典型過程如下:
Dim oPropSets As SolidEdgeFramework.AttributeSets
Dim oPropSet As SolidEdgeFramework.AttributeSet
Set oPropSets=oBlock.AttributeSets
Set oPropSet=oPropSets.Add(”UserProperty”)
在每個(gè)屬性集內(nèi)部可以構(gòu)建用戶自定義的屬性(Attribute),屬性對象包括Name、Type和Value這3個(gè)屬性。其中Name為字符串,Value為Variant類型,因此可以存儲(chǔ)各種類型的數(shù)據(jù)。
2.2符號對象
符號(Symbol2d)對象在SolidEdge中代表另外一類集合對象,其主要用于存儲(chǔ)外部文件構(gòu)成的圖元集合。通過Symbol2d的SourccDoc屬性可獲得源文件的相關(guān)信息。符號集(Symbols)提供了兩種方法將外部文件插入到當(dāng)前的文檔中,其一是Add方法,其二為InsertSymbolAsGeometry。后一種方法將生成一個(gè)新組對象,而不是符號對象。從上述的分析看,以組Group對象為基礎(chǔ)實(shí)現(xiàn)內(nèi)部塊對象,以符號實(shí)現(xiàn)外部塊比較方便。
3 SolidEdge中塊技術(shù)實(shí)現(xiàn)
從SolidEdge本身提供的組對象為基礎(chǔ)構(gòu)建新的類ExtBlock(如圖2所示,其中SolidEdge表示為SolidEdge本身提供的對象定義),此類繼承于Group類,類基本屬性如表1所示。
圖2類關(guān)系
表1 自定義塊(ExtBlock)類基本屬性
3.1創(chuàng)建塊
選擇當(dāng)前圖形文件中的圖元構(gòu)建選擇集合,以此為基礎(chǔ)創(chuàng)建組對象,并將其轉(zhuǎn)化為自定義塊對象,并添加塊屬性。圖3為塊的創(chuàng)建過程。具體的實(shí)現(xiàn)方法如下:
Dim oGroups As SolidEdgeFrameworkSupport.Groups
Dim oGroup As SolidEdgeFrameworkSupport.Group
Dim oSelectSet As SeleetSet
Set oGroups=oSheet.Group
Set oSelectSet=m -oActiveDoc.SelectSet’構(gòu)建選擇集
Set oGroup=oGroups.Add
圖3塊的創(chuàng)建過程
3.2插入塊
插入塊包括插入當(dāng)前文件中的塊和從外部文件創(chuàng)建塊。在SolidEdge中不存在塊操作,因此必須構(gòu)建插入塊的相關(guān)方法:
InsertBlock(InsertionPoint,Name,XScale,YScale,ZScale,Rotation[,Password])
圖4給出了插入塊的基本算法,圖5給出了具體實(shí)現(xiàn)過程。從外部文件創(chuàng)建塊時(shí),需要利用Symbols對象提供的InsertSymbolAsGeometry方法,來創(chuàng)建Group對象,然后以此對象為基礎(chǔ)建立塊對象。
圖4插入塊算法
圖5插入塊實(shí)現(xiàn)
3.3修改塊
利用Group對象的現(xiàn)有方法ungroup()為基礎(chǔ)實(shí)現(xiàn)ExtB-lock對象的分解方法Explode(),塊分解后即可重新定義。
3.4塊屬性定義
創(chuàng)建屬性定義的過程如下,使用AddAttribute方法在塊上創(chuàng)建屬性定義。這個(gè)方法需要輸入6個(gè)參數(shù):屬性文字的高度、屬性模式、提示字符串、插入點(diǎn)、標(biāo)記字符串和默認(rèn)屬性值,如表1所示。具體操作方式如下,為ExtBlock對象創(chuàng)建兩個(gè)屬性集合:①ExtBaseProperty:存儲(chǔ)塊的基本屬性;②ExtUserProperty:存儲(chǔ)塊的用戶自定義屬性。如下為以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應(yīng)用實(shí)例
應(yīng)用本文提出的屬性塊技術(shù),實(shí)現(xiàn)了基于SolidEdge軟件的標(biāo)準(zhǔn)圖紙自動(dòng)生成系統(tǒng),包括標(biāo)準(zhǔn)圖幅選擇與自動(dòng)繪制,標(biāo)題欄的自動(dòng)繪制和編輯,明細(xì)表的自動(dòng)生成和編輯。圖6給出了明細(xì)表編輯的界面。目前此系統(tǒng)已經(jīng)成功應(yīng)用到企業(yè)實(shí)際工作當(dāng)中,顯著提高了工程圖紙繪制的標(biāo)準(zhǔn)化程度和工作效率,并為以后的BOM信息匯總和提取打下了基礎(chǔ)。
圖6明細(xì)表編輯
5結(jié)束語
本文探討了在SolidEdge環(huán)境下實(shí)現(xiàn)屬性塊技術(shù)的方法和過程,從而彌補(bǔ)了SolidEdge軟件本身的功能不足,并應(yīng)用UML給出具體的設(shè)計(jì)過程和部分VB代碼。對基于SotidEdge的標(biāo)準(zhǔn)件庫、符號庫等應(yīng)用系統(tǒng)的開發(fā)具有一定的指導(dǎo)意義。
相關(guān)文章
- 2021-09-08BIM技術(shù)叢書Revit軟件應(yīng)用系列Autodesk Revit族詳解 [
- 2021-09-08全國專業(yè)技術(shù)人員計(jì)算機(jī)應(yīng)用能力考試用書 AutoCAD2004
- 2021-09-08EXCEL在工作中的應(yīng)用 制表、數(shù)據(jù)處理及宏應(yīng)用PDF下載
- 2021-08-30從零開始AutoCAD 2014中文版機(jī)械制圖基礎(chǔ)培訓(xùn)教程 [李
- 2021-08-30從零開始AutoCAD 2014中文版建筑制圖基礎(chǔ)培訓(xùn)教程 [朱
- 2021-08-30電氣CAD實(shí)例教程AutoCAD 2010中文版 [左昉 等編著] 20
- 2021-08-30電影風(fēng)暴2:Maya影像實(shí)拍與三維合成攻略PDF下載
- 2021-08-30高等院校藝術(shù)設(shè)計(jì)案例教程中文版AutoCAD 建筑設(shè)計(jì)案例
- 2021-08-29環(huán)境藝術(shù)制圖AutoCAD [徐幼光 編著] 2013年P(guān)DF下載
- 2021-08-29機(jī)械A(chǔ)utoCAD 項(xiàng)目教程 第3版 [繆希偉 主編] 2012年P(guān)DF