摘要:為滿足生產(chǎn)上對蔬菜日光溫室設(shè)計的需求,以SolidWorks為基礎(chǔ)平臺,以Visual Basic語言為開發(fā)工具,提出了蔬菜日光溫室參數(shù)化設(shè)計系統(tǒng)的開發(fā)思路和開發(fā)流程,并完成了蔬菜日光溫室設(shè)計系統(tǒng)的開發(fā)。應(yīng)用實踐表明,通過該系統(tǒng)可以實現(xiàn)對蔬菜日光溫室的參數(shù)化設(shè)計。
關(guān)鍵詞:日光溫室;設(shè)計系統(tǒng);SolidWorks;Visual Basic
中圖分類號:S625;S126 文獻標識碼:A 文章編號:0439-8114(2013)19-4800-04
近年來,在農(nóng)業(yè)扶持政策的引導(dǎo)下,北京市設(shè)施農(nóng)業(yè)建設(shè)取得了較大發(fā)展,設(shè)施農(nóng)業(yè)已成為京郊農(nóng)業(yè)增效、農(nóng)民增收的一條重要途徑,在保障首都農(nóng)產(chǎn)品供應(yīng)中發(fā)揮了重要作用。北京設(shè)施農(nóng)業(yè)的發(fā)展不僅設(shè)施類別日益豐富,年產(chǎn)量不斷增加,而且設(shè)施覆蓋面積也不斷擴大[1]。北京設(shè)施農(nóng)業(yè)生產(chǎn)的基本功能逐步從以生產(chǎn)產(chǎn)品為主要目標向集觀光、采摘、休閑、體驗、生態(tài)、傳承農(nóng)業(yè)文化等多種功能轉(zhuǎn)變。在設(shè)施生產(chǎn)中,以蔬菜生產(chǎn)占主導(dǎo)地位。日光溫室作為一類蔬菜生產(chǎn)主要園藝設(shè)施,在建造過程中結(jié)構(gòu)設(shè)計不夠規(guī)范,造成使用性能受到一定影響,為此開發(fā)出一種蔬菜日光溫室設(shè)計系統(tǒng),該系統(tǒng)通過參數(shù)設(shè)定完成日光溫室的建模,設(shè)計出符合行業(yè)標準的日光溫室。
1 系統(tǒng)開發(fā)平臺及工具的選擇
SolidWorks是基于Windows平臺的一套三維CAD軟件,它支持參數(shù)化和特征建模技術(shù),能夠方便、快捷地創(chuàng)建任何復(fù)雜形狀的實體,并且可以實現(xiàn)實體的參數(shù)化驅(qū)動。由于其界面友好、操作方便、簡單易學(xué),目前已成為微機平臺上流行的三維設(shè)計軟件。更為重要的是SolidWorks提供了大量的API(Application Program Interface,應(yīng)用程序接口)函數(shù)用于二次開發(fā),這些API函數(shù)是SolidWorks的OLE(Object Linkingand Embedding,對象的嵌入與鏈接)或COM(Component Object Model,組件對象模型接口),使用戶能夠直接訪問SolidWorks,并可以使用多種高級語言,如Visual Basic、C++、C#、Delphi等語言均可用于SolidWorks的二次開發(fā)[2]。進行二次開發(fā)時,通過調(diào)用SolidWorks的API函數(shù),令A(yù)PI向高級語言程序提供所需要的對象及這些對象的方法和屬性以完成零件建模[3-4]。運行時采用交互式界面,由用戶指定尺寸,由程序自動求解關(guān)鍵點坐標完成建模[5]。
Visual Basic是運行在Windows環(huán)境下的可視化編程語言,其具有語言規(guī)則簡單、功能齊全、使用簡捷等優(yōu)點,程序開發(fā)周期短、具有可視化設(shè)計界面等特點,使用Visual Basic來開發(fā)軟件,開發(fā)周期短,代碼效率高[6],已有很多科研工作者利用Visual Basic語言對SolidWorks進行了二次開發(fā)[7]。
因此,以SolidWorks為基礎(chǔ)平臺,以Visual Basic語言為開發(fā)工具,對蔬菜日光溫室設(shè)計系統(tǒng)進行開發(fā)。
2 蔬菜日光溫室設(shè)計系統(tǒng)的設(shè)計要求和系統(tǒng)使用流程
為滿足用戶對蔬菜日光溫室設(shè)計的需求,本設(shè)計系統(tǒng)要能夠達到以下設(shè)計要求。
1)能夠根據(jù)用戶輸入的溫室長度、溫室高度數(shù)值,自動計算所需設(shè)計的日光溫室的溫室跨度、外墻高、內(nèi)墻高、后屋面投影長、墻體厚度等各個設(shè)計參數(shù)。如因某種原因需要修改設(shè)計參數(shù),用戶可以對自動計算的設(shè)計參數(shù)進行修改,最終確定設(shè)計參數(shù)。
2)按最終確定的設(shè)計參數(shù),系統(tǒng)自動生成日光溫室的三維模型,完成日光溫室的設(shè)計。
3)如用戶對完成的日光溫室設(shè)計結(jié)果不夠滿意,可以重新修改設(shè)計參數(shù),直到滿意為止。
本系統(tǒng)的用戶使用流程如圖1所示。
3 蔬菜日光溫室設(shè)計系統(tǒng)的開發(fā)
3.1 日光溫室參數(shù)化建模系統(tǒng)開發(fā)思路
根據(jù)本系統(tǒng)的設(shè)計要求,確定本系統(tǒng)的開發(fā)流程如圖2所示。
該系統(tǒng)開發(fā)思路如下:
1)根據(jù)日光溫室的理論模型,確定本系統(tǒng)溫室長度、溫室高度、溫室跨度、外墻高度、內(nèi)墻高度、后屋面投影長度、墻體厚度等主要建模參數(shù)數(shù)值。
2)使用SolidWorks軟件完成日光溫室所有零件及裝配體基本三維模型建模。首先在SolidWorks中創(chuàng)建日光溫室米單元模型(即東西長度為1 m的溫室單元模型),該模型包括拱桿、拉桿、桿固定卡、后墻、后墻保溫材料、后屋面頂板、后屋面蓋板、后屋面保溫材料、地面等部分,然后再創(chuàng)建東、西山墻及緩沖間等三維模型,最后裝配形成日光溫室裝配體三維模型。在零件建模時,要在相應(yīng)的模型文件中找到關(guān)鍵參數(shù)的設(shè)計變量,并記錄變量的名稱。
3)利用Visual Basic語言編寫用戶設(shè)計界面如圖3所示,本系統(tǒng)交互式界面包括關(guān)鍵參數(shù)輸入、自動參數(shù)計算、溫室建模、退出系統(tǒng)等。該VB程序的主要功能有:根據(jù)用戶輸入的溫室長度、溫室高度數(shù)據(jù),自動計算溫室跨度、外墻高度、內(nèi)墻高度、后屋面投影長度、墻體厚度等參數(shù),并顯示于設(shè)計界面上;用戶可以對程序自動計算的參數(shù)進行修改;根據(jù)用戶確定的參數(shù),通過VB調(diào)用SolidWorks API函數(shù),驅(qū)動SolidWorks建立所需的日光溫室三維模型;如用戶對設(shè)計結(jié)果不滿意可以重新對設(shè)計參數(shù)進行修改,然后根據(jù)新的參數(shù)重建日光溫室三維模型。
3.2 系統(tǒng)代碼
下面是實現(xiàn)北京地區(qū)果菜類日光溫室建模的程序代碼:
Sub para(a1 As Integer, b1 As Integer, c1 As Integer, d1 As Integer, e1 As Integer, f1 As Integer, g As Integer, h As Integer)
Dim swapp As Object, part As Object, assembly As Object
Set swapp = CreateObject(\"sldworks.application\")
swapp.Visible = True
Set part = swapp.OpenDoc(\"F:\溫室\米單元.sldprt\", swDocPART)
Set part = swapp.ActiveDoc
part.Parameter(\"D7@草圖1\").SystemValue =
a1 / 1000
part.Parameter(\"D8@草圖1\").SystemValue = b1 / 1000
part.Parameter(\"D3@草圖3\").SystemValue =
c1 / 1000
part.Parameter(\"D1@草圖1\").SystemValue = d1 / 1000
part.Parameter(\"D2@草圖1\").SystemValue =
e1 / 1000
part.Parameter(\"D2@草圖3\").SystemValue =
f1 / 1000
part.Parameter(\"D5@草圖1\").SystemValue =
g / 1000
part.Parameter(\"D6@草圖1\").SystemValue =
h / 1000
part.EditRebuild
part.Save'以上程序為更新米單元的尺寸參數(shù)
Set part = swapp.OpenDoc(\"F:\溫室\西山墻.sldprt\", swDocPART)
part.Parameter(\"D8@草圖118\").SystemValue = a1 / 1000
part.Parameter(\"D7@草圖118\").SystemValue = b1 / 1000
part.Parameter(\"D3@草圖3\").SystemValue =
c1 / 1000
part.Parameter(\"D5@草圖118\").SystemValue = d1 / 1000
part.Parameter(\"D6@草圖118\").SystemValue = e1 / 1000
part.Parameter(\"D2@草圖3\").SystemValue =
f1 / 1000
part.Parameter(\"D3@草圖118\").SystemValue = g / 1000
part.Parameter(\"D4@草圖118\").SystemValue = h / 1000
part.EditRebuild
part.Save '以上程序為更新西山墻的尺寸參數(shù)
Set part = swapp.OpenDoc(\"F:\溫室\東山墻.sldprt\", swDocPART)
part.Parameter(\"D8@草圖118\").SystemValue = a1 / 1000
part.Parameter(\"D7@草圖118\").SystemValue = b1 / 1000
part.Parameter(\"D3@草圖3\").SystemValue =
c1 / 1000
part.Parameter(\"D5@草圖118\").SystemValue = d1 / 1000
part.Parameter(\"D6@草圖118\").SystemValue = e1 / 1000
part.Parameter(\"D2@草圖3\").SystemValue =
f1 / 1000
part.Parameter(\"D3@草圖118\").SystemValue = g / 1000
part.Parameter(\"D4@草圖118\").SystemValue = h / 1000
part.EditRebuild
part.Save '以上程序為更新東山墻的尺寸參數(shù)
Set assembly = swapp.OpenDoc(\"F:\溫室\西山墻裝配.sldasm\", swDocASSEMBLY)
Set assembly = swapp.ActiveDoc
assembly.Save'以上程序為更新西山墻裝配體
Set assembly = swapp.OpenDoc(\"F:\溫室\日光溫室.sldasm\", swDocASSEMBLY)
Set assembly = swapp.ActiveDoc
assembly.Save'以上程序為更新日光溫室裝配體
End Sub
4 蔬菜日光溫室設(shè)計系統(tǒng)應(yīng)用實例
現(xiàn)以長度為80 m,高度為3.7 m的蔬菜日光溫室建模為例,操作步驟如下:
1)打開蔬菜日光溫室設(shè)計系統(tǒng)界面;
2)在設(shè)計界面對應(yīng)位置輸入溫室長度80、溫室高度數(shù)值3.7,點擊“生成參數(shù)”按鈕,系統(tǒng)自動產(chǎn)生溫室跨度、外墻高度、內(nèi)墻高度、后屋面投影長度、墻體厚度等自動參數(shù);
3)如果有必要,可對自動計算生成的參數(shù)進行修改,確定建模參數(shù),實例未做修改;
4)點擊“溫室建?!卑粹o,系統(tǒng)自動啟動Solid Works軟件,并根據(jù)建模參數(shù)重建日光溫室的三維模型;
5)三維模型自動繪制完成之后,此時的圖形若不能完全滿足設(shè)計者的要求,還可以對建模參數(shù)進行修改,直到得到滿意的模型;
6)點擊“退出系統(tǒng)”按鈕,退出系統(tǒng)。
由系統(tǒng)設(shè)計的日光溫室三維模型如圖4所示。
5 結(jié)論
1)所開發(fā)的蔬菜日光溫室設(shè)計系統(tǒng)界面友好、操作簡單、建模準確、設(shè)計結(jié)果直觀,降低了設(shè)計成本,提高了設(shè)計自動化程度,能夠滿足生產(chǎn)上的需求。
2)以SolidWorks為基礎(chǔ)平臺,以Visual Basic語言為開發(fā)工具,本文所提出的對蔬菜日光溫室參數(shù)化設(shè)計系統(tǒng)的開發(fā)思路、開發(fā)流程及所開發(fā)出的系統(tǒng),經(jīng)過實踐證明切實可行。
3)系統(tǒng)設(shè)計過程具有一定的通用性,而且通過修改系統(tǒng)參數(shù),可以實現(xiàn)對果樹、花卉等其他結(jié)構(gòu)形式的日光溫室的參數(shù)化建模。
參考文獻:
[1] 王志剛,李騰飛.設(shè)施農(nóng)業(yè)的發(fā)展分析及未來展望——以北京市為例[J].農(nóng)業(yè)展望,2012(5):25-27.
[2] 張 華,陳定方,楊艷芳.Visual Basic為基的SolidWorks二次開發(fā)與應(yīng)用[J].湖北工業(yè)大學(xué)學(xué)報,2010,25(4):36-38.
[3] 胡林嵐,郁玲玲.基于VB與SolidWorks的齒輪設(shè)計與三維造型系統(tǒng)[J].機械工程與自動化,2012(6):34-36.
[4] 林楊喬.基于SolidWorks的零件快速設(shè)計平臺[J].硅谷,2012(7):53.
[5] 尹新濤,郭貴生,王海平,等.旋耕機齒輪箱直齒圓柱齒輪的參數(shù)化設(shè)計[J].農(nóng)機化研究,2012(5):128-131.
[6] 陳克源,王得勝.基于SolidWorks二次開發(fā)的支撐腳零件參數(shù)化設(shè)計[J].機械研究與應(yīng)用,2011(2):87-89.
[7] 頓國強,陳海濤.基于VB的SolidWorks排種盤建模二次開發(fā)[J].大豆科學(xué),2012,31(4):630-634.