1 引言
三維參數(shù)化設(shè)計(jì)方法由于其高效、簡(jiǎn)單、可移植性強(qiáng)等特點(diǎn),正受到越來越多的研究設(shè)計(jì)人員的關(guān)注。利用VB對(duì)SolidWorks進(jìn)行二次開發(fā)便是實(shí)現(xiàn)三維參數(shù)化設(shè)計(jì)方法常用的手段之一。SolidWorks為用戶對(duì)其進(jìn)行二次開發(fā)提供了內(nèi)嵌的應(yīng)用程序接口(API),任何支持OLE和COM的編程語言都可以作為開發(fā)工具,如Delphi、C++、VisualC++、VisualBasic等。
調(diào)節(jié)閥又稱控制閥(如圖1所示),是過程控制系統(tǒng)中用動(dòng)力操作去改變流體流量的裝置,隨著工業(yè)自動(dòng)化程度的不斷提高,已廣泛應(yīng)用于冶金、電力、化工、石油、輕紡、造紙、建材等工業(yè)部門 。調(diào)節(jié)閥產(chǎn)品品種、規(guī)格繁多,人工設(shè)計(jì)周期較長(zhǎng)、效率低。因此,研究Solid-Works二次開發(fā)技術(shù)在調(diào)節(jié)閥參數(shù)化設(shè)計(jì)中的應(yīng)用,對(duì)于縮短調(diào)節(jié)閥產(chǎn)品研發(fā)周期,提高設(shè)計(jì)效率和質(zhì)量,具有重要意義。
2 開發(fā)原理與思路
對(duì)SolidWorks進(jìn)行二次開發(fā)主要是通過該軟件自身提供的API接口來實(shí)現(xiàn)的,該接口提供了大量的OLE對(duì)象(對(duì)象體系結(jié)構(gòu)如圖2所示)。用戶可以借助高級(jí)編程語言作為開發(fā)平臺(tái),在設(shè)計(jì)友好界面的同時(shí),利用程序調(diào)用OLE對(duì)象對(duì)SolidWorks進(jìn)行訪問和操作,從而實(shí)現(xiàn)Solid-Works的參數(shù)化建模。
關(guān)于開發(fā)平臺(tái)的選擇問題,可以結(jié)合開發(fā)人員的實(shí)際情況選用。對(duì)于非計(jì)算機(jī)專業(yè)的工程技術(shù)人員而言,使用VisualBasic語言作為SolidWorks的二次開發(fā)平臺(tái)比較理想。該語言規(guī)則簡(jiǎn)單、開發(fā)效率高,所具備功能已能滿足開發(fā)要求。此外,SolidWorks宏錄制功能的VBA環(huán)境與VisualBasic語言環(huán)境完全相同,便于開發(fā)人員快速上手。
在采用VisualBasic6.0對(duì)SolidWorks進(jìn)行二次開發(fā)過程中,通過VB編寫的應(yīng)用程序?yàn)榭蛻舳耍琒olidWorks為服務(wù)端,VB編寫的應(yīng)用程序驅(qū)動(dòng)SolidWorks完成指定的設(shè)計(jì)工作。其基本開發(fā)思路是在SolidWorks環(huán)境中,任意選擇某一型號(hào)的調(diào)節(jié)閥產(chǎn)品,按正確的設(shè)計(jì)關(guān)系繪制出零件模型,同時(shí)利用SolidWorks宏錄制功能獲取相關(guān)代碼,然后根據(jù)零件設(shè)計(jì)需要分析并確定模型的參數(shù)變量,通過VB編程環(huán)境設(shè)計(jì)應(yīng)用程序操作界面,以尺寸驅(qū)動(dòng)方式實(shí)現(xiàn)對(duì)調(diào)節(jié)閥零件的設(shè)計(jì)。由于調(diào)節(jié)閥多為系列化產(chǎn)品,零件結(jié)構(gòu)相似程度較高,因此VB應(yīng)用程序在設(shè)計(jì)時(shí),可以通過建立Access數(shù)據(jù)庫,為用戶提供零件設(shè)計(jì)時(shí)所需參數(shù)。該開發(fā)思路的工作流程如圖3所示。
3 應(yīng)用實(shí)例
下面結(jié)合調(diào)節(jié)閥閥座的參數(shù)化設(shè)計(jì),闡述基于VB和SolidWorks的二次開發(fā)技術(shù)在調(diào)節(jié)閥參數(shù)化設(shè)計(jì)中的應(yīng)用。
3.1 模型特征繪制
SolidWorks是一套基于特征建模的三維軟件,它以草圖的形狀和尺寸為基礎(chǔ),通過“拉伸”、“旋轉(zhuǎn)”、“掃描”、“放樣”命令將2D草圖轉(zhuǎn)換為3D實(shí)體模型,然后在上述模型的基礎(chǔ)上進(jìn)行“切除”、“圓角”、“倒角”、“鉆孔”等操作,完成單個(gè)零件的制作。
電動(dòng)調(diào)節(jié)閥零件結(jié)構(gòu)大多數(shù)具有回轉(zhuǎn)體特征,在繪制模型時(shí)常用“拉伸”、“旋轉(zhuǎn)”命令。繪制調(diào)節(jié)閥閥座零件模型如圖4所示。
3.2 確定變量參數(shù)與約束
為了使后續(xù)程序能夠方便地調(diào)用、修改模型參數(shù),應(yīng)結(jié)合模型的設(shè)計(jì)要求選擇和命名參數(shù)變量,添加必要的尺寸約束關(guān)系。調(diào)節(jié)閥閥座設(shè)計(jì)變量參數(shù)及約束關(guān)系如下:
Extrude1——頂部特征圓直徑:D1、頂部特征圓長(zhǎng)度:H1;
Extrude2——退刀槽直徑:D2;
Extrude3——外螺紋公稱直徑:D3,外螺紋長(zhǎng)度:H2;
Cut-Extrude1——中心孔直徑:D4,中心孔長(zhǎng)度:H;
Cut-Extrude2——工藝孔直徑:D5,工藝孔孔深:HD,工藝孔孔距:L;
Cut-Revolve1——工藝孔錐體部分。
對(duì)于繪制工藝孔錐體部分的草圖,需要為其添加約束條件“HoleRadius@Sketch6”=“Exclude2_D1@Sketch5”/2,使工藝孔錐體底部半徑與工藝孔孔徑成1:2的關(guān)系。
具體操作為:打開繪制好的閥座模型,在工藝孔草圖中將孔徑名稱命名為Exclude2_D1,在工藝孔錐體草圖中將錐體底部半徑命名為HoleRadius,然后在菜單欄“Tools”選擇“Equations”,在彈出的對(duì)話框中加入上述約束條件即可。
3.3 建立動(dòng)態(tài)鏈接
啟動(dòng)VisualBasic6.0新建標(biāo)準(zhǔn)exe工程,在“工程”→“引用”中選擇需要加載的類型庫文件,主要包括:SldWorks 2007 Type Library、SolidWorks 2007 Constant Type Library、SolidWorks2007 Commands Type Library和SolidWorks 2007 Exposed Type Libraries for add-inuse。加載類型庫文件后,初步建立了VB與SolidWorks之間的通信連接,使得VB能夠調(diào)用SolidWorks的對(duì)象、方法和屬性。
3.4 設(shè)計(jì)用戶訪問界面
根據(jù)上面所確定的變量參數(shù),設(shè)計(jì)閥座參數(shù),定義用戶界面,如圖5所示。
3.5 模型更新程序
要使變量參數(shù)能夠驅(qū)動(dòng)模型庫中的模型,實(shí)現(xiàn)模型的自動(dòng)更新,在完成上述步驟,還需要通過模型更新程序來驅(qū)動(dòng)。部分調(diào)節(jié)閥閥座模型自動(dòng)更新程序如下。
SetswApp=CreateObject(″SldWorks.Application″) '打開SolidWorks接口為調(diào)用其API函數(shù)做準(zhǔn)備
swApp.Visible(True) '啟動(dòng)SolidWorks,使其窗口可視
Set Part=swApp.OpenDoc(MyPath+″\Class_閥座.SLDPRT″,swDocPART) '調(diào)用零件庫模型
If Part Is Nothing Then
ExitSub
Else
Set Part=swApp.ActivateDoc(″Class_閥座.SLDPRT″) '激活模型,使模型可修改
End If
Part.Parameter(″TopDiameter@Sketch1″).SystemValue=Class_Top '頂圓直徑D1
Part.Parameter(″D1@Extrude1″).SystemValue=Class_Extrude1_D1 '頂部長(zhǎng)度H1
Part.Parameter(″MidDiameter@Sketch2″).SystemValue=Class_M(jìn)id '退刀槽直徑D2
Part.Parameter(″D1@Extrude2″) .SystemValue=Class_Extrude2_D1 '退刀槽長(zhǎng)度H-H1-H2
Part.Parameter(″DownDiameter@Sketch3″).SystemValue=Class_Down '外螺紋公稱直徑D3
Part.Parameter(″D1@Extrude3″) .SystemValue=Class_Extrude3_D1 '外螺紋長(zhǎng)度H2
Part.Parameter(″Exclude1_D1@Sketch4″).SystemValue=Class_Exclude1_D1 '中心孔直徑D4
Part.Parameter(″Exclude2_D1@Sketch5″).SystemValue=Class_ScrewHoleDia '工藝孔直徑D5
Part.Parameter(″HoleDistance@Sketch5″).SystemValue=Class_ScrewHoleDis '工藝孔孔距L
Part.Parameter(″D1@Cut-Extrude2″).SystemValue=Class_ScrewHoleDepth '工藝孔孔深
HDPart.EditRebuild '重新建立模型
Part.ShowNamedView2 ″*Trimetric″,8 '調(diào)整模型視角
Part.ViewZoomtofit2
MsgBox″三維造型結(jié)束″,vbOKOnly,″提示″'顯示模型更新完畢信息
注:此程序在WindowsXp SolidWorks 2007 EN下調(diào)試通過。
3.6 建立尺寸參數(shù)數(shù)據(jù)庫
根據(jù)前面所確定的調(diào)節(jié)閥閥座零件變量參數(shù),利用Access建立符合要求的數(shù)據(jù)庫。數(shù)據(jù)庫建立后,在程序中通過數(shù)據(jù)控件與特定的數(shù)據(jù)表相連接,為用戶提供可選擇的零件設(shè)計(jì)參數(shù)。
4 結(jié)論
用VB6.0對(duì)SolidWorks軟件平臺(tái)進(jìn)行二次開發(fā),實(shí)現(xiàn)了設(shè)計(jì)變量與編程語言相結(jié)合的調(diào)節(jié)閥零件參數(shù)化設(shè)計(jì),其自動(dòng)化程度高,能夠方便快捷地設(shè)計(jì)出一系列結(jié)構(gòu)相似的零件參數(shù)化模型,簡(jiǎn)化了零件設(shè)計(jì)過程,提高了設(shè)計(jì)工作效率。因此,該方法在機(jī)械零件設(shè)計(jì)領(lǐng)域具有廣闊的應(yīng)用前景。
參考文獻(xiàn)
[1] 江洪,李仲興,邢啟恩.SolidWorks2003二次開發(fā)基礎(chǔ)與實(shí)例教程[M].北京:電子工業(yè)出版社,2003.
[2] 何衍慶,邱宣振,楊潔,等.控制閥工程設(shè)計(jì)與應(yīng)用[M].北京:化學(xué)工業(yè)出版社,2005.
[3] 徐國(guó)權(quán),黃志超.基于SolidWorks的參數(shù)化設(shè)計(jì)二次開發(fā)研究[J].機(jī)械設(shè)計(jì)與研究,2007,23(1):68-87.
[4] 曾祥光,張玲玲.基于VB的SolidWorks二次開發(fā)[J].機(jī)械工程師,2006(3):131-132.
咨詢需求
