摘 要:文章介紹了基于SolidWorks為平臺(tái)的二次開(kāi)發(fā)原理。并選用VB作為編程語(yǔ)言,以階梯軸的二次開(kāi)發(fā)為例,詳細(xì)說(shuō)明具體開(kāi)發(fā)步驟。實(shí)例證明,對(duì)要SolidWorks進(jìn)行特定目標(biāo)的二次開(kāi)發(fā),對(duì)于企業(yè)實(shí)現(xiàn)系列零件集成化,提高產(chǎn)品設(shè)計(jì)柔性具有重要的現(xiàn)實(shí)意義。
關(guān)鍵詞:SolidWorks;參數(shù)化設(shè)計(jì);VB
1 概述
SolidWorks是世界上第一個(gè)基于Windows平臺(tái)的CAD設(shè)計(jì)軟件,它可實(shí)現(xiàn)零件造型、大型裝配設(shè)計(jì)及工程圖自動(dòng)生成等功能,且采用全相關(guān)技術(shù),使得任何零件結(jié)構(gòu)的修改,都可以實(shí)現(xiàn)裝配圖和工程圖的同步更新。功能強(qiáng)大、操作簡(jiǎn)便,使其為越來(lái)越多的設(shè)計(jì)人員和企業(yè)所使用,已成為目前世界上最流行的CAD軟件之一。
然而,SolidWorks無(wú)法實(shí)現(xiàn)圖紙復(fù)制、圖形難以修改,無(wú)法將草圖導(dǎo)出建模,沒(méi)有符合我國(guó)國(guó)家標(biāo)準(zhǔn)的零件庫(kù)等不足日益突顯出來(lái)。企業(yè)對(duì)SolidWorks進(jìn)行本土化的二次開(kāi)發(fā),縮短設(shè)計(jì)周期,節(jié)約設(shè)計(jì)成本,已成為企業(yè)提高競(jìng)爭(zhēng)力的必然選擇。
2 SolidWorks二次開(kāi)發(fā)原理與方法
2.1 開(kāi)發(fā)原理
基于SolidWorks平臺(tái)的參數(shù)化系統(tǒng)設(shè)計(jì)途徑主要是利用SolidoWorks提供的數(shù)以百計(jì)的API(Appliation Programming Interface)函數(shù)[1]。
如圖1可見(jiàn),Solidworks API的對(duì)象是一個(gè)多層次結(jié)構(gòu)。其中,SldWorks對(duì)象是最頂層對(duì)象,其子對(duì)象有ModelDoc、AttributeDef、Frame、Environment,SWPropertySheet等,ModelDoc2的子結(jié)構(gòu)有PartDoc、AssemblyDoc和DrawingDoc,程序訪問(wèn)的順序是依上而下的遍歷順序,即要想訪問(wèn)低層對(duì)象,必須先訪問(wèn)高層對(duì)象。
SolidWorks提供的API函數(shù)涵蓋了全部數(shù)據(jù)模型,故通過(guò)調(diào)用API函數(shù),并對(duì)各對(duì)象進(jìn)行方法和屬性的設(shè)置,就可以輕松訪問(wèn)SolidWorks,實(shí)現(xiàn)草圖繪制、特征生成、尺寸修改、工程圖信息提取等操作,使參數(shù)化系統(tǒng)設(shè)計(jì)成為可能。
2.2 開(kāi)發(fā)方法
基于Solidworks平臺(tái)的二次開(kāi)發(fā)的方法主要有兩種[2]:其一是OLE(Object Linking and Embedding)對(duì)象的鏈接與嵌套技術(shù),它的開(kāi)發(fā)原理是是通過(guò)ID ispatch來(lái)暴露對(duì)象的屬性和方法實(shí)現(xiàn)開(kāi)發(fā),生成.exe格式的文件,不可嵌套在SolidWorks中運(yùn)行,無(wú)法與SolidWorks實(shí)現(xiàn)鏈接。其二是COM(Component Object Model)組件對(duì)象模型技術(shù),它的開(kāi)發(fā)原理是通過(guò)調(diào)用API函數(shù)的方法和屬性來(lái)實(shí)現(xiàn)開(kāi)發(fā),生成動(dòng)態(tài)鏈接.dll格式文件,可以掛于SolidWorks的菜單中,實(shí)現(xiàn)與SolidWorks的集成。
任何支持OLE技術(shù)和COM技術(shù)的編程語(yǔ)言均可作為二次開(kāi)發(fā)的工具,如今流行的開(kāi)發(fā)語(yǔ)言主要有:Visual C++、Delphi、Visual Basic 6.0等。這些開(kāi)發(fā)語(yǔ)言各有千秋,其中VB語(yǔ)言由于其語(yǔ)言規(guī)則簡(jiǎn)單、可視化程度高,且宏命令所生成的代碼完全符合VBA的語(yǔ)言格式,這使得VB在二次開(kāi)發(fā)優(yōu)勢(shì)突出,成為選用較多的編程語(yǔ)言。
3 SolidWorks二次開(kāi)發(fā)實(shí)踐研究
對(duì)于二次開(kāi)發(fā)初學(xué)者,宜采用變量與編程相強(qiáng)者合的開(kāi)發(fā)方法,即通過(guò)Solidworks的宏命令來(lái)錄制一個(gè)完整零件的建模過(guò)程,獲得基礎(chǔ)代碼,再此基礎(chǔ)上對(duì)代碼進(jìn)行一定的修改和編輯,找到設(shè)計(jì)變量,作為程序運(yùn)行和模型重建的紐帶。為了得到簡(jiǎn)明高效的基礎(chǔ)代碼,要求在建模時(shí)采用盡量少的尺寸和盡量簡(jiǎn)單特征命令。
結(jié)合以上理論,選用VB作為開(kāi)發(fā)工具,以階梯軸為例,在SolidWorks平臺(tái)上對(duì)其進(jìn)行二次開(kāi)發(fā),并對(duì)開(kāi)發(fā)流程進(jìn)行詳細(xì)闡述。
3.1 開(kāi)發(fā)流程
3.1.1 繪制一個(gè)典型階梯軸零件
該實(shí)例中,在Solidworks草圖環(huán)境中繪制一個(gè)三階階梯軸草圖,用旋轉(zhuǎn)特征命令進(jìn)行旋轉(zhuǎn),生成實(shí)體零件。對(duì)整個(gè)過(guò)程用宏命令進(jìn)行錄制,得到.swp格式文件并保存,得到基礎(chǔ)代碼。
3.1.2 確定決定零件特征的設(shè)計(jì)變量
在該設(shè)計(jì)實(shí)例中,決定階梯軸特征的參數(shù)分別為:階梯軸的階數(shù)及每段軸的軸長(zhǎng)和軸徑。所以將基礎(chǔ)代碼中的具體數(shù)值分別用設(shè)計(jì)變量L1、Phi1、L1+L2、Phi2、L1+L2+L3、Phi3代替,通過(guò)設(shè)計(jì)變量從而實(shí)現(xiàn)程序與模型的鏈接,使零件自動(dòng)化和系列化成為可能。同理,可得到四階、五階、六階階梯軸的代碼。
3.1.3 人機(jī)交互界面設(shè)計(jì)
在宏命令中插入一個(gè)用戶窗體,命名為“階梯軸二次開(kāi)發(fā)系統(tǒng)”,并為其添加標(biāo)簽、復(fù)選框、文本框、命令按鈕、圖像控件等,如圖2所示。
3.1.4 將二次開(kāi)發(fā)系統(tǒng)嵌于Solidworks菜單中
將此二次開(kāi)發(fā)系統(tǒng)通過(guò)【工具】的【自定義】命令添加到Solidowrks菜單中,如圖3所示。再次使用時(shí),只需要輸入零件的參數(shù)即可生成一系列尺寸不同的階梯軸,整個(gè)自動(dòng)化建模過(guò)程只需要幾秒鐘即可實(shí)現(xiàn),大大縮短了設(shè)計(jì)周期。
以下是關(guān)于階梯軸關(guān)鍵代碼及主要的API函數(shù)功能的說(shuō)明:
Dim swApp As Object //聲明對(duì)象是Solidworks應(yīng)用程序
Dim Part As Object //聲明對(duì)象是零件
……
Private Sub CommandButton1_Click() //定義命令按鈕的單擊事件
Set swApp =Application.SldWorks //
Phi1 = TextBox1 //將textbox1的數(shù)值賦予Phi1
L1 = TextBox2 //將textbox2的數(shù)值賦予L1
……
SetPart=swApp.NewDocument(“C:\ProgramData\SolidWorks\Solid
Works2013\templates\gb_part.prtdot”, 0, 0, 0)//新建一個(gè)SolidWor
ks文件
swApp.ActivateDoc2 “零件1”, False, longstatus
Set Part = swApp.ActiveDoc
……
Dim skSegment As Object//對(duì)象聲明
Set skSegment = Part.SketchManager.CreateLine(0#, 0#, 0#, 0#, phi1 / 2000, 0#)//創(chuàng)建一條輪廓線
Dim myFeature As Object//定義特征對(duì)象
Set myFeature = Part.FeatureManager.FeatureRevolve2(True, True, False, False, False, False, 0, 0, 6.2831853071796, 0, False, False, 0.01, 0.01, 0, 0, 0, True, True, True)//草圖旋轉(zhuǎn)
……
4 結(jié)束語(yǔ)
Solidworks提供的基于COM技術(shù)的API接口函數(shù)的理論知識(shí),設(shè)計(jì)開(kāi)發(fā)了具有實(shí)際意義的階梯軸參數(shù)化設(shè)計(jì)系統(tǒng),對(duì)企業(yè)的參數(shù)化設(shè)計(jì)具有重大的實(shí)際意義。
參考文獻(xiàn)
[1]張華,陳定方.Visual Basic為基的SolidWorks二次開(kāi)發(fā)與應(yīng)用[J].湖北工業(yè)大學(xué)學(xué)報(bào),2010(4):36-38.
[2]何岸楊.SolidWorks 二次開(kāi)發(fā)方法研究[J].計(jì)算機(jī)與信息技術(shù),2007(28):69-71.
[3]江洪,李仲興,邢啟恩.SoildWorks2003二次開(kāi)發(fā)基礎(chǔ)與實(shí)例教程[M].電子工業(yè)出版社,2003.