Siemens PLM Sortware征文:基于SolidEdge企業(yè)通用零件參量化設(shè)計二次開發(fā)-產(chǎn)品創(chuàng)新數(shù)字化(PLM)-CAD-1434_第1頁
Siemens PLM Sortware征文:基于SolidEdge企業(yè)通用零件參量化設(shè)計二次開發(fā)-產(chǎn)品創(chuàng)新數(shù)字化(PLM)-CAD-1434_第2頁
Siemens PLM Sortware征文:基于SolidEdge企業(yè)通用零件參量化設(shè)計二次開發(fā)-產(chǎn)品創(chuàng)新數(shù)字化(PLM)-CAD-1434_第3頁
Siemens PLM Sortware征文:基于SolidEdge企業(yè)通用零件參量化設(shè)計二次開發(fā)-產(chǎn)品創(chuàng)新數(shù)字化(PLM)-CAD-1434_第4頁
Siemens PLM Sortware征文:基于SolidEdge企業(yè)通用零件參量化設(shè)計二次開發(fā)-產(chǎn)品創(chuàng)新數(shù)字化(PLM)-CAD-1434_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

SiemensPLMSortware征文:基于SolidEdge企業(yè)通用零件參量化設(shè)計二次開發(fā)_產(chǎn)品創(chuàng)新數(shù)字化(PLM)_CAD

零、

前言

隨著我們企業(yè)的做強做大相應(yīng)產(chǎn)品的設(shè)計周期和新產(chǎn)品的研發(fā)周期也隨之縮短,這就要求我們在設(shè)計的任何階段都要考慮工作的最大效率。在應(yīng)用SolidEdge軟件進行產(chǎn)品設(shè)計時因為沒有我們企業(yè)的通用零件3D庫,這樣設(shè)計員在設(shè)計時需要重新設(shè)計企業(yè)通用零件從而帶來了大量的重復(fù)性工作大大的降低了工作效率。為此我們需要在SolidEdge軟件上進行開發(fā)建立我們的企業(yè)通用零件庫。本文主要介紹應(yīng)用VB進行二次開發(fā)的過程。

SolidEdge是EDS公司推出的普及型主流CAD系統(tǒng),是EDSPLM系統(tǒng)的一個分支具有極佳的可展性和很強的易用性。軟件本身還為用戶提供了采用標準的Windows"對象鏈接與嵌入"技術(shù)和"部件對象模式"技術(shù)的應(yīng)用程序接口。這樣運用ActiveXAutomation技術(shù)的開發(fā)工具就可以對SolidEdge進行二次開發(fā)來達到客戶化需求的目的。

一、ActiveX技術(shù)和VisualBasic在SolidEdge中的應(yīng)用

1、ActiveX技術(shù)簡介

COM是M$1993年做為通信機制引入的,是OLE2.0的基礎(chǔ)。之前的OLE1.0是簡單的多進程間通信方法也不是基于COM的,更早還有一種DDE技術(shù)那是更簡單的通信機制了。為了使對象可以重用,M$在OLE技術(shù)的基礎(chǔ)上搞出了Automation對象。該技術(shù)使得軟件包可以將對象導(dǎo)出,供其它程序或腳本使用。

在這里SolidEdge可以理解成為一個服務(wù)程序,開發(fā)出來的程序可以稱為"客戶程序"。也就是說客戶程序在服務(wù)程序的基礎(chǔ)上進行二次開發(fā)的,客戶程序是調(diào)用驅(qū)動Solidedge完成的,這樣的話用戶不需要非常全面的掌握SolidEdge。

2、對象的導(dǎo)出

利用VB或VC++等工具對SolidEdge進行開發(fā)時都要導(dǎo)出ActiveX對象,都要有一個名為Application的頂級對象,該對象在程序啟動時作為Active對象而初始化。Application對象代表應(yīng)用程序,它給ActiveX客戶提供了綁定、瀏覽程序所導(dǎo)出的對象的方法。應(yīng)用程序?qū)С龅钠渌鼘ο蠖际茿pplication對象的下級,它是對象繼承樹的根。

