宋 琦,張亮有
(太原科技大學(xué) 機(jī)械工程學(xué)院,山西 太原 030024)
隨著產(chǎn)品設(shè)計(jì)信息化的高速發(fā)展,三維CAD技術(shù)的應(yīng)用日趨廣泛。帶式輸送機(jī)在現(xiàn)代工業(yè)生產(chǎn)過程中發(fā)揮的作用越來越大,產(chǎn)品已經(jīng)實(shí)現(xiàn)了通用化、標(biāo)準(zhǔn)化、系列化,因此,對(duì)帶式輸送機(jī)三維設(shè)計(jì)[1]開發(fā)技術(shù)的研究刻不容緩。
SolidWorks是一款優(yōu)秀的機(jī)械設(shè)計(jì)自動(dòng)化軟件,利用SolidWorks能夠設(shè)計(jì)全相關(guān)的三維實(shí)體模型及裝配體。軟件本身具有良好的人機(jī)交互式參數(shù)繪圖功能,通過三維建模技術(shù)和參數(shù)化技術(shù),設(shè)計(jì)人員可以方便地對(duì)已有模型進(jìn)行交互式的修改。
SolidWorks主要依靠其軟件內(nèi)嵌的API接口進(jìn)行二次開發(fā)。API接口是一種COM術(shù)語,它囊括了SolidWorks中使用到的所有類,SolidWorks采用的是面向?qū)ο蠹夹g(shù)的方法,在SolidWorks之下是表示應(yīng)用程序各種對(duì)象模型的事件、屬性和方法。COM編程使得SolidWorks軟件將實(shí)際的SolidWorks對(duì)象的上千種函數(shù)功能全部暴露給外部世界。編程人員通過調(diào)用SolidWorks API函數(shù),就可以完成對(duì)三維模型的創(chuàng)建、修改、裝配等操作,從而實(shí)現(xiàn)某些特定功能設(shè)計(jì)的自動(dòng)化。SolidWorks API的對(duì)象模型是一個(gè)自上而下的層次結(jié)構(gòu),Sldworks是其中的最高級(jí)對(duì)象,必須先對(duì)其進(jìn)行訪問,然后才能訪問層次結(jié)構(gòu)中的下一級(jí)對(duì)象,以此類推。SolidWorks二次開發(fā)的工具主要有Visual Basic、Visual C++和Delphi等編程語言。其中,Visual Basic是一種可視化應(yīng)用程序的編程語言,語法規(guī)則簡(jiǎn)單,而且SolidWorks軟件所提供的宏錄制功能是在VBA的環(huán)境下實(shí)現(xiàn)的,與Visual Basic語法規(guī)則幾乎一致;另一方面,使用VB語言可以簡(jiǎn)單快捷地建立強(qiáng)大的數(shù)據(jù)庫,因而我們選擇Visual Basic作為開發(fā)工具。
參數(shù)化設(shè)計(jì)和變型零部件的三維外形建模是SolidWorks二次開發(fā)應(yīng)用的兩個(gè)主要方面,解決了同結(jié)構(gòu)、不同尺寸零件的大批量設(shè)計(jì)問題以及具有非標(biāo)準(zhǔn)表面零部件的三維設(shè)計(jì)難題[2]。本文主要通過SolidWorks的二次開發(fā),根據(jù)模型參數(shù)的變化,動(dòng)態(tài)地獲得所需零件的三維實(shí)體模型及裝配體?;赟olidWorks二次開發(fā)的參數(shù)化建模方法主要有編程法和尺寸驅(qū)動(dòng)法兩種。
編程法就是將模型的建立過程完全利用Visual Basic編程語言和SolidWorks API函數(shù)表達(dá)在應(yīng)用程序中,利用程序來順序地驅(qū)動(dòng)設(shè)計(jì)過程,模型的創(chuàng)建流程類似于手工建模。在編程法中,設(shè)計(jì)過程的所有約束和關(guān)系式都包含在程序代碼中。這種方法無需模型庫的支持,適用于參數(shù)較多或變型設(shè)計(jì)的零部件產(chǎn)品的參數(shù)化建模,但要求編程人員非常熟悉SolidWorks API函數(shù)。
尺寸驅(qū)動(dòng)法是利用設(shè)計(jì)參數(shù)和三維模型的相關(guān)性,在三維模型結(jié)構(gòu)保持不變的情況下,將零部件模型的尺寸標(biāo)注視為變量,給予變量不同的尺寸值,就會(huì)得到一系列結(jié)構(gòu)類型相同而尺寸不同的零部件模型。模型的創(chuàng)建實(shí)質(zhì)就是對(duì)基準(zhǔn)模型的參數(shù)化重建,這種方法節(jié)省了模型建立的過程,執(zhí)行效率更高,但需要模型庫的支持,模型的設(shè)計(jì)變量是模型與程序之間的聯(lián)系紐帶。
選用以上任一種二次開發(fā)方法,都需要使用SolidWorks API函數(shù)和編寫大量的程序代碼。采用Visual Basic對(duì)SolidWorks進(jìn)行二次開發(fā),就可以利用SolidWorks中的宏錄制功能,獲得相應(yīng)的宏操作代碼,將其復(fù)制添加到主程序?qū)?yīng)部分,再將有關(guān)常量換成相應(yīng)的變量,經(jīng)過編輯修改調(diào)試來達(dá)到程序的要求。
使用VB對(duì)SolidWorks API進(jìn)行二次開發(fā)時(shí),每個(gè)工程中必須包含SolidWorks 2012Constant Type Library。這個(gè)類型庫包含所有公開的API接口以及它們包含的用于SolidWorks自動(dòng)操作的可使用成員[3]。只有在VB工程中引用了該類型庫,才可以建立SolidWorks應(yīng)用對(duì)象,創(chuàng)建新的零件或裝配圖,其連接代碼如下:
程序中模型的創(chuàng)建需要大量數(shù)據(jù)的支持,本文采用Access 2007創(chuàng)建參數(shù)化設(shè)計(jì)所需的數(shù)據(jù)庫,并且以DTⅡ(A)手冊(cè)中提供的數(shù)據(jù)表為依據(jù),以直接錄入的方式添加數(shù)據(jù)。采用ADO技術(shù)對(duì)數(shù)據(jù)庫進(jìn)行訪問[4],ADO是Microsoft提出的一種應(yīng)用程序接口,也是COM的一部分。ADO的對(duì)象模型主要包括Connection(數(shù)據(jù)庫連接對(duì)象)、Recordset(數(shù)據(jù)集對(duì)象)和Command(命令對(duì)象)三個(gè)對(duì)象,使VB程序可以方便地實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的訪問。在工程中引用Microsoft ActiveX Data Objects 6.1Library,聲明并創(chuàng)建數(shù)據(jù)庫連接對(duì)象,然后建立如下數(shù)據(jù)庫連接:
在零部件模型的裝配過程中主要運(yùn)用了數(shù)學(xué)變換陣?yán)碚?,通過矩陣變換可以確定或移動(dòng)一個(gè)零部件在裝配體中的物理位置[5]。裝配體的零部件可以是單獨(dú)的零件,也可以是已裝配好的子裝配體。而配合關(guān)系是指零部件的表面或邊與參考集合體(基準(zhǔn)軸、基準(zhǔn)面)的約束關(guān)系,用于調(diào)整零部件在裝配體中的位置和方向,限制零部件的自由度。配合關(guān)系可以分為標(biāo)準(zhǔn)配合、高級(jí)配合以及機(jī)械配合,其中,常用到的標(biāo)準(zhǔn)配合又包括角度、距離、鎖定、同軸心、垂直、重合、平行、相切等8種配合類型。
在設(shè)計(jì)零部件的時(shí)候,需要預(yù)先考慮到該零部件在裝配體模型中與其他零部件之間的配合關(guān)系,并根據(jù)實(shí)際情況,在適當(dāng)?shù)奈恢锰砑踊鶞?zhǔn)軸和基準(zhǔn)面,便于后期的裝配。裝配完畢后,干涉檢查是一項(xiàng)非常重要的環(huán)節(jié),用于檢查各個(gè)零部件之間的干涉情況。
輸送機(jī)普通輥?zhàn)又饕ㄝS、輥皮和軸承座等零部件。本文以輸送機(jī)普通輥?zhàn)拥妮S為例說明基于VB的SolidWorks二次開發(fā)的具體過程。輥?zhàn)虞S外形簡(jiǎn)單,所以選用尺寸驅(qū)動(dòng)的方法進(jìn)行二次開發(fā)更加方便快捷。
(1)確定建模需要定義的軸的參數(shù),并分析軸的設(shè)計(jì)關(guān)系。需要確定的參數(shù)主要是驅(qū)動(dòng)各種特征的驅(qū)動(dòng)尺寸[6],包括描述特征外形的定形尺寸和確定特征位置的定位尺寸。DTⅡ(A)手冊(cè)中已經(jīng)給出普通輥?zhàn)虞S的設(shè)計(jì)關(guān)系和部件型譜,分別如圖1和表1所示,可以確定軸的規(guī)格參數(shù)主要有5個(gè):長(zhǎng)度L+2f、直徑d、f、h、b。
圖1 輥?zhàn)油庑纬叽鐓?shù)
表1 輥徑為Φ108mm輥?zhàn)拥牟糠植考妥V
(2)運(yùn)用SolidWorks軟件創(chuàng)建輥?zhàn)虞S的三維模型,并將其中的參數(shù)尺寸名稱重新命名,以更好地表達(dá)特征,例如,軸的直徑用d表示。
(3)依據(jù)手冊(cè)所提供的數(shù)據(jù),在Microsoft Office Access 2007中建立模型尺寸數(shù)據(jù)庫“普通輥?zhàn)訁?shù)尺寸表.accdb”。
(4)建立尺寸驅(qū)動(dòng)用戶界面,編寫程序連接SolidWorks和Access數(shù)據(jù)庫,利用已經(jīng)建立好的數(shù)據(jù)庫表中的數(shù)據(jù),選擇輥?zhàn)拥闹睆紻和長(zhǎng)度L,可以快捷地進(jìn)行數(shù)據(jù)庫查詢,從而驅(qū)動(dòng)SolidWorks中三維模型的建立,實(shí)現(xiàn)尺寸數(shù)據(jù)與模型變量的一一對(duì)應(yīng),還可以根據(jù)實(shí)際需求讀取尺寸數(shù)據(jù)、對(duì)數(shù)據(jù)進(jìn)行修改保存。以下是將變量參數(shù)賦予軸尺寸的部分代碼:
輥?zhàn)恿悴考P徒⒑?,將它們插入到裝配體文件中,實(shí)現(xiàn)輸送機(jī)普通輥?zhàn)拥淖詣?dòng)裝配。其中,主要用到的SolidWorks API有:AssemblyDoc.AddComponent5(向裝配體文件中添加零部件)、AssemblyDoc.Extension.SelectByID(選擇實(shí)體元素)、AssemblyDoc.AddMate3(建立配合關(guān)系)。普通輥?zhàn)友b配流程如圖2所示。
輸送機(jī)普通輥?zhàn)拥难b配運(yùn)行結(jié)果如圖3所示。用同樣的技術(shù)原理和方法建立輥?zhàn)觾?nèi)部軸承、脹套、密封圈等部件的三維模型,生成完整的輥?zhàn)尤S總裝圖,其內(nèi)部結(jié)構(gòu)如圖4所示。
圖2 普通輥?zhàn)友b配流程圖
本文基于三維設(shè)計(jì)開發(fā)技術(shù),通過分析輸送機(jī)輥?zhàn)拥耐庑翁卣鳎肰isual Basic對(duì)SolidWorks進(jìn)行二次開發(fā),實(shí)現(xiàn)了帶式輸送機(jī)普通輥?zhàn)拥娜S參數(shù)化建模及智能裝配,在產(chǎn)品系列化設(shè)計(jì)、智能裝配方面具有工程實(shí)際意義。設(shè)計(jì)人員可以依據(jù)該原理對(duì)SolidWorks進(jìn)行其他更加復(fù)雜的二次開發(fā),完成機(jī)械產(chǎn)品整機(jī)系統(tǒng)的三維模型設(shè)計(jì),可縮短產(chǎn)品設(shè)計(jì)周期,提高產(chǎn)品開發(fā)效率。
圖3 輥?zhàn)友b配三維圖
圖4 輥?zhàn)涌傃b圖內(nèi)部結(jié)構(gòu)
[1]徐國(guó)權(quán),黃志超.基于SolidWorks的參數(shù)化設(shè)計(jì)二次開發(fā)研究[J].機(jī)械設(shè)計(jì)與研究,2007,23(1):68-70.
[2]曾鋒,鐘治初,姚山.SolidWorks API二次開發(fā)方法與應(yīng)用[J].嘉應(yīng)學(xué)院學(xué)報(bào)(自然科學(xué)版),2011,29(11):21-25.
[3]葉修梓,陳超祥.SolidWorks高級(jí)教程:二次開發(fā)與API[M].北京:機(jī)械工業(yè)出版社,2009.
[4]盛利,張亮有,謝立新.SolidWorks二次開發(fā)精確草繪問題的分析與探討[J].現(xiàn)代制造工程,2014(4):68-71.
[5]于洋,賀棟,魏蘇麒.基于SolidWorks二次開發(fā)的智能裝配技術(shù)研究[J].機(jī)械設(shè)計(jì)與制造,2011(3):60-62.
[6]田文濤,賀小華.基于VB技術(shù)的SolidWorks二次開發(fā)與應(yīng)用[J].計(jì)算機(jī)工程與科學(xué),2009,31(7):65-67.