我想看一级黄色大片_久久亚洲国产精品一区二区_久久精品免视看国产明星_91久久青青青国产免费

您的位置:網(wǎng)站首頁(yè) > CAD新聞

基于SolidEdge的二次開發(fā)技術(shù)

時(shí)間:2011-02-25 10:06:14 來(lái)源:

  一、引言

  Solid Edge是EDS公司推出的普及型主流CAD軟件包,是EDS PLM系統(tǒng)的一個(gè)分支。基于特征的參數(shù)化、變量化設(shè)計(jì)技術(shù),使其操作方便,簡(jiǎn)單易學(xué)。此外,Solid Edge還為用戶提供了采用標(biāo)準(zhǔn)Windows“對(duì)象鏈接與嵌入(OLE)”技術(shù)和“部件對(duì)象模式(COM)”技術(shù)的應(yīng)用程序接口,開發(fā)者和用戶能夠通過(guò)使用Visual Basic、Visual C++以及任何一種支持ActiveX Automation技術(shù)的工具,對(duì)Solid Edge進(jìn)行二次開發(fā),來(lái)適應(yīng)用戶的一些特殊要求,減少重復(fù)性建模制圖工作,全面擴(kuò)展Solid Edge的功能或?qū)⑵涔δ芗傻娇蛻魬?yīng)用程序中,以實(shí)現(xiàn)Solid Edge的完全客戶化。本文介紹了基于ActiveX Automation技術(shù)開發(fā)Solid Edge的基本原理。

  二、 ActiveX Automation技術(shù)與Solid Edge的對(duì)象層次結(jié)構(gòu)

  1. ActiveX Automation技術(shù)

  ActiveX Automation是Microsoft公司提出的一個(gè)基于COM的技術(shù)標(biāo)準(zhǔn),以前被稱為OLE技術(shù),其宗旨是在windows系統(tǒng)的統(tǒng)一管理下,協(xié)調(diào)不同的應(yīng)用程序,準(zhǔn)許這些應(yīng)用程序之間相互溝通、相互控制。它通過(guò)在兩個(gè)程序間安排對(duì)話,達(dá)到一個(gè)程序控制另一個(gè)程序的目的。其過(guò)程為:首先一個(gè)應(yīng)用程序決定引發(fā)ActiveX Automation操作,這個(gè)應(yīng)用程序自動(dòng)成為C1ient,被它調(diào)用的應(yīng)用程序成為Server。Server收到對(duì)話請(qǐng)求后,決定暴露哪些對(duì)象給 C1ient。在給定時(shí)刻,由C1ient決定實(shí)際使用哪些對(duì)象,然后ActiveX Automation命令被傳給Server,由Server對(duì)命令作出反應(yīng)。Client可以持續(xù)地發(fā)出命令,Server忠實(shí)地執(zhí)行每一條命令,最后由Server提出終止對(duì)話。

  這里將So1id Edge理解為一個(gè)服務(wù)程序(Server),而二次開發(fā)出來(lái)的程序?yàn)榭蛻舫绦?C1ient)。用戶只要在客戶程序上進(jìn)行操作,客戶程序?qū)Ⅱ?qū)動(dòng)So1id Edge完成相關(guān)的工作,用戶無(wú)需全面掌握Solid Edge。

  2.So1id Edge的對(duì)象層次結(jié)構(gòu)

  對(duì)象之間通過(guò)被稱為對(duì)象模型或?qū)ο髮哟谓Y(jié)構(gòu)的形式相互聯(lián)系。So1id Edge的對(duì)象層次結(jié)構(gòu)可以描述為自上而下的樹結(jié)構(gòu),其根節(jié)點(diǎn)對(duì)象就是一個(gè)應(yīng)用。So1id Edge擁有4種工作環(huán)境:零件(Part)、鈑金(Sheet Metal)、裝配(Assembly)和工程圖(Drdt)。其中,零件和鈑金共用一個(gè)對(duì)象層次結(jié)構(gòu),而裝配和工程圖分別擁有各自獨(dú)立的層次結(jié)構(gòu)。根節(jié)點(diǎn)作為應(yīng)用對(duì)象,是惟一一個(gè)允許開發(fā)程序直接訪問(wèn)的對(duì)象,可以也只能通過(guò)該對(duì)象才能訪問(wèn)其下級(jí)的所有對(duì)象。圖1所示為裝配環(huán)境的簡(jiǎn)單對(duì)象層次結(jié)構(gòu), Application指Solid Edge應(yīng)用程序,Documents是一個(gè)集合對(duì)象,它包含了前面所提到的四種工作環(huán)境。要訪問(wèn)某一工作環(huán)境,首先必須得到它的文檔對(duì)象 (Document)。這里為了進(jìn)入裝配環(huán)境,用到了裝配文檔對(duì)象AssemblyDocument。

  

  圖1 簡(jiǎn)單對(duì)象層次結(jié)構(gòu)

  三、 ActiveX Automation應(yīng)用方法

  1.引用Solid Edge類型庫(kù)

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

  

  圖2 選中所需要的庫(kù)

  

  圖3 VB的對(duì)象瀏覽器

  2.調(diào)用Solid Edge應(yīng)用程序

  當(dāng)選擇VB為一個(gè)支持ActiveX Automation的應(yīng)用程序進(jìn)行編程開發(fā)時(shí),就必須和該程序進(jìn)行通訊。Solid Edge提供的應(yīng)用對(duì)象(Application)為實(shí)現(xiàn)這種通訊提供了可能。應(yīng)用對(duì)象是惟一一個(gè)允許Visual Basic程序直接訪問(wèn)的對(duì)象,它位于層次結(jié)構(gòu)樹的頂部,可以也只能通過(guò)該對(duì)象才能訪問(wèn)其下級(jí)的所有其他對(duì)象。

  VB提供了兩個(gè)函數(shù)調(diào)用Solid Edge:CreateObject和GetObject。

  Dim objApp as Object

  Set objApp=CreateObject(“SolidEdge.Application”)

  Set objApp =GetObject(“”,“SolidEdge.Application”)

  兩個(gè)語(yǔ)句都創(chuàng)建不可見的Solid Edge應(yīng)用對(duì)象。

  下面的語(yǔ)句使用GetObject連接到已經(jīng)存在的Solid Edge實(shí)例:

  Set objApp=GetObject(,” SolidEdge.Application”)

  該語(yǔ)句會(huì)搜索已經(jīng)存在的Solid Edge實(shí)例,如果找到,變量objApp指向該實(shí)例;否則,命令失敗。

  在使用CreateObject或者GetObject來(lái)驅(qū)動(dòng)Solid Edge的應(yīng)用時(shí),該應(yīng)用不會(huì)自動(dòng)創(chuàng)建文檔對(duì)象,必須使用文檔集合對(duì)象的Add方法來(lái)建立一個(gè)文檔對(duì)象。Add方法是有參數(shù)的,該參數(shù)用于確定所創(chuàng)建的文檔對(duì)象的類型或者使用的模板。如果參數(shù)為空,程序會(huì)提示用戶選擇一個(gè)模板。下面語(yǔ)句的功能是在新建的應(yīng)用中建立一個(gè)零件文檔對(duì)象:

  Set objApp=GetObject(,” SolidEdge.Application”)

  Set objDocument=obj App.Document.Add(“SolidEdge. PartDocument”)

  要將一個(gè)Solid Edge的應(yīng)用實(shí)例從內(nèi)存中移除,則需要使用應(yīng)用對(duì)象的Quit方法:

  ObjApp.Quit

  3.創(chuàng)建輪廓

  和交互環(huán)境創(chuàng)建特征一樣,絕大多數(shù)特征需要先定義二維輪廓,再向空間拉伸形成特征。而輪廓的創(chuàng)建往往是在一個(gè)平面上進(jìn)行的,所以首先要定義參考平面。定義參考平面的方法有以下幾種:

  AddParallelByDistance(重合或平行平面);

  AddParallelByTangent(相切平面)

  AddAngularByAangle(傾斜或垂直平面);

  AddNormalToCurve和AddNormalToCurveAtDistanse(法線方向平面)。

  例如,下面語(yǔ)句就創(chuàng)建了一個(gè)與ParentPlane平面平行的參考平面objRefPlane。

  Set objRefPlane=objRefPlanes. AddParallelByDistance(ParentPlane, Distance,_ NormalSide,Local)

  創(chuàng)建好參考平面后,便可在參考平面上創(chuàng)建二維輪廓。一個(gè)輪廓由若干個(gè)線框因素構(gòu)成,如果輪廓包括不止一個(gè)因素,則這些元素必須首尾相連,可以通過(guò)在元素端點(diǎn)之間增加關(guān)系來(lái)實(shí)現(xiàn)。二維輪廓的創(chuàng)建步驟如下:

  (1)創(chuàng)建空的輪廓對(duì)象(Profile object);

  (2)利用Solid Edge提供的直線和圓弧等對(duì)象來(lái)繪制輪廓圖;

  (3)利用Relations2d集合對(duì)象設(shè)置集合圖形之間的關(guān)系;

  (4)設(shè)置必要的尺寸;

  (5)使用End方法驗(yàn)證輪廓的有效性。

  4.創(chuàng)建特征

  在PartDocument環(huán)境下,利用模型集合(Models)中的不同方法對(duì)以創(chuàng)建的輪廓進(jìn)行AddExtrudedProtrusion(拉伸)、AddRevolvedProtrusion(旋轉(zhuǎn)拉伸)、AddBaseHelix(螺旋拉伸)等操作創(chuàng)建出基本模型對(duì)象(Model),再利用每個(gè)基本模型對(duì)象的Chamfers(倒角)、rounds(倒圓) 、Holes(孔)、Thins(抽殼)等對(duì)象集合中的Add方法創(chuàng)建出后續(xù)的特征。

  例如,語(yǔ)句“Set objModel = objDoc.Models. AddFiniteExtruded Protrusion(1, objProfile, both, 0.05)”表示將objProfile幾何輪廓對(duì)象雙向拉伸50mm創(chuàng)建出基本拉伸特征objModel。

  語(yǔ)句“Set objChamf=objModel. Chamfers. AddEqualSetback(2, objEdge, 0.005)”表示對(duì)拉伸體objModel的objedge邊集合進(jìn)行回切值為5mm的等邊倒角。

  5. 裝配零件

  在裝配文檔(AssemblyDocument)中,一個(gè)裝配體就是一個(gè)零部件的集合(Occurrences)。向裝配圖中加入零件分為兩步:第一步,利用零部件集合提供的AddByFilename方法添加一個(gè)零部件(Occurrence)。語(yǔ)句“Set objOccurrence=objAssmDoc. Occurrences.AddByFilename("D: chead.par")”就是表示向Occurrences裝配體中加入D盤下的零件chead。第二步,刪除加入裝配體的零件的三維關(guān)系,并設(shè)置其新的三維關(guān)系。可以通過(guò)兩個(gè)集合訪問(wèn)裝配關(guān)系對(duì)象:AassemblyDocument對(duì)象中的Relations3d集合和每個(gè)零件對(duì)象的 Relations3d集合。零件的三維關(guān)系共有五種類型:AxialRelation3d用來(lái)定義回轉(zhuǎn)面之間的關(guān)系;GroundRelation3d 用來(lái)定義固定關(guān)系;PlanarRelation3d用來(lái)定義兩個(gè)平面間的關(guān)系,包括貼合和對(duì)齊;PointRelation3d用來(lái)定義裝配中點(diǎn)與點(diǎn)的連接關(guān)系;AngularRelation3d用來(lái)定義兩個(gè)對(duì)象之間的角度關(guān)系。

  例如,刪除加入裝配體的零件(objOccurrence)的三維關(guān)系用語(yǔ)句:“Call objOccurrence. Relations3d (1).Delete”;將加入零件的孔(objReference Hole)和裝配體中一個(gè)零件的軸(objReferencePole)對(duì)齊,用語(yǔ)句:“Set objPoleToHole = obj Doc.Relations3d.AddAxial(obj ReferenceHole, objReferencePole,_ False)”。

  四、程序運(yùn)行方式

  用VB技術(shù)和Solid Edge二次開發(fā)接口開發(fā)的應(yīng)用程序有兩種運(yùn)行方式:一是將應(yīng)用程序作為可執(zhí)行文件直接運(yùn)行,由程序控制Solid Edge的調(diào)入和退出。二是將程序作為一條宏命令嵌入到Solid Edge中。具體方法是:在VB的“文件”菜單中選擇“制作 .exe”,將應(yīng)用程序編譯生成ActiveX Automation程序。打開Solid Edge的“工具條”對(duì)話框,按照提示新建一個(gè)工具條,確定后在出現(xiàn)的“自定義”對(duì)話框中選擇“宏”,單擊“瀏覽”,找到剛才編譯的EXE程序,拖放到新建的工具條上,并選擇合適的圖標(biāo)。用戶在Solid Edge環(huán)境下,只要點(diǎn)擊該工具條即可運(yùn)行程序。

  五、開發(fā)實(shí)例

  筆者用VB在Solid Edge平臺(tái)上開發(fā)了一套注塑模標(biāo)準(zhǔn)模架的自動(dòng)裝配系統(tǒng),圖4為主界面。從對(duì)話框中選擇零件及其尺寸規(guī)格,系統(tǒng)將讀入?yún)?shù)數(shù)據(jù),修改零件庫(kù)中該零件的變量表,并存入指定文件夾。完成所有零件的選擇后,系統(tǒng)將其自動(dòng)裝配在一起。

  

  圖4 自動(dòng)裝配系統(tǒng)主界面