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