應(yīng)用程序?qū)С鰧ο蟮姆绞剑?/p>

使用RegisterActiveObject()注冊Application對象,將把該對象加入ROT。這樣ActiveX客戶就可以獲取一個實例而不用重新創(chuàng)建一個。VB提供了GetObject語句訪問已經(jīng)存在的對象。

3、獲取活動對象

在面向?qū)ο箝_發(fā)時對象的獲取是非常關(guān)鍵的,其實開發(fā)的過程就是對獲取的對象進行各種處理的過程。當我們獲取對象時還要知道這個對象是不是我們需要的,針對不同的開發(fā)工具查看對象的命令也不一樣但是道理是一樣的我們只要掌握了方法其它的就觸類旁通了。

自動化提供了多種手段以標記、獲取對象或應(yīng)用程序的活動實例。以下是常用的幾個命令:

(1)RegisterActiveObject,在應(yīng)用程序啟動時注冊活動對象。

(2)RevokeActiveObject,在應(yīng)用程序退出時停止活動對象。

(3)GetActiveObject,取得活動對象實例。

4、關(guān)閉活動對象

我們獲取對象對他進行各種處理之后,還要在合適的時機對其進行關(guān)閉。關(guān)閉對象是有很多技巧的并不是我們?nèi)魏螘r候都可以關(guān)閉,結(jié)合不同的環(huán)境針對處理的過程關(guān)閉對象的時機都是相對的。這些方法需要我們在日后的開發(fā)工作中不斷總結(jié)。

關(guān)閉對象通用的三種方式:

(1)

如果對象所在的應(yīng)用程序可視,僅當響應(yīng)用戶明確的退出命令(如File|Exit)或ActiveX客戶的等價命令時關(guān)閉。

(2)

當對象所在的應(yīng)用程序不可視,當最后一個外部引用消失時關(guān)閉。

(3)

如果對象所在的應(yīng)用程序可視并正被客戶控制,則在收到退出命令時應(yīng)當變成不可視,這樣對象仍然可用,直到所有外部引用消失才退出。

對象的導(dǎo)出、獲取活動對象、關(guān)閉活動對象這里只是簡單的介紹一下,這些方法的具體應(yīng)用需要在不同的環(huán)境和工程中結(jié)合實際的需求得以實現(xiàn)。

5、怎樣調(diào)用SolidEdge程序

利用VB來進行二次開發(fā)時必須對SolidEdge提供的應(yīng)用對象(Application)實現(xiàn)通訊。

應(yīng)用對象是唯一一個允許VB程序直接訪問的對象,它位于層次結(jié)構(gòu)樹的頂部,通過該對象才能訪問其下級的其它對象。我們必須在VB的開發(fā)環(huán)境中引用SolidEdge的有關(guān)類型庫。這些庫包括:Assembly.tlb(裝配類型庫)、constant.tlb(常數(shù)類型庫)、Drdt.tlb(制圖類型庫)、propauto.dll(文件屬性對象庫)、framewrk..rlb(框架結(jié)構(gòu)類型庫)、geometry.tlb(幾何類型庫)、part.tlb(零件和鈑金類型庫)等等。怎樣引用這些類庫呢?在VB的環(huán)境中,通過"工程"菜單中的"引用"命令,將所要用的庫選中即可調(diào)用(如圖1所示)。

二、Solidedge的對象層次結(jié)構(gòu)

在SolidEdge中對象之間就像一個組織結(jié)構(gòu)似的是有層次結(jié)構(gòu)相互聯(lián)系的。它的結(jié)構(gòu)形式是自上而下的樹狀結(jié)構(gòu),最上層即根節(jié)點對象就是一個應(yīng)用(Application)。詳細的結(jié)構(gòu)從SolidEdge提供的幫助文件中可以查到(如圖2所示)。

