劉 方,劉 煒
(1.江蘇聯(lián)合職業(yè)技術(shù)學(xué)院 無錫交通分院,江蘇 無錫 214151;2.江蘇科技大學(xué) 能源與動力工程學(xué)院,江蘇 鎮(zhèn)江 212003)
柴油機(jī)作為應(yīng)用最為廣泛的內(nèi)燃機(jī),由于結(jié)構(gòu)形狀復(fù)雜,技術(shù)要求高,加工難度大,傳統(tǒng)的設(shè)計(jì)和加工之間的信息傳遞多停留在二維的紙質(zhì)文件上,導(dǎo)致企業(yè)的工作效率較低。隨著數(shù)字化、信息化的高科技發(fā)展,計(jì)算機(jī)輔助設(shè)計(jì)和制造的引入,三維建模和虛擬仿真技術(shù)普遍應(yīng)用于產(chǎn)品研發(fā)和設(shè)計(jì)領(lǐng)域。在研發(fā)的過程中,不同尺寸的產(chǎn)品需要重復(fù)大量的建模工作來進(jìn)行仿真分析,不僅勞動強(qiáng)度大,工作效率低,還存在一定的失誤率,浪費(fèi)了人力、物力和財(cái)力。鑒于此,探索一種高效、簡單的建模方法來提高產(chǎn)品的設(shè)計(jì)和制造水平是亟待解決的問題。本文以柴油機(jī)箱體為例,進(jìn)行基于SolidWorks尺寸驅(qū)動參數(shù)化建模的二次開發(fā),探討一種簡便的建模方法來提升建模效率。
SolidWorks是一款操作簡單、功能強(qiáng)大的機(jī)械三維工程軟件[1],是一個(gè)基于參數(shù)化特征的實(shí)體建模系統(tǒng),提供了二次開發(fā)的環(huán)境和開放的數(shù)據(jù)結(jié)構(gòu),有上百個(gè)API(Application Program Interface,應(yīng)用程序接口)函數(shù),這些函數(shù)就是OLE或COM接口。OLE(Object Linking and Embedding)是指對象的嵌入與鏈接,應(yīng)用程序之間可以通過OLE數(shù)據(jù)嵌入或鏈接的方法來共享數(shù)據(jù);COM(Component Object Model)作為軟件互相通信的一種方式,是組件對象模型接口,定義了標(biāo)準(zhǔn)的構(gòu)件組建的方法。用戶可應(yīng)用VBVBAVCDelphi等編程語言對SolidWorks進(jìn)行二次開發(fā),建立適合自己需要的SolidWorks功能模塊,實(shí)現(xiàn)產(chǎn)品的三維建模、裝配檢驗(yàn)、加工仿真、有限元分析、運(yùn)動仿真、數(shù)控加工和加工工藝的制定,從而提高產(chǎn)品的設(shè)計(jì)效率和提升設(shè)計(jì)質(zhì)量[2]。
參數(shù)化設(shè)計(jì)在當(dāng)今CAD應(yīng)用技術(shù)中占有重要地位[3],工作人員可以根據(jù)產(chǎn)品的形狀和尺寸,通過參數(shù)化設(shè)計(jì)快速草擬出零件圖。變量設(shè)計(jì)以參數(shù)化設(shè)計(jì)為前提,通過變量設(shè)計(jì)思路可以實(shí)現(xiàn)機(jī)構(gòu)設(shè)計(jì)與動態(tài)設(shè)計(jì)的運(yùn)動仿真模擬等。SolidWorks尺寸驅(qū)動的參數(shù)化建模是設(shè)計(jì)變量與編程技術(shù)相結(jié)合的方式,以SolidWorks環(huán)境中建立的典型結(jié)構(gòu)模型為基礎(chǔ),用設(shè)計(jì)變量作為程序與模型的聯(lián)系紐帶。該方法通過少量的變量化參數(shù)來控制模型,從而實(shí)現(xiàn)快速、準(zhǔn)確的圖形設(shè)計(jì)。
尺寸驅(qū)動參數(shù)化建模方法在建好模型的基礎(chǔ)上調(diào)用設(shè)置參數(shù)的函數(shù)實(shí)現(xiàn)尺寸修改。程序的修改只需要修改自定的尺寸,但如果這樣直接修改,上面的孔的位置等細(xì)節(jié)特征都還在原有的位置,因此需要通過添加相關(guān)約束條件,使草圖完全定義,實(shí)現(xiàn)尺寸聯(lián)動。圖1為尺寸驅(qū)動參數(shù)化建模的基本流程圖。
使用尺寸驅(qū)動法參數(shù)建模的方法需要在事先建好的模型基礎(chǔ)上進(jìn)行,因此首先需要建立柴油機(jī)箱體的實(shí)體模型。以CZ 380型柴油機(jī)為例進(jìn)行尺寸驅(qū)動參數(shù)化建模。打開SolidWorks軟件,根據(jù)測繪得到的CZ 380柴油機(jī)箱體尺寸,利用軟件建立該箱體的實(shí)體基礎(chǔ)模型,如圖2所示。
圖1 尺寸驅(qū)動參數(shù)化建模的基本流程圖
圖2 CZ 380柴油機(jī)箱體模型圖
打開VB.NET,以箱體底座的長、寬以及箱體高度為設(shè)計(jì)目標(biāo),分別創(chuàng)建以字母A、B、C為標(biāo)識的Lable控件以及實(shí)參輸入框的TextBox控件,以同樣的方法再創(chuàng)建一組零件名輸入框控件和一個(gè)Button控件并取名“OK”,最后插入模型照片。然后通過SolidWorks API函數(shù)將文本框與箱體的這三個(gè)參數(shù)尺寸相關(guān)聯(lián),改變文本框的輸入數(shù)值,即可驅(qū)動SolidWorks改變模型的形狀。注意零件重建窗體中三個(gè)初始值是建模時(shí)的尺寸值,作為重建模型輸入值的參考。重建模型的尺寸不應(yīng)與初始值相差太大,否則可能引起程序崩潰。零件的窗體界面如圖3所示。
圖3 創(chuàng)建零件對話框
在“A”“B”“C”文本框中分別輸入數(shù)值310、350、180,定義新零件名稱為“Xiangti1”,如圖4所示。單擊“OK”按鈕,軟件將驅(qū)動SolidWorks對模型進(jìn)行重建,系統(tǒng)將自動生成與文本框中輸入的數(shù)值一致、零件名為“Xiangti1”的模型,如圖5所示。
圖4 重建模型參數(shù)
圖5 重建模型圖
′引入SolidWorks、System相關(guān)模塊(省略)
Public Class Form1
Dim swApp As New SldWorks′定義類型
...... ′省略一般變量聲明
Sub initSW() ′初始化
Try
swModel=swApp.ActiveDoc
swModelDocExt=swModel.Extension
swFeatureMgr=swModel.FeatureManager
swMgr=swModel.SelectionManager
swSketchMgr=swModel.SketchManager
Catch ex As Exception
MsgBox("請先打開SolidWorks!")
End Try
End Sub
Sub createPart1(ByVal Name As String)
swApp.OpenDoc2(System.AppDomain.CurrentDomain.BaseDirectory+"createpart2016.SLDPRT", 1, True, False, False, 0) '打開相對目錄下的零件
initSW()′初始化sw
swSetParameter()′修改尺寸
status = swModelDocExt.SaveAs("C:UsersAdministratorDesktop"+Name+".sldprt",swSaveAsVersion_e.swSaveAsCurrentVersion,SaveAsOptions_e.swSaveAsOptions_Silent, Nothing, 1, 1)
′另存為桌面上的零件
End Sub
Dim D1 As Dimension,D2 As Dimension,D3 As Dimension'定義目標(biāo)修改尺寸為參數(shù)類型
Sub swSetParameter()
Try'定義D1,D2,D3為目標(biāo)修改尺寸
D1=swModel.Parameter("D1@基準(zhǔn)面3")
D2=swModel.Parameter("D1@草圖1")
D3=swModel.Parameter("D2@草圖1")
′獲取錄入的TextBox數(shù)值并賦值給形參
D1.Value=TextBoxA.Text
D2.Value=TextBoxB.Text
D3.Value=TextBoxC.Text′
Catch ex As Exception
MsgBox("請輸入正的數(shù)值!")
End Try
End Sub
本文以柴油機(jī)箱體為例,對基于尺寸驅(qū)動參數(shù)化建模過程從建模思想流程、應(yīng)用程序窗口設(shè)計(jì)、程序語言和模型展示等方面進(jìn)行了詳細(xì)說明,通過更改柴油機(jī)箱體相關(guān)尺寸,使建模過程得以簡化。尺寸驅(qū)動的簡化模型方法適合于批量修改零件尺寸需求,建模方法簡單高效,可應(yīng)用在更多零件的參數(shù)化修改工作,從而通過SolidWorks二次開發(fā)技術(shù),標(biāo)準(zhǔn)化、參數(shù)化實(shí)現(xiàn)模型簡化任務(wù)。