



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