在SolidEdge中擁有四種工作環(huán)境分別是:Part(零件)、Assembly(裝配)、SheetMeta(鈑金)、Drdt(工程圖)。這里的零件和鈑金公用一個對象層次結(jié)構(gòu),而裝配和工程圖各自獨立擁有層次結(jié)構(gòu)。圖3是我根據(jù)圖2生成的簡單的裝配層(Assembly)結(jié)構(gòu)組織圖。Application指的是Solidedge應(yīng)用程序,Doucments指的是一個對象集合,類似一個數(shù)組似的存放著前面的四個環(huán)境。要訪問其中的一個環(huán)境必須得到Doucments對象才能訪問。AssemblyDocument就是進入到了裝配環(huán)境。根據(jù)這樣的層次關(guān)系就可以找到需要編輯的變量所在的類,然后應(yīng)用語句獲得對應(yīng)的類做屬性定義或者屬性編輯。圖3兩邊省略掉的是其它的層次關(guān)系不做一一介紹了。

對于程序開發(fā)者一定要會利用這個樹狀結(jié)構(gòu)圖,通過它找到相關(guān)的屬性是很好的捷徑否則開發(fā)工作很難展開。如果對某些節(jié)點不是很清楚可以通過程序?qū)⑵湔归_看看這個類或者是屬性值到底是怎樣的。只有確定好對象才能對其展開工作。

三、結(jié)合數(shù)據(jù)庫實現(xiàn)零件的參量化設(shè)計

1、建立一個零件的參量化模型

創(chuàng)建一個"帶筋板孔形吊耳"如圖4所示。中間的孔徑是D=80mm、半圓底座的半徑是R=135mm、空的中心到底邊的距離C=120、兩個板厚的拉伸距離分別為S1=28mm、S2=26mm。

2、在變量表里添加變量

如圖5所示,在對應(yīng)的變量表里設(shè)定對應(yīng)的變量及公式。在確定參量化模型時需要企業(yè)的資深專家參與設(shè)計,譬如零件的關(guān)鍵變量的定義以及參量的取值范圍或取值方式的確定都需要專家的討論和確認,以免對日后的設(shè)計造成錯誤。在討論的過程中一定要確認變量的變化范圍和方式這直接關(guān)系到整個零件的參量化設(shè)計的正確與否。

3、設(shè)計數(shù)據(jù)庫

在這里我們用MicrosoftAccess數(shù)據(jù)庫。新建一個數(shù)據(jù)庫數(shù)據(jù)庫的名字為"data_Tree",然后建幾個表,其中的一個表的名字為"帶筋板孔形吊耳"(圖6),其中表里有7個關(guān)鍵字分別為:type、D、B、C、R、S1、S2(如圖7所示)。其它的表可以仿照以上方法編輯。

數(shù)據(jù)庫是通過數(shù)據(jù)庫控件和程序關(guān)聯(lián)的,當程序觸發(fā)了事件就會調(diào)用數(shù)據(jù)庫里的參數(shù)來驅(qū)動SolidEdge的參量化模型。在驅(qū)動參量化的時候可以通過表的形式來完成但是這樣有局限性因為這些參數(shù)都是事先指定的不能實現(xiàn)隨機任意性。當我們要實現(xiàn)任意輸入時還要考慮參數(shù)的取值范圍,因為參數(shù)的值超過范圍就不符合設(shè)計的要求。那如何實現(xiàn)任意輸入呢?其實很簡單我們首先要獲取對象然后找到對象里對應(yīng)的參量屬性值,然后將其與界面窗口程序?qū)?yīng)實現(xiàn)驅(qū)動即可。

4、創(chuàng)建工程編寫代碼

(1)界面及事件觸發(fā)過程

界面的設(shè)計主要是考慮設(shè)計員在應(yīng)用時的方便與否,我做了兩個方案分別是下拉式和節(jié)點式如圖8所示,經(jīng)過討論采用了節(jié)點式界面。在界面設(shè)計時主要用了7個控件分別是:TreeView、TextBox、ListBox、SEPreview、CommandButton、DirlistBox、Adodc這7個控件貫通了整個程序。

