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