銀 行,馬 卓,姚峰林,王 深,張 雷,張 瑤
(太原科技大學(xué)機械工程學(xué)院,山西 太原 030024)
目前我國起重機在設(shè)計時需要進行大量的計算,尤其是在設(shè)計同系列不同型號時需要進行大量的重復(fù)計算,十分繁瑣[1]。隨著時代的發(fā)展,這種設(shè)計方法已經(jīng)嚴重限制了工作效率的提高,無法滿足如今系列化生產(chǎn)的需求,所以開發(fā)一種輔助設(shè)計系統(tǒng)很有必要。
本研究以通用雙梁起重機小車為例,應(yīng)用了VB編程、SolidWorks二次開發(fā)、Access數(shù)據(jù)庫技術(shù)等技術(shù),采用模塊化設(shè)計方法,將理論計算方法通過VB編程變?yōu)榭梢暬挠嬎憬缑?,輸入特定參?shù)便可完成計算,并在SolidWorks里邊創(chuàng)建三維模型,可較為快速地完成通用雙梁起重機小車的參數(shù)化設(shè)計。
SolidWorks是一個十分強大的三維CAD 軟件,除了三維建模功能外,還帶有豐富的API接口,供開發(fā)者進行功能方面的拓展。這些接口主要為OLE 或COM 接口,用戶可以使用VC、VB、Delphi等高級編程語言工具對其進行二次開發(fā),以實現(xiàn)自己需要的功能[2]。本文以VB開發(fā)為例,若使用其他語言開發(fā)過程也是類似的。
1.2.1 錄制宏
SolidWorks提供了錄制宏的功能,宏是一系列命令的集合,錄制宏可以記錄設(shè)計人員在設(shè)計三維模型時的每一條命令,并以類似VB編程語言的代碼記錄下來,因此應(yīng)用VB 對SolidWorks進行二次開發(fā)有著得天獨厚的優(yōu)勢。如果使用VB語言編程的話,可以直接將SolidWorks自動生成的宏代碼復(fù)制到VB中,稍加修改便可使用[3]。所以使用宏可以大大簡化程序開發(fā)過程。當(dāng)然,不使用宏只需要記憶大量的SolidWorks API命令即可,但編程時較為復(fù)雜且容易出錯,然而使用這種方法卻可提高開發(fā)人員對SolidWorks的控制,可以使編寫的代碼高效簡潔。對于通用橋式起重機二次開發(fā)來說錄制宏是一種高效的編程方法,值得推廣使用。
1.2.2 宏代碼在VB中的修改
1)VB鏈接SolidWorks零件圖。
例如VB 只有在鏈接SolidWorks后才能對SolidWorks進行各種操作。
對錄制的宏代碼:
替換為:
即可鏈接SolidWorks,開始自動設(shè)計零件。
1.2.3 刪除冗余語句
SolidWorks宏程序錄制的代碼摻雜各種對制圖產(chǎn)生干擾的命令和操作,而且有些代碼是不必要的。那些冗余代碼在運行時雖然不報錯,可是會占用大量內(nèi)存空間,影響閱讀和調(diào)試工作。所以最后錄制的宏程序必須要進行人為的整理,刪除或者注釋掉沒用的代碼,使程序簡化。
1.2.4 模型參數(shù)化
在錄制的宏代碼中的模型都是固定數(shù)值的,但程序開發(fā)要求模型的的特征必須是變量,因此需要對模型進行特征的參數(shù)化設(shè)計。
Retval=SketchManager.CreateCircleByRadius(XC,YC,ZC,Radius)‘在草圖中創(chuàng)建一個以(XC,YC,ZC)為原點,radius為半徑的圓。
Retval=SketchManager.CreateCenterRectangle(X1,Y1,Z1,X2,Y2,Z2)’在草圖中創(chuàng)建一個中心坐標為(X1,Y1,Z1),其中一個直角點為(X2,Y2,Z2)的矩形。
Retval=SketchManager.CreateLine(X1,Y1,Z1,X2,Y2,Z2)‘在草圖中創(chuàng)建一條以(X1,Y1,Z1)與(X2,Y2,Z2)為端點的直線。
Set myFeature=Part.FeatureManager.Feature-Extrusion2(True,F(xiàn)alse,F(xiàn)alse,0,0,0.01,0.01,F(xiàn)alse,F(xiàn)alse,F(xiàn)alse,F(xiàn)alse,0.017 453 292 519 94,0.017 453 292 519 94,F(xiàn)alse,F(xiàn)alse,F(xiàn)alse,F(xiàn)alse,True,True,True,0,0,F(xiàn)alse)’將所選擇的草圖進行拉伸。
若要使模型實現(xiàn)參數(shù)控制,只需將這些命令中一些函數(shù)參數(shù)改為變量,并在用戶界面設(shè)計相應(yīng)的輸入框或?qū)?shù)據(jù)庫中進行讀寫,這樣設(shè)計人員只需修改這些變量的值便可使程序生成尺寸不同但結(jié)構(gòu)基本相同的模型[4]。
1.2.5 自動裝配
自動裝配及通過VB操縱SoildWorks的API函數(shù)實現(xiàn)各個零件的自動定位、配合、遍歷面等功能,在SolidWorks自動裝配過程中,依然采用宏錄制的方法??梢栽谘b配體中的各個零件上建立基準面與基準軸,然后設(shè)置基準面與基準軸之間的關(guān)系,從而完成裝配,這樣可以使得二次開發(fā)時的裝配過程更準確快捷[5]。與自動設(shè)計零件類似,自動裝配也要將VB與SolidWorks裝配體API連接,其連接代碼如下:
在自動裝配過程中利用OpenDoc6函數(shù)打開零件、利用AddComponent4 函數(shù)添加零部件到裝配體,SelectByID2 是選擇裝配參考和AddMate3裝配配合命令。
Microsoft Office Access是微軟把數(shù)據(jù)庫引擎的圖形用戶界面和軟件開發(fā)工具結(jié)合在一起的一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),是office辦公套件的一個成員。對于簡單的二次開發(fā)來說ACCESS要比ORACLE,SQL SERVER,MYSQL,DB2 成本更低廉,更易學(xué)易用。
ACCESS以它自己的格式將數(shù)據(jù)存儲在基于Access Jet的數(shù)據(jù)庫引擎里,還可以直接導(dǎo)入或者鏈接存儲在其他應(yīng)用程序和數(shù)據(jù)庫中的數(shù)據(jù)。開發(fā)人員可以使用Microsoft Access開發(fā)應(yīng)用軟件,“高級用戶”可以使用它來構(gòu)建軟件應(yīng)用程序。與其他辦公應(yīng)用程序一樣,ACCESS 支持Visual Basic宏語言,語法結(jié)構(gòu)與SolidWorks中的宏完全相同,使用方法也基本一樣,只是部分函數(shù)與SolidWorks不同,本程序應(yīng)用的是Microsoft Office Access2010版本。
在整個系統(tǒng)的編寫中,需要查找或記錄大量的表格來確定各個參數(shù)的數(shù)值以及各個零部件的型號以及規(guī)格。把上面所有的需要查找的表格和零部件參數(shù)都輸入到數(shù)據(jù)庫中,編寫的程序就會自動查找符合條件的數(shù)據(jù)。設(shè)計過程中所建立的數(shù)據(jù)庫如圖1所示。
在新建VB工程時可以選擇新建工程的類型。在Windows系統(tǒng)下COM 組件支持可執(zhí)行文件(.exe格式)或動態(tài)鏈接庫(.dll格式)??蓤?zhí)行文件獨立于SolidWorks,可以在SolidWorks未打開時執(zhí)行,較為靈活方便。動態(tài)鏈接庫則必須在Solid-Works運行并且被加載時才可以使用,但由于其位于SolidWorks內(nèi)部,運行速度較快。由于dll文件安裝較為復(fù)雜,并且本系統(tǒng)對于運行時間要求不高,所以本系統(tǒng)采用exe格式封裝。
圖1 Access數(shù)據(jù)庫模型
用戶需要根據(jù)自己的需求在輸入界面內(nèi)輸入相應(yīng)的參數(shù)并作出相應(yīng)選擇,程序便可自動設(shè)計出相應(yīng)的設(shè)計方案。具體結(jié)構(gòu)如圖2所示。
圖2 通用雙梁橋式起重機小車參數(shù)化設(shè)計系統(tǒng)結(jié)構(gòu)
VB內(nèi)部計算模塊為本系統(tǒng)核心部分,可以代替設(shè)計人員進行一些繁瑣復(fù)雜的計算,其主要功能如下頁圖3所示。
2.2.1 輸入?yún)?shù)界面
設(shè)計人員在此處輸入所需參數(shù),程序?qū)⒏鶕?jù)這些參數(shù)進行后續(xù)驗算,并連接數(shù)據(jù)庫,根據(jù)計算所得結(jié)果確定后續(xù)可選零件的型號。
2.2.2 最終生成的模型
圖3 內(nèi)部計算模塊功能
圖4 系統(tǒng)總參數(shù)的輸入界面
圖5 系統(tǒng)最終生成的模型
本次設(shè)計以通用雙梁橋式起重機小車為例,介紹了起重機小車的參數(shù)化設(shè)計一般方法。在此過程中綜合運用了VB 編程、SolidWorks二次開發(fā)、Access數(shù)據(jù)庫技術(shù)等實現(xiàn)了其中所有零部件的選取。選型用零部件參數(shù)由Access數(shù)據(jù)庫管理,需要查詢表格時VB會自動連接Access并按照用戶輸入的參數(shù)查找。最后VB 調(diào)用SolidWorks的API函數(shù)進行模型創(chuàng)建。此次設(shè)計的系統(tǒng)可以在用戶只輸入特定參數(shù)的情況下,自動按照程序設(shè)計通用雙梁橋式起重機的小車,并在SolidWorks里邊創(chuàng)建三維模型。用戶可以任意更改初始參數(shù),所生成的模型也會隨之改變。本系統(tǒng)采用可執(zhí)行文件格式封裝,獨立于SolidWorks,可以靈活移植,在一定程度上可以減輕設(shè)計人員的負擔(dān),并加快其設(shè)計速度。
[1]中國工程機械網(wǎng).工程起重產(chǎn)業(yè)狀況及發(fā)展趨勢[J].機械工業(yè)標準化與質(zhì)量,2011(8):12-14.
[2]曾鋒,鐘治初,姚山.SolidWorks API二次開發(fā)方法與應(yīng)用[[J].嘉應(yīng)學(xué)院學(xué)報,2011(29):21-25.
[3]葛振華,趙茹茹.基于API與方程式的SolidWorks參數(shù)化建模應(yīng)用[J].金屬加工(冷加工),2012(12):84.
[4]安穎蓮.Visual Basic程序設(shè)計[M].北京:機械工業(yè)出版社,2009.
[5]郭威.鑄造起重機小車參數(shù)化設(shè)計系統(tǒng)研究[D].太原:太原科技大學(xué),2013.