整個事件的觸發(fā)過程是:當點擊TreeView的節(jié)點時先判斷該節(jié)點是否是葉節(jié)點如果不是葉節(jié)點則不激活TextBox反之激活TextBox并且將葉節(jié)點的屬性值傳給TextBox顯示名稱,點擊TextBox激活ListBox將數(shù)據(jù)庫里對應(yīng)的表里的type的屬性值全部傳給ListBox并且將其顯示,點擊ListBox顯示的值相對應(yīng)的參量化動作會在后臺進行并且將生成的模型顯示在SEPreview上,點擊標準件生成位置的瀏覽按鈕彈出對話框在DirlistBox里選擇存盤位置最后點擊確定生成參量化模型。

圖8--下拉式

圖8--節(jié)點式

(2)編碼過程

在開發(fā)的過程中可能存在未定義的關(guān)鍵字我們需要對其進行檢查:

OptionExplicit

同時還要定義一些數(shù)據(jù)庫聯(lián)接等例如:

DimmyCNAsNewADODB.Connection

DimmyRSAsNewADODB.Recordset

在NodeClick事件里要清空list選項List1.Clear,判斷節(jié)點是否有節(jié)點有則不激活代碼如下所示:

IfNode.ChildrenThen

Text1.Enabled=False

Else

Text1.Enabled=True

Text1.Text=Node.Text

EndIf

在Tree_change事件里將數(shù)據(jù)庫里的數(shù)據(jù)調(diào)出形成樹狀結(jié)構(gòu),設(shè)置表的路徑將其傳遞給數(shù)據(jù)庫控件"Adodc"。

Adodc2.RecordSource="select*from表1"

Adodc1.RecordSource="select*from表2where類別編="+Adodc2.Recordset.Fields("類別編號")+""

激活了Text之后首先得清空選項,否則每次都會列出前一次的選項然后打開數(shù)據(jù)庫的表如下所示:

TableName=Text1.Text

myRS.OpenTableName,myCN,adOpenStatic,adLockReadOnly,-1

同時在listbox中加入所有的type字段中的內(nèi)容,如下所示:

myRS.MoveFirst

DoUntilmyRS.EOF

List1.AddItemmyRS("type").Value

myRS.MoveNext

Loop

myRS.MoveFirst

還要關(guān)閉myRS否則會導(dǎo)致組合框無法重新選取。

在參量化建模時有零件和鈑金件兩種,這樣在程序里需要加以判斷并且在SEPreview中顯示如下所示:

IfTableName="止動墊A"OrTableName="止動墊B"OrTableName="止動墊C"Then

SEPreview1.FileName=App.Path&"\DATA\"&TableName&".psm"

Else

SEPreview1.FileName=App.Path&"\DATA\"&TableName&".par"

編碼完成之后的結(jié)果如圖9所示:

圖9

四、結(jié)論

在應(yīng)用開發(fā)工具進行SolidEdge開發(fā)時最關(guān)鍵的是要非常了解SolidEdge的樹狀結(jié)構(gòu)要準確的找到開發(fā)點。開發(fā)點就像一把鑰匙只有正確的找到鑰匙才能打開所需要開發(fā)的特征。在SolidEdge的幫助文檔里有很詳細的介紹對開發(fā)人員有很大的幫助。我們要善于總結(jié),在看文檔的時候?qū)⑵浞彪s的文檔按類歸納結(jié)合實際工作將其應(yīng)用到開發(fā)工作中,開始可能是一頭霧水但是當其總結(jié)出它的規(guī)律之后你就會得心應(yīng)手。

其次是對開發(fā)工具的熟悉程度,在制定開發(fā)計劃及流程時需要考慮到開發(fā)工具是不是能夠很好的提供支持以及在實現(xiàn)時是否有困難如果能解決還要考慮工作效率。在解決一個問題時最好用最簡潔的代碼解決不要把問題復(fù)雜化這就需要我們有很好的編程經(jīng)驗。而編程經(jīng)驗的取得只有做大量的開發(fā)工作才能積累經(jīng)驗在錯誤中成長錯誤的積累換來你的成功。俗話說"十年磨一劍"特別是做開發(fā)工作就是在錯誤中茁壯成長。我們要做好與錯誤做斗爭的心里準備要知難而上。

[參考文獻]

