一、引言
Solid Edge是EDS公司推出的普及型主流CAD軟件包,是EDS PLM系統(tǒng)的一個分支。基于特征的參數(shù)化、變量化設計技術,使其操作方便,簡單易學。此外,Solid Edge還為用戶提供了采用標準Windows“對象鏈接與嵌入(OLE)”技術和“部件對象模式(COM)”技術的應用程序接口,開發(fā)者和用戶能夠通過使用Visual Basic、Visual C++以及任何一種支持ActiveX Automation技術的工具,對Solid Edge進行二次開發(fā),來適應用戶的一些特殊要求,減少重復性建模制圖工作,全面擴展Solid Edge的功能或將其功能集成到客戶應用程序中,以實現(xiàn)Solid Edge的完全客戶化。本文介紹了基于ActiveX Automation技術開發(fā)Solid Edge的基本原理。
二、 ActiveX Automation技術與Solid Edge的對象層次結構
1. ActiveX Automation技術
ActiveX Automation是Microsoft公司提出的一個基于COM的技術標準,以前被稱為OLE技術,其宗旨是在windows系統(tǒng)的統(tǒng)一管理下,協(xié)調不同的應用程序,準許這些應用程序之間相互溝通、相互控制。它通過在兩個程序間安排對話,達到一個程序控制另一個程序的目的。其過程為:首先一個應用程序決定引發(fā)ActiveX Automation操作,這個應用程序自動成為C1ient,被它調用的應用程序成為Server。Server收到對話請求后,決定暴露哪些對象給 C1ient。在給定時刻,由C1ient決定實際使用哪些對象,然后ActiveX Automation命令被傳給Server,由Server對命令作出反應。Client可以持續(xù)地發(fā)出命令,Server忠實地執(zhí)行每一條命令,最后由Server提出終止對話。
這里將So1id Edge理解為一個服務程序(Server),而二次開發(fā)出來的程序為客戶程序(C1ient)。用戶只要在客戶程序上進行操作,客戶程序將驅動So1id Edge完成相關的工作,用戶無需全面掌握Solid Edge。
2.So1id Edge的對象層次結構
對象之間通過被稱為對象模型或對象層次結構的形式相互聯(lián)系。So1id Edge的對象層次結構可以描述為自上而下的樹結構,其根節(jié)點對象就是一個應用。So1id Edge擁有4種工作環(huán)境:零件(Part)、鈑金(Sheet Metal)、裝配(Assembly)和工程圖(Drdt)。其中,零件和鈑金共用一個對象層次結構,而裝配和工程圖分別擁有各自獨立的層次結構。根節(jié)點作為應用對象,是惟一一個允許開發(fā)程序直接訪問的對象,可以也只能通過該對象才能訪問其下級的所有對象。圖1所示為裝配環(huán)境的簡單對象層次結構, Application指Solid Edge應用程序,Documents是一個集合對象,它包含了前面所提到的四種工作環(huán)境。要訪問某一工作環(huán)境,首先必須得到它的文檔對象 (Document)。這里為了進入裝配環(huán)境,用到了裝配文檔對象AssemblyDocument。

圖1 簡單對象層次結構
三、 ActiveX Automation應用方法
1.引用Solid Edge類型庫
Solid Edge通過類型庫提供了大量的內部功能,以便于從Visual Basic(以下簡稱VB)等開發(fā)工具中,通過ActiveX Automdion訪問這些功能。Solid Edge提供的類型庫包括:Assembly.tlb(裝配類型庫)、constant.tlb(常數(shù)類型庫)、Drdt.tlb(制圖類型庫)、 propauto.dll(文件屬性對象庫)、framewrk.rlb(框架結構類型庫)、geometry.tlb(幾何類型庫)、part.tlb (零件和板金類型庫)等。若以VB作為開發(fā)工具,首先必須在其環(huán)境中引用Solid Edge的有關類型庫,才能通過ActiveX Automation訪問Solid Edge提供的主要對象。在VB的集成環(huán)境中,通過“工程”菜單中的“引用”命令,將所要用的庫選中,即可調用對應的類型庫(圖2),并且可以在VB的對象瀏覽器中查看對象庫、類型庫、類、屬性、方法以及事件(圖3)。

