劉世才
【摘 要】通過(guò)模具導(dǎo)柱參數(shù)化設(shè)計(jì)簡(jiǎn)要闡述了利用vb語(yǔ)言對(duì)solidworks進(jìn)行二次開(kāi)發(fā)的基本思路和開(kāi)發(fā)過(guò)程,通過(guò)驗(yàn)證該方法可行。完全可以依據(jù)該方法和思路制作滿足自身需要的參數(shù)化元件庫(kù)從而大大提高設(shè)計(jì)效率縮短設(shè)計(jì)的周期,具有較好的實(shí)際意義。
【關(guān)鍵詞】solidwoks;二次開(kāi)發(fā);參數(shù)化建模
中圖分類號(hào): TH49;TP391.72文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 2095-2457(2019)07-0178-002
DOI:10.19694/j.cnki.issn2095-2457.2019.07.073
【Abstract】through parametric design of die guide pillar,the basic idea and development process of secondary development of SolidWorks using VB language are briefly described, and the feasibility of this method is verified. According to this method and thinking, we can make parametric component library to meet our own needs, which greatly improves the design efficiency and shortens the design cycle, and has good practical significance.
【Key words】Parametric modeling;Solidwoks;Secondary development
1 Solidworks二次開(kāi)發(fā)的意義
在產(chǎn)品設(shè)計(jì)時(shí),會(huì)頻繁遇到一些尺寸不同但形狀相似的零件,例如齒輪、模具中的導(dǎo)柱導(dǎo)套、皮帶輪等而這些零件在自帶的標(biāo)準(zhǔn)件庫(kù)是無(wú)法直接調(diào)用的。這類型的零件如果單獨(dú)建模會(huì)耗費(fèi)大量的時(shí)間和精力,但如果能將其進(jìn)行參數(shù)化則可大大提高設(shè)計(jì)效率。所謂參數(shù)化就是將零件中的某些約束變成可調(diào)整的變量參數(shù),今后設(shè)計(jì)時(shí)給這些變量參數(shù)賦予不同的值后就可以得到相應(yīng)的模型。在Solidworks中參數(shù)化設(shè)計(jì)主要有兩種途徑:一是利用系列零件設(shè)計(jì)表,這種方法要求設(shè)計(jì)者之前要輸入大量的模型參數(shù)。另外一種途徑是通過(guò)對(duì)軟件的二次開(kāi)發(fā)來(lái)實(shí)現(xiàn)。
本文以導(dǎo)柱的參數(shù)化三維造型為例介紹通過(guò)VB語(yǔ)言對(duì)solidworks二次開(kāi)發(fā)的基本思路、方法和過(guò)程。從而為其他零件的參數(shù)化三維造型的二次開(kāi)發(fā)提供一定的參考。
2 solidworks二次開(kāi)發(fā)的思路
solidworks二次開(kāi)發(fā)主要是通過(guò)VB等編程語(yǔ)言調(diào)用API函數(shù)來(lái)完成,常用的方法有以下兩種。
2.1 完全編程法
完全編程法是通過(guò)編程調(diào)用API函數(shù)來(lái)控制solidworks建模的所有操作。這種方法對(duì)編程人員的水平要求較高,編程人員不僅要充分了解API函數(shù),還要具有較強(qiáng)的編程能力。這種方法使編程的工作量比較大,但是由于建模過(guò)程中的所有操作都通過(guò)API函數(shù)實(shí)現(xiàn),因此可以實(shí)現(xiàn)三維模型的全參數(shù)化驅(qū)動(dòng)。
2.2 建模與編程相結(jié)合法
所謂建模與編程相結(jié)合是先在solidworks中建立一個(gè)初始模型,并確定好主要的設(shè)計(jì)變量;然后在通過(guò)編程調(diào)用具體的API函數(shù)根據(jù)實(shí)際需要修改設(shè)計(jì)變量,從而得到最終的零件。建模與編程相結(jié)合法相對(duì)于完全編程法而言,由于這種方法將大量的建模工作轉(zhuǎn)移到solidworks的建模環(huán)境中,剔除了完全編程法中的繁瑣編程,因此工作量大大減少?gòu)亩岣吖ぷ餍蕦?duì)編程人員的要求也隨之降低。本文采用建模與編程相結(jié)合法以導(dǎo)柱參數(shù)化設(shè)計(jì)為例進(jìn)行討論。
3 常用API函數(shù)
為了方便用戶進(jìn)行二次開(kāi)發(fā)Solidworks提供了大量的API函數(shù),用戶可以通過(guò)各種編程語(yǔ)言來(lái)調(diào)用這些函數(shù),從而達(dá)到操作solidworks的目的。這樣我們就可以建立適合自身需要、專用的功能模塊。而建立的這種功能模塊可根據(jù)需要生成插件掛在solidworks的菜單下,或者生成單獨(dú)的exe程序,也可以做成工具條的形式。因此要對(duì)solidworks進(jìn)行二次開(kāi)發(fā),除了要掌握一定的編程語(yǔ)言外,還必須先了解solidworks的API函數(shù)。下面就以VB為編程語(yǔ)言介紹幾個(gè)常用的API函數(shù)。
3.1 與solidworks建立連接
二次開(kāi)發(fā)時(shí)首先要建立SolidWorks的鏈接,創(chuàng)建SolidWorks的應(yīng)用對(duì)象代碼為:
Dim swApp As Sldworks.Sldworks
Set swAPP=CreateObject(“Sldworks.application”)
通過(guò)這個(gè)代碼就可以打開(kāi)SolidWorks的接口,可以調(diào)用它的API函數(shù)了
3.2 直線繪制編程格式及其含義
ModeDoc.CreateLine2(X起始,Y起始,Z起始,X終點(diǎn),Y終點(diǎn),Z終點(diǎn))(constructionGeometry=true),其中X起始,Y起始,Z起始 表示直線的起點(diǎn)坐標(biāo)X終點(diǎn),Y終點(diǎn),Z終點(diǎn)表示直線的終點(diǎn)坐標(biāo) constructionGeometry=true時(shí)表示畫(huà)中心輔助線
3.3 旋轉(zhuǎn)增料編程格式及其含義
PartDoc.featureRevolve(angle,reverseDir,angle2,revtype)
其中angle:表示角度 reverseDir :為true時(shí)為反向revtype為1時(shí)該參數(shù)無(wú)效;Angle2表示旋轉(zhuǎn)的反向角度,僅當(dāng)revtype為2時(shí)有效;Revtype:取0時(shí)為單向旋轉(zhuǎn)增料,取1時(shí)為雙向等角度旋轉(zhuǎn)增料。
4 開(kāi)發(fā)過(guò)程
4.1 導(dǎo)柱建模型并錄制宏
Solidworks的二次開(kāi)發(fā)主要是調(diào)用solidworks中的API函數(shù)。在整個(gè)開(kāi)發(fā)過(guò)程中牽涉到非常多的API命令,對(duì)于大多數(shù)人來(lái)說(shuō)比較難也不可能全面掌握。因此為了簡(jiǎn)化編程過(guò)程、提高編程效率、更好地構(gòu)建基礎(chǔ)框架。本文利用solidworks宏命令的錄制功能進(jìn)行相關(guān)部分的錄制,然后在VB環(huán)境下依據(jù)相關(guān)語(yǔ)法約束對(duì)錄制的宏代碼進(jìn)行必要的改寫(xiě)。
運(yùn)行solidworks新建文件然后啟動(dòng)宏錄制,接下來(lái)就可以按照正常的建模方式完成導(dǎo)柱的建模得到如圖所示零件,停止宏錄制并保存錄制的宏代碼即可。
4.2 確定參數(shù)變量與約束
導(dǎo)柱的形狀主要由D(導(dǎo)柱的肩部直徑)d1(導(dǎo)柱導(dǎo)向部分直徑)d2(導(dǎo)柱的安裝部分直徑)L1(導(dǎo)柱的肩部長(zhǎng)度)L2(決定導(dǎo)柱的安裝部分長(zhǎng)度)L3(油槽的軸向定位尺寸)L4(油槽間距)R(小端倒角)r(油槽圓角),倒角大小,油槽數(shù)量等參數(shù)決定。這些參數(shù)是在導(dǎo)柱設(shè)計(jì)時(shí)比較經(jīng)常變化的尺寸,可以把這些參數(shù)當(dāng)做自變量,其余參數(shù)可以當(dāng)做因變量,在建模時(shí)通過(guò)約束或者通過(guò)公式進(jìn)行約束。導(dǎo)柱設(shè)計(jì)變量參數(shù)如下。
4.3 設(shè)計(jì)交互界面
為了讓程序直觀便捷可以在VB環(huán)境下通過(guò)窗體創(chuàng)建如圖所示交互界面。
4.4 宏代碼編輯及代碼編寫(xiě)
通過(guò)宏錄制的代碼必須在VB編輯器中進(jìn)行必要的修改,替換相關(guān)代碼、刪除冗余代碼才能順利運(yùn)行。編輯宏錄制的代碼的關(guān)鍵是讀懂錄制宏代碼中各個(gè)代碼的含義,找出代碼中與關(guān)鍵變量相關(guān)的參數(shù),用變量替代后,通過(guò)編程對(duì)這些變量分別賦值即可。雙擊交互界面中“3D建模按鈕”并依據(jù)交互界面中的變量名稱定義變量,然后粘貼宏錄制得到的代碼,并用變量替代相關(guān)參數(shù)如圖所示。完成代碼編輯好在VB環(huán)境下生成EXE文件即可。
Private Sub CommandButton1_Click() '3D建模按鈕
Set swApp = CreateObject("SldWorks.Application")
Set Part = swApp.ActiveDoc
Set Part =swApp.NewDocument("C:\ProgramData\
SolidWorks\SolidWorks 2012\templates\零件.prtdot", 0, 0, 0) '新建零件文件,并定義新建文件的存放位置
Set Part = swApp.ActiveDoc '激活新建的零件文件
Dim D, d1, d2, l1, l2, R, c, l, rr, l3, S As Integer '定義變量
D=TextBox1.Value'導(dǎo)柱肩部半徑
d1=TextBox2.Value'導(dǎo)柱滑動(dòng)部分半徑
d2=TextBox3.Value'導(dǎo)柱安裝部分半徑
l1=TextBox4.Value'導(dǎo)柱肩部長(zhǎng)度
l2=TextBox5.Value'導(dǎo)柱配合部分長(zhǎng)度和肩部長(zhǎng)度之和
l3=TextBox6.Value'油槽圓弧圓心到導(dǎo)柱小端端面的距離
rr=TextBox7.Value'油槽半徑
R=TextBox8.Value'導(dǎo)柱端部圓角半徑
c=TextBox9.Value'導(dǎo)柱肩部倒角(45度)
l=TextBox10.Value'導(dǎo)柱總長(zhǎng)
S=TextBox11.Value'油槽數(shù)量
l4=TextBox12.Value'兩個(gè)相鄰油槽的間距
… …… … ?… …
中間插入通過(guò)宏錄制的代碼,并將相關(guān)參數(shù)用變量名替代
… …… … ?… …
End sub
在此說(shuō)明錄制的宏與建模過(guò)程有關(guān),建模過(guò)程或建模方法不同所得到的宏代碼會(huì)有所不同。
5 結(jié)尾
以上通過(guò)模具導(dǎo)柱參數(shù)化設(shè)計(jì)簡(jiǎn)要闡述了利用vb語(yǔ)言對(duì)solidworks進(jìn)行二次開(kāi)發(fā)的基本思路和過(guò)程,通過(guò)實(shí)踐驗(yàn)證該方法是可行的。用戶完全可以依據(jù)該方法和思路開(kāi)發(fā)更多滿足自身需要的參數(shù)化零件庫(kù),從而大大提高設(shè)計(jì)效率縮短設(shè)計(jì)的周期,具有較好的實(shí)際意義。
【參考文獻(xiàn)】
[1]徐國(guó)全、黃志超.基于solidworks的參數(shù)化設(shè)計(jì)二次開(kāi)發(fā)的研究.機(jī)械設(shè)計(jì)與研究.2007.2第一期.
[2]王占中、王義文等.solidworks二次開(kāi)發(fā)在漸開(kāi)線齒輪三維造型中的應(yīng)用.機(jī)械工程師.2005年第6期.
[3]Solidworks公司著.Solidworks高級(jí)教程二次開(kāi)發(fā)與API(美)2007版.北京:機(jī)械工業(yè)出版社,2009.1.