[1]續(xù)丹陶唐飛黃勝,SolidEdge基礎(chǔ)與實踐教程,清華大學(xué)出版社,2005年9月第1版

[2]曾琦,VisualBasic6.0編程實例與技巧,中國水利水電出版社,1998年10月第1版

[3]張建澄黃勝王天翔,SolidEdge高級篇,機械工業(yè)出版社,2004年1月第1版

零、

前言

隨著我們企業(yè)的做強做大相應(yīng)產(chǎn)品的設(shè)計周期和新產(chǎn)品的研發(fā)周期也隨之縮短,這就要求我們在設(shè)計的任何階段都要考慮工作的最大效率。在應(yīng)用SolidEdge軟件進行產(chǎn)品設(shè)計時因為沒有我們企業(yè)的通用零件3D庫,這樣設(shè)計員在設(shè)計時需要重新設(shè)計企業(yè)通用零件從而帶來了大量的重復(fù)性工作大大的降低了工作效率。為此我們需要在SolidEdge軟件上進行開發(fā)建立我們的企業(yè)通用零件庫。本文主要介紹應(yīng)用VB進行二次開發(fā)的過程。

SolidEdge是EDS公司推出的普及型主流CAD系統(tǒng),是EDSPLM系統(tǒng)的一個分支具有極佳的可展性和很強的易用性。軟件本身還為用戶提供了采用標準的Windows"對象鏈接與嵌入"技術(shù)和"部件對象模式"技術(shù)的應(yīng)用程序接口。這樣運用ActiveXAutomation技術(shù)的開發(fā)工具就可以對SolidEdge進行二次開發(fā)來達到客戶化需求的目的。

一、ActiveX技術(shù)和VisualBasic在SolidEdge中的應(yīng)用

1、ActiveX技術(shù)簡介

COM是M$1993年做為通信機制引入的,是OLE2.0的基礎(chǔ)。之前的OLE1.0是簡單的多進程間通信方法也不是基于COM的,更早還有一種DDE技術(shù)那是更簡單的通信機制了。為了使對象可以重用,M$在OLE技術(shù)的基礎(chǔ)上搞出了Automation對象。該技術(shù)使得軟件包可以將對象導(dǎo)出,供其它程序或腳本使用。

在這里SolidEdge可以理解成為一個服務(wù)程序,開發(fā)出來的程序可以稱為"客戶程序"。也就是說客戶程序在服務(wù)程序的基礎(chǔ)上進行二次開發(fā)的,客戶程序是調(diào)用驅(qū)動Solidedge完成的,這樣的話用戶不需要非常全面的掌握SolidEdge。

2、對象的導(dǎo)出

利用VB或VC++等工具對SolidEdge進行開發(fā)時都要導(dǎo)出ActiveX對象,都要有一個名為Application的頂級對象,該對象在程序啟動時作為Active對象而初始化。Application對象代表應(yīng)用程序,它給ActiveX客戶提供了綁定、瀏覽程序所導(dǎo)出的對象的方法。應(yīng)用程序?qū)С龅钠渌鼘ο蠖际茿pplication對象的下級,它是對象繼承樹的根。

應(yīng)用程序?qū)С鰧ο蟮姆绞剑?/p>

使用RegisterActiveObject()注冊Application對象,將把該對象加入ROT。這樣ActiveX客戶就可以獲取一個實例而不用重新創(chuàng)建一個。VB提供了GetObject語句訪問已經(jīng)存在的對象。

3、獲取活動對象

在面向?qū)ο箝_發(fā)時對象的獲取是非常關(guān)鍵的,其實開發(fā)的過程就是對獲取的對象進行各種處理的過程。當我們獲取對象時還要知道這個對象是不是我們需要的,針對不同的開發(fā)工具查看對象的命令也不一樣但是道理是一樣的我們只要掌握了方法其它的就觸類旁通了。

自動化提供了多種手段以標記、獲取對象或應(yīng)用程序的活動實例。以下是常用的幾個命令:

(1)RegisterActiveObject,在應(yīng)用程序啟動時注冊活動對象。

(2)RevokeActiveObject,在應(yīng)用程序退出時停止活動對象。

(3)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論