圖2 選中所需要的庫

圖3 VB的對象瀏覽器
2.調用Solid Edge應用程序
當選擇VB為一個支持ActiveX Automation的應用程序進行編程開發(fā)時,就必須和該程序進行通訊。Solid Edge提供的應用對象(Application)為實現(xiàn)這種通訊提供了可能。應用對象是惟一一個允許Visual Basic程序直接訪問的對象,它位于層次結構樹的頂部,可以也只能通過該對象才能訪問其下級的所有其他對象。
VB提供了兩個函數(shù)調用Solid Edge:CreateObject和GetObject。
Dim objApp as Object
Set objApp=CreateObject(“SolidEdge.Application”)
Set objApp =GetObject(“”,“SolidEdge.Application”)
兩個語句都創(chuàng)建不可見的Solid Edge應用對象。
下面的語句使用GetObject連接到已經存在的Solid Edge實例:
Set objApp=GetObject(,” SolidEdge.Application”)
該語句會搜索已經存在的Solid Edge實例,如果找到,變量objApp指向該實例;否則,命令失敗。
在使用CreateObject或者GetObject來驅動Solid Edge的應用時,該應用不會自動創(chuàng)建文檔對象,必須使用文檔集合對象的Add方法來建立一個文檔對象。Add方法是有參數(shù)的,該參數(shù)用于確定所創(chuàng)建的文檔對象的類型或者使用的模板。如果參數(shù)為空,程序會提示用戶選擇一個模板。下面語句的功能是在新建的應用中建立一個零件文檔對象:
Set objApp=GetObject(,” SolidEdge.Application”)
Set objDocument=obj App.Document.Add(“SolidEdge. PartDocument”)
要將一個Solid Edge的應用實例從內存中移除,則需要使用應用對象的Quit方法:
ObjApp.Quit
3.創(chuàng)建輪廓
和交互環(huán)境創(chuàng)建特征一樣,絕大多數(shù)特征需要先定義二維輪廓,再向空間拉伸形成特征。而輪廓的創(chuàng)建往往是在一個平面上進行的,所以首先要定義參考平面。定義參考平面的方法有以下幾種:
AddParallelByDistance(重合或平行平面);
AddParallelByTangent(相切平面)
AddAngularByAangle(傾斜或垂直平面);
AddNormalToCurve和AddNormalToCurveAtDistanse(法線方向平面)。
例如,下面語句就創(chuàng)建了一個與ParentPlane平面平行的參考平面objRefPlane。
Set objRefPlane=objRefPlanes. AddParallelByDistance(ParentPlane, Distance,_ NormalSide,Local)
創(chuàng)建好參考平面后,便可在參考平面上創(chuàng)建二維輪廓。一個輪廓由若干個線框因素構成,如果輪廓包括不止一個因素,則這些元素必須首尾相連,可以通過在元素端點之間增加關系來實現(xiàn)。二維輪廓的創(chuàng)建步驟如下:
(1)創(chuàng)建空的輪廓對象(Profile object);
(2)利用Solid Edge提供的直線和圓弧等對象來繪制輪廓圖;
(3)利用Relations2d集合對象設置集合圖形之間的關系;
(4)設置必要的尺寸;
(5)使用End方法驗證輪廓的有效性。
4.創(chuàng)建特征
在PartDocument環(huán)境下,利用模型集合(Models)中的不同方法對以創(chuàng)建的輪廓進行AddExtrudedProtrusion(拉伸)、AddRevolvedProtrusion(旋轉拉伸)、AddBaseHelix(螺旋拉伸)等操作創(chuàng)建出基本模型對象(Model),再利用每個基本模型對象的Chamfers(倒角)、rounds(倒圓) 、Holes(孔)、Thins(抽殼)等對象集合中的Add方法創(chuàng)建出后續(xù)的特征。
例如,語句“Set objModel = objDoc.Models. AddFiniteExtruded Protrusion(1, objProfile, both, 0.05)”表示將objProfile幾何輪廓對象雙向拉伸50mm創(chuàng)建出基本拉伸特征objModel。
語句“Set objChamf=objModel. Chamfers. AddEqualSetback(2, objEdge, 0.005)”表示對拉伸體objModel的objedge邊集合進行回切值為5mm的等邊倒角。
5. 裝配零件
在裝配文檔(AssemblyDocument)中,一個裝配體就是一個零部件的集合(Occurrences)。向裝配圖中加入零件分為兩步:第一步,利用零部件集合提供的AddByFilename方法添加一個零部件(Occurrence)。語句“Set objOccurrence=objAssmDoc. Occurrences.AddByFilename("D: chead.par")”就是表示向Occurrences裝配體中加入D盤下的零件chead。第二步,刪除加入裝配體的零件的三維關系,并設置其新的三維關系。可以通過兩個集合訪問裝配關系對象:AassemblyDocument對象中的Relations3d集合和每個零件對象的 Relations3d集合。零件的三維關系共有五種類型:AxialRelation3d用來定義回轉面之間的關系;GroundRelation3d 用來定義固定關系;PlanarRelation3d用來定義兩個平面間的關系,包括貼合和對齊;PointRelation3d用來定義裝配中點與點的連接關系;AngularRelation3d用來定義兩個對象之間的角度關系。
例如,刪除加入裝配體的零件(objOccurrence)的三維關系用語句:“Call objOccurrence. Relations3d (1).Delete”;將加入零件的孔(objReference Hole)和裝配體中一個零件的軸(objReferencePole)對齊,用語句:“Set objPoleToHole = obj Doc.Relations3d.AddAxial(obj ReferenceHole, objReferencePole,_ False)”。
四、程序運行方式
用VB技術和Solid Edge二次開發(fā)接口開發(fā)的應用程序有兩種運行方式:一是將應用程序作為可執(zhí)行文件直接運行,由程序控制Solid Edge的調入和退出。二是將程序作為一條宏命令嵌入到Solid Edge中。具體方法是:在VB的“文件”菜單中選擇“制作 .exe”,將應用程序編譯生成ActiveX Automation程序。打開Solid Edge的“工具條”對話框,按照提示新建一個工具條,確定后在出現(xiàn)的“自定義”對話框中選擇“宏”,單擊“瀏覽”,找到剛才編譯的EXE程序,拖放到新建的工具條上,并選擇合適的圖標。用戶在Solid Edge環(huán)境下,只要點擊該工具條即可運行程序。
五、開發(fā)實例
筆者用VB在Solid Edge平臺上開發(fā)了一套注塑模標準模架的自動裝配系統(tǒng),圖4為主界面。從對話框中選擇零件及其尺寸規(guī)格,系統(tǒng)將讀入參數(shù)數(shù)據(jù),修改零件庫中該零件的變量表,并存入指定文件夾。完成所有零件的選擇后,系統(tǒng)將其自動裝配在一起。

圖4 自動裝配系統(tǒng)主界面
相關文章
- 2021-09-08BIM技術叢書Revit軟件應用系列Autodesk Revit族詳解 [
- 2021-09-08全國專業(yè)技術人員計算機應用能力考試用書 AutoCAD2004
- 2021-09-08EXCEL在工作中的應用 制表、數(shù)據(jù)處理及宏應用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環(huán)境藝術制圖AutoCAD [徐幼光 編著] 2013年PDF下載
- 2021-08-29機械AutoCAD 項目教程 第3版 [繆希偉 主編] 2012年PDF