下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于SolidEdge企業(yè)通用零件參量化設(shè)計(jì)二次開發(fā)發(fā)表時(shí)間:2008-8-12蔡元軍李春亭來(lái)源:e-works本文主要介紹了利用數(shù)據(jù)庫(kù)實(shí)現(xiàn)SolidEdge企業(yè)通用零件的參量化開發(fā)過(guò)程。
零、
前言
隨著我們企業(yè)的做強(qiáng)做大相應(yīng)產(chǎn)品的設(shè)計(jì)周期和新產(chǎn)品的研發(fā)周期也隨之縮短,這就要求我們?cè)谠O(shè)計(jì)的任何階段都要考慮工作的最大效率。在應(yīng)用SolidEdge軟件進(jìn)行產(chǎn)品設(shè)計(jì)時(shí)因?yàn)闆]有我們企業(yè)的通用零件3D庫(kù),這樣設(shè)計(jì)員在設(shè)計(jì)時(shí)需要重新設(shè)計(jì)企業(yè)通用零件從而帶來(lái)了大量的重復(fù)性工作大大的降低了工作效率。為此我們需要在SolidEdge軟件上進(jìn)行開發(fā)建立我們的企業(yè)通用零件庫(kù)。本文主要介紹應(yīng)用VB進(jìn)行二次開發(fā)的過(guò)程。
SolidEdge是EDS公司推出的普及型主流CAD系統(tǒng),是EDSPLM系統(tǒng)的一個(gè)分支具有極佳的可展性和很強(qiáng)的易用性。軟件本身還為用戶提供了采用標(biāo)準(zhǔn)的Windows"對(duì)象鏈接與嵌入"技術(shù)和"部件對(duì)象模式"技術(shù)的應(yīng)用程序接口。這樣運(yùn)用ActiveXAutomation技術(shù)的開發(fā)工具就可以對(duì)SolidEdge進(jìn)行二次開發(fā)來(lái)到達(dá)客戶化需求的目的。
一、ActiveX技術(shù)和VisualBasic在SolidEdge中的應(yīng)用
1、ActiveX技術(shù)簡(jiǎn)介
COM是M$1993年做為通信機(jī)制引入的,是OLE2.0的根底。之前的OLE1.0是簡(jiǎn)單的多進(jìn)程間通信方法也不是基于COM的,更早還有一種DDE技術(shù)那是更簡(jiǎn)單的通信機(jī)制了。為了使對(duì)象可以重用,M$在OLE技術(shù)的根底上搞出了Automation對(duì)象。該技術(shù)使得軟件包可以將對(duì)象導(dǎo)出,供其它程序或腳本使用。
在這里SolidEdge可以理解成為一個(gè)效勞程序,開發(fā)出來(lái)的程序可以稱為"客戶程序"。也就是說(shuō)客戶程序在效勞程序的根底上進(jìn)行二次開發(fā)的,客戶程序是調(diào)用驅(qū)動(dòng)Solidedge完成的,這樣的話用戶不需要非常全面的掌握SolidEdge。
2、對(duì)象的導(dǎo)出
利用VB或VC++等工具對(duì)SolidEdge進(jìn)行開發(fā)時(shí)都要導(dǎo)出ActiveX對(duì)象,都要有一個(gè)名為Application的頂級(jí)對(duì)象,該對(duì)象在程序啟動(dòng)時(shí)作為Active對(duì)象而初始化。Application對(duì)象代表應(yīng)用程序,它給ActiveX客戶提供了綁定、瀏覽程序所導(dǎo)出的對(duì)象的方法。應(yīng)用程序?qū)С龅钠渌鼘?duì)象都是Application對(duì)象的下級(jí),它是對(duì)象繼承樹的根。
應(yīng)用程序?qū)С鰧?duì)象的方式:
使用RegisterActiveObject()注冊(cè)Application對(duì)象,將把該對(duì)象參加ROT。這樣ActiveX客戶就可以獲取一個(gè)實(shí)例而不用重新創(chuàng)立一個(gè)。VB提供了GetObject語(yǔ)句訪問(wèn)已經(jīng)存在的對(duì)象。
3、獲取活動(dòng)對(duì)象
在面向?qū)ο箝_發(fā)時(shí)對(duì)象的獲取是非常關(guān)鍵的,其實(shí)開發(fā)的過(guò)程就是對(duì)獲取的對(duì)象進(jìn)行各種處理的過(guò)程。當(dāng)我們獲取對(duì)象時(shí)還要知道這個(gè)對(duì)象是不是我們需要的,針對(duì)不同的開發(fā)工具查看對(duì)象的命令也不一樣但是道理是一樣的我們只要掌握了方法其它的就觸類旁通了。
自動(dòng)化提供了多種手段以標(biāo)記、獲取對(duì)象或應(yīng)用程序的活動(dòng)實(shí)例。以下是常用的幾個(gè)命令:
〔1〕RegisterActiveObject,在應(yīng)用程序啟動(dòng)時(shí)注冊(cè)活動(dòng)對(duì)象。
〔2〕RevokeActiveObject,在應(yīng)用程序退出時(shí)停止活動(dòng)對(duì)象。
〔3〕GetActiveObject,取得活動(dòng)對(duì)象實(shí)例。
4、關(guān)閉活動(dòng)對(duì)象
我們獲取對(duì)象對(duì)他進(jìn)行各種處理之后,還要在適宜的時(shí)機(jī)對(duì)其進(jìn)行關(guān)閉。關(guān)閉對(duì)象是有很多技巧的并不是我們?nèi)魏螘r(shí)候都可以關(guān)閉,結(jié)合不同的環(huán)境針對(duì)處理的過(guò)程關(guān)閉對(duì)象的時(shí)機(jī)都是相對(duì)的。這些方法需要我們?cè)谌蘸蟮拈_發(fā)工作中不斷總結(jié)。
關(guān)閉對(duì)象通用的三種方式:
〔1〕
如果對(duì)象所在的應(yīng)用程序可視,僅當(dāng)響應(yīng)用戶明確的退出命令(如File|Exit)或ActiveX客戶的等價(jià)命令時(shí)關(guān)閉。
〔2〕
當(dāng)對(duì)象所在的應(yīng)用程序不可視,當(dāng)最后一個(gè)外部引用消失時(shí)關(guān)閉。
〔3〕
如果對(duì)象所在的應(yīng)用程序可視并正被客戶控制,那么在收到退出命令時(shí)應(yīng)當(dāng)變成不可視,這樣對(duì)象仍然可用,直到所有外部引用消失才退出。
對(duì)象的導(dǎo)出、獲取活動(dòng)對(duì)象、關(guān)閉活動(dòng)對(duì)象這里只是簡(jiǎn)單的介紹一下,這些方法的具體應(yīng)用需要在不同的環(huán)境和工程中結(jié)合實(shí)際的需求得以實(shí)現(xiàn)。
5、怎樣調(diào)用SolidEdge程序
利用VB來(lái)進(jìn)行二次開發(fā)時(shí)必須對(duì)SolidEdge提供的應(yīng)用對(duì)象〔Application〕實(shí)現(xiàn)通訊。
應(yīng)用對(duì)象是唯一一個(gè)允許VB程序直接訪問(wèn)的對(duì)象,它位于層次結(jié)構(gòu)樹的頂部,通過(guò)該對(duì)象才能訪問(wèn)其下級(jí)的其它對(duì)象。我們必須在VB的開發(fā)環(huán)境中引用SolidEdge的有關(guān)類型庫(kù)。這些庫(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ù)〕等等。怎樣引用這些類庫(kù)呢?在VB的環(huán)境中,通過(guò)"工程"菜單中的"引用"命令,將所要用的庫(kù)選中即可調(diào)用〔如圖1所示〕。二、Solidedge的對(duì)象層次結(jié)構(gòu)
在SolidEdge中對(duì)象之間就像一個(gè)組織結(jié)構(gòu)似的是有層次結(jié)構(gòu)相互聯(lián)系的。它的結(jié)構(gòu)形式是自上而下的樹狀結(jié)構(gòu),最上層即根節(jié)點(diǎn)對(duì)象就是一個(gè)應(yīng)用〔Application〕。詳細(xì)的結(jié)構(gòu)從SolidEdge提供的幫助文件中可以查到〔如圖2所示〕。
在SolidEdge中擁有四種工作環(huán)境分別是:Part〔零件〕、Assembly〔裝配〕、SheetMeta〔鈑金〕、Drdt〔工程圖〕。這里的零件和鈑金公用一個(gè)對(duì)象層次結(jié)構(gòu),而裝配和工程圖各自獨(dú)立擁有層次結(jié)構(gòu)。圖3是我根據(jù)圖2生成的簡(jiǎn)單的裝配層〔Assembly〕結(jié)構(gòu)組織圖。Application指的是Solidedge應(yīng)用程序,Doucments指的是一個(gè)對(duì)象集合,類似一個(gè)數(shù)組似的存放著前面的四個(gè)環(huán)境。要訪問(wèn)其中的一個(gè)環(huán)境必須得到Doucments對(duì)象才能訪問(wèn)。AssemblyDocument就是進(jìn)入到了裝配環(huán)境。根據(jù)這樣的層次關(guān)系就可以找到需要編輯的變量所在的類,然后應(yīng)用語(yǔ)句獲得對(duì)應(yīng)的類做屬性定義或者屬性編輯。圖3兩邊省略掉的是其它的層次關(guān)系不做一一介紹了。
對(duì)于程序開發(fā)者一定要會(huì)利用這個(gè)樹狀結(jié)構(gòu)圖,通過(guò)它找到相關(guān)的屬性是很好的捷徑否那么開發(fā)工作很難展開。如果對(duì)某些節(jié)點(diǎn)不是很清楚可以通過(guò)程序?qū)⑵湔归_看看這個(gè)類或者是屬性值到底是怎樣的。只有確定好對(duì)象才能對(duì)其展開工作。
三、結(jié)合數(shù)據(jù)庫(kù)實(shí)現(xiàn)零件的參量化設(shè)計(jì)
1、建立一個(gè)零件的參量化模型
創(chuàng)立一個(gè)"帶筋板孔形吊耳"如圖4所示。中間的孔徑是D=80mm、半圓底座的半徑是R=135mm、空的中心到底邊的距離C=120、兩個(gè)板厚的拉伸距離分別為S1=28mm、S2=26mm。
2、在變量表里添加變量
如圖5所示,在對(duì)應(yīng)的變量表里設(shè)定對(duì)應(yīng)的變量及公式。在確定參量化模型時(shí)需要企業(yè)的資深專家參與設(shè)計(jì),譬如零件的關(guān)鍵變量的定義以及參量的取值范圍或取值方式確實(shí)定都需要專家的討論和確認(rèn),以免對(duì)日后的設(shè)計(jì)造成錯(cuò)誤。在討論的過(guò)程中一定要確認(rèn)變量的變化范圍和方式這直接關(guān)系到整個(gè)零件的參量化設(shè)計(jì)的正確與否。
3、設(shè)計(jì)數(shù)據(jù)庫(kù)
在這里我們用MicrosoftAccess數(shù)據(jù)庫(kù)。新建一個(gè)數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)的名字為"data_Tree",然后建幾個(gè)表,其中的一個(gè)表的名字為"帶筋板孔形吊耳"〔圖6〕,其中表里有7個(gè)關(guān)鍵字分別為:type、D、B、C、R、S1、S2〔如圖7所示〕。其它的表可以仿照以上方法編輯。
數(shù)據(jù)庫(kù)是通過(guò)數(shù)據(jù)庫(kù)控件和程序關(guān)聯(lián)的,當(dāng)程序觸發(fā)了事件就會(huì)調(diào)用數(shù)據(jù)庫(kù)里的參數(shù)來(lái)驅(qū)動(dòng)SolidEdge的參量化模型。在驅(qū)動(dòng)參量化的時(shí)候可以通過(guò)表的形式來(lái)完成但是這樣有局限性因?yàn)檫@些參數(shù)都是事先指定的不能實(shí)現(xiàn)隨機(jī)任意性。當(dāng)我們要實(shí)現(xiàn)任意輸入時(shí)還要考慮參數(shù)的取值范圍,因?yàn)閰?shù)的值超過(guò)范圍就不符合設(shè)計(jì)的要求。那如何實(shí)現(xiàn)任意輸入呢?其實(shí)很簡(jiǎn)單我們首先要獲取對(duì)象然后找到對(duì)象里對(duì)應(yīng)的參量屬性值,然后將其與界面窗口程序?qū)?yīng)實(shí)現(xiàn)驅(qū)動(dòng)即可。
4、創(chuàng)立工程編寫代碼
〔1〕界面及事件觸發(fā)過(guò)程
界面的設(shè)計(jì)主要是考慮設(shè)計(jì)員在應(yīng)用時(shí)的方便與否,我做了兩個(gè)方案分別是下拉式和節(jié)點(diǎn)式如圖8所示,經(jīng)過(guò)討論采用了節(jié)點(diǎn)式界面。在界面設(shè)計(jì)時(shí)主要用了7個(gè)控件分別是:TreeView、TextBox、ListBox、SEPreview、CommandButton、DirlistBox、Adodc這7個(gè)控件貫穿了整個(gè)程序。
整個(gè)事件的觸發(fā)過(guò)程是:當(dāng)點(diǎn)擊TreeView的節(jié)點(diǎn)時(shí)先判斷該節(jié)點(diǎn)是否是葉節(jié)點(diǎn)如果不是葉節(jié)點(diǎn)那么不激活TextBox反之激活TextBox并且將葉節(jié)點(diǎn)的屬性值傳給TextBox顯示名稱,點(diǎn)擊TextBox激活ListBox將數(shù)據(jù)庫(kù)里對(duì)應(yīng)的表里的type的屬性值全部傳給ListBox并且將其顯示,點(diǎn)擊ListBox顯示的值相對(duì)應(yīng)的參量化動(dòng)作會(huì)在后臺(tái)進(jìn)行并且將生成的模型顯示在SEPreview上,點(diǎn)擊標(biāo)準(zhǔn)件生成位置的瀏覽按鈕彈出對(duì)話框在DirlistBox里選擇存盤位置最后點(diǎn)擊確定生成參量化模型。
圖8--下拉式
圖8--節(jié)點(diǎn)式〔2〕編碼過(guò)程
在開發(fā)的過(guò)程中可能存在未定義的關(guān)鍵字我們需要對(duì)其進(jìn)行檢查:
OptionExplicit
同時(shí)還要定義一些數(shù)據(jù)庫(kù)聯(lián)接等例如:
DimmyCNAsNewADODB.Connection
DimmyRSAsNewADODB.Recordset
在NodeClick事件里要清空l(shuí)ist選項(xiàng)List1.Clear,判斷節(jié)點(diǎn)是否有節(jié)點(diǎn)有那么不激活代碼如下所示:
IfNode.ChildrenThen
Text1.Enabled=False
Else
Text1.Enabled=True
Text1.Text=Node.Text
EndIf
在Tree_change事件里將數(shù)據(jù)庫(kù)里的數(shù)據(jù)調(diào)出形成樹狀結(jié)構(gòu),設(shè)置表的路徑將其傳遞給數(shù)據(jù)庫(kù)控件"Adodc"。
Adodc2.RecordSource="select*from表1"
Adodc1.RecordSource="select*from表2where類別編="+Adodc2.Recordset.Fields("類別編號(hào)")+""
激活了Text之后首先得清空選項(xiàng),否那么每次都會(huì)列出前一次的選項(xiàng)然后翻開數(shù)據(jù)庫(kù)的表如下所示:
TableName=Text1.Text
myRS.OpenTableName,myCN,adOpenStatic,adLockReadOnly,-1
同時(shí)在listbox中參加所有的type字段中的內(nèi)容,如下所示:
myRS.MoveFirst
DoUntilmyRS.EOF
List1.AddItemmyRS("type").Value
myRS.MoveNext
Loop
myRS.MoveFirst
還要關(guān)閉myRS否那么會(huì)導(dǎo)致組合框無(wú)法重新選取。
在參量化建模時(shí)有零件和鈑金件兩種,這樣在程序里需要加以判斷并且在SEPreview中顯示如下所示:
IfTableName="止動(dòng)墊A"OrTableName="止動(dòng)墊B"OrTableName="止動(dòng)墊C"Then
SEPreview1.FileName=App.Path&"\DATA\"&TableName&".psm"
Else
SEPreview1.FileName=App.Path&"\DATA\"&TableName&".par"
編碼完成之后的結(jié)果如圖9所示:
圖9
四、結(jié)論
在應(yīng)用開發(fā)工具進(jìn)行SolidEdge開發(fā)時(shí)最關(guān)鍵的是要非常了解SolidEdge的樹狀結(jié)構(gòu)要準(zhǔn)確的找到開發(fā)點(diǎn)。開發(fā)點(diǎn)就像一把鑰匙只有正確的找到鑰匙才能翻開所需要開發(fā)的特征。在SolidEdge的幫助文檔里有很詳細(xì)的介紹對(duì)開發(fā)人員有很大的幫助。我們要善于總結(jié),在看文檔的時(shí)候?qū)⑵浞彪s的文檔按類歸納結(jié)合實(shí)際工作將其應(yīng)用到開發(fā)工作中,開始可能是一頭霧水但是當(dāng)其總結(jié)出它的規(guī)律之后你就會(huì)得心應(yīng)手。
其次是對(duì)開發(fā)工具的熟悉程度,在制定開發(fā)方案及流程時(shí)需要考慮到開發(fā)工具是不是能夠很好的提供支持以及在實(shí)現(xiàn)時(shí)是否有困難如果能解決還要考慮工作效率。在解決一個(gè)問(wèn)題時(shí)最
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度高速公路隧道土石方工程補(bǔ)充合同3篇
- 2024年社保權(quán)利放棄協(xié)議書(員工版)3篇
- 商丘職業(yè)技術(shù)學(xué)院《CPA財(cái)務(wù)成本管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年度生態(tài)修復(fù)項(xiàng)目樹木買賣合同3篇
- 網(wǎng)絡(luò)店鋪招商合同范例
- 電氣供銷合同范例
- 汕頭大學(xué)《生物醫(yī)用與仿生材料》2023-2024學(xué)年第一學(xué)期期末試卷
- 陜西職業(yè)技術(shù)學(xué)院《數(shù)字?jǐn)z像》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024至2030年裝修特清底漆項(xiàng)目投資價(jià)值分析報(bào)告
- 2024至2030年移動(dòng)彩信監(jiān)控系統(tǒng)項(xiàng)目投資價(jià)值分析報(bào)告
- 人教版英語(yǔ)初二上學(xué)期試題及答案指導(dǎo)(2024年)
- 期末+(試題)+-2024-2025學(xué)年譯林版(三起)(2024)英語(yǔ)三年級(jí)上冊(cè)
- 2023年農(nóng)機(jī)專業(yè)合作社調(diào)研報(bào)告(五篇)
- 2024年秋季新人教版七年級(jí)上冊(cè)地理全冊(cè)導(dǎo)學(xué)案(2024年新教材)
- TCMAM Z25-2024“卡洛甘露”藏?。{沐)質(zhì)量標(biāo)準(zhǔn)
- 人工智能生成內(nèi)容的著作權(quán)侵權(quán)風(fēng)險(xiǎn)與侵權(quán)責(zé)任分配
- 2024年高考英語(yǔ)試題(新高考Ⅱ卷) 含解析
- GE Digital iFIX:iFIX歷史數(shù)據(jù)查詢與分析教程.Tex.header
- 3班主任基本功競(jìng)賽:主題班會(huì)《我本是高山》教學(xué)課件
- NB/T 11432-2023煤礦矸石基固廢充填技術(shù)規(guī)范
- 【金融模擬交易實(shí)踐報(bào)告4600字】
評(píng)論
0/150
提交評(píng)論