



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