郭書英,趙立勝,李世杰,胡雪松,秦兆杰
(河北電力裝備有限公司,河北 邯鄲 056000)
當(dāng)前,隨著產(chǎn)品設(shè)計(jì)信息化的不斷發(fā)展,企業(yè)需要提升三維CAD系統(tǒng)的設(shè)計(jì)效率,應(yīng)用參數(shù)化的設(shè)計(jì)方法,是減少設(shè)計(jì)重復(fù)性工作,提高設(shè)計(jì)效率的很好途徑。參數(shù)化設(shè)計(jì)就是將三維模型的設(shè)計(jì)實(shí)現(xiàn)數(shù)字化,通過更改某一主參數(shù),帶動(dòng)其他參數(shù)信息發(fā)生變化,進(jìn)而使用程序驅(qū)動(dòng)模型發(fā)生變化[1]。
本研究采用SolidWorks軟件與Excel相結(jié)合的方法來實(shí)現(xiàn)零部件參數(shù)化設(shè)計(jì)。首先將零部件的特性尺寸信息提取到Excel表格中,其次根據(jù)設(shè)計(jì)的需求,篩選出控制三維模型形狀和特征的參數(shù)信息,然后再設(shè)置參數(shù)信息之間的邏輯關(guān)系,最后通過程序控制這些參數(shù)驅(qū)動(dòng)三維模型更新,實(shí)現(xiàn)零部件的參數(shù)化設(shè)計(jì)。
對(duì)SolidWorks軟件的二次開發(fā),主要是通過其自帶的API接口實(shí)現(xiàn),這些API接口具有很好的兼容性,與其他的開發(fā)軟件能夠?qū)崿F(xiàn)無縫銜接,同時(shí)也提供了功能函數(shù)的使用方法、屬性以及相關(guān)應(yīng)用案例。Excel的宏功能與SolidWorks的API接口相結(jié)合,能夠訪問并操作SolidWorks,實(shí)現(xiàn)SolidWorks的二次開發(fā)。
SolidWorks二次開發(fā)的方式有兩種,第一種是基于自動(dòng)化技術(shù),通過EXE形式的開發(fā),可制定人機(jī)友好互動(dòng)界面,便于用戶操作;第二種是基于組建對(duì)象模型,即開發(fā)完成程序后,再生成DLL文件,作為一個(gè)插件嵌入到SolidWorks軟件的應(yīng)用界面上。EXE軟件獨(dú)立運(yùn)行,出現(xiàn)問題時(shí),不對(duì)SolidWorks產(chǎn)生影響,利于提升用戶的體驗(yàn);DLL插件不穩(wěn)定,就會(huì)干擾SolidWorks的正常運(yùn)行,嚴(yán)重影響用戶的體驗(yàn)。
SolidWorks三維軟件是當(dāng)前最流行的三維CAD軟件之一,也是國內(nèi)外用戶較多的軟件之一。SolidWorks API接口為用戶提供了大量的OLE對(duì)象以及對(duì)象的應(yīng)用方法和應(yīng)用案例,具體的關(guān)系層次如圖1所示。由圖1可知,SolidWorks API是由上至下的分層樹結(jié)構(gòu),在調(diào)用SolidWorks API 功能時(shí),首先需要利用SldWorks為接入口,與SolidWorks實(shí)現(xiàn)連接,訪問SolidWorks API,然后調(diào)用與其相關(guān)的子對(duì)象的屬性和方法[2]。
SolidWorks軟件操作簡(jiǎn)單方便,也具有良好的開放性,為用戶提供了C#、C++、VB、Visual Basic、Delphi等多種編程語言的二次開發(fā)接口,利于對(duì)其進(jìn)行二次開發(fā)。VBA的編程比較簡(jiǎn)單,利于對(duì)SolidWorks進(jìn)行二次開發(fā);C++主要用于做底層驅(qū)動(dòng),應(yīng)用時(shí)主要與硬件相結(jié)合;C#主要應(yīng)用于大規(guī)模系統(tǒng)的開發(fā)。
SolidWorks自帶宏錄制功能,可以將用戶的操作以VBA的代碼記錄下來,通過查看宏代碼能夠找到需求的功能代碼,同時(shí)Excel可直接運(yùn)行VBA代碼,并且能夠?qū)olidWorks的三維模型的參數(shù)信息提取并顯示到表格中,直觀性強(qiáng),操作方便,因此適合采用Excel作為SolidWorks的二次開發(fā)工具[3]。Excel具備數(shù)據(jù)處理功能,利用這一功能設(shè)置參數(shù)信息間的關(guān)聯(lián)關(guān)系,實(shí)現(xiàn)參數(shù)信息的聯(lián)動(dòng)修改,再利用這些參數(shù)信息驅(qū)動(dòng)模型發(fā)生相應(yīng)變化,從而實(shí)現(xiàn)參數(shù)化的設(shè)計(jì),具體流程如圖2所示。
圖1 SolidWorks的對(duì)象層次體系
圖2 SolidWorks二次開發(fā)零件參數(shù)化設(shè)計(jì)實(shí)現(xiàn)流程圖
本節(jié)內(nèi)容主要說明如何實(shí)際開發(fā)一個(gè)零部件實(shí)現(xiàn)參數(shù)化設(shè)計(jì)的過程,并附有相關(guān)的程序代碼。此種開發(fā)的方法可用于多種產(chǎn)品,范圍廣,適用性強(qiáng),以KYN28高壓柜中的避雷器安裝板三維模型為例,展示其實(shí)現(xiàn)參數(shù)化設(shè)計(jì)的整個(gè)過程[4]。
首先在Excel的宏模塊中定義需要用到的關(guān)鍵詞,代碼如下:
Public swApp As Object, swModel As Object, swFeatMgr As Object
Public selData As Object, selMgr As Object
Public lstatus As Long, lWarnings As Long, lErrors As Long
Public swFileTYpe As Integer
實(shí)現(xiàn)Excel與SolidWorks連接并激活窗口的代碼如下:
Set swApp = CreateObject("SldWorks.Application")
Set swModel = swApp.ActiveDoc
Excel與SolidWorks完成連接,打開目標(biāo)三維模型后,則需要提取模型的參數(shù)信息,實(shí)現(xiàn)此功能的相關(guān)代碼如下:
Set swDispDim = swFeat.GetFirstDisplayDimension
Set swDim = swDispDim.GetDimension
Set swDispDim = swFeat.GetDisplayDimension(swDispDim)
三維模型的參數(shù)信息提取完成后,需要將結(jié)果輸出到Excel的表格中,實(shí)現(xiàn)此功能的部分代碼如下:
Range("B4")="主參數(shù)"
Range("B5")="參數(shù)名稱"
Range("G5")=swFeat.GetFirstDisplayDimension
Range("G6")=swFeat.GetNextDisplayDimension(swDispDim)
三維模型的參數(shù)信息輸出完成后,根據(jù)實(shí)際的設(shè)計(jì)需求,利用Excel本身數(shù)據(jù)處理功能設(shè)置參數(shù)信息之間的關(guān)聯(lián)關(guān)系,實(shí)現(xiàn)參數(shù)信息的聯(lián)動(dòng)修改,如圖3所示。
圖3 避雷器安裝板模型參數(shù)信息圖
Excel表格上的三維模型參數(shù)信息實(shí)現(xiàn)聯(lián)動(dòng)修改后,利用這些參數(shù)信息驅(qū)動(dòng)模型更新,實(shí)現(xiàn)零件的參數(shù)化設(shè)計(jì),驅(qū)動(dòng)模型變化的相關(guān)代碼如下:
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
Dim myModelView As Object
Set myModelView = Part.ActiveView
Part.Parameter(“D1@草圖1"& strFileName).SystemValue=d/1000
Part.Parameter(“D1@草圖22"& strFileName).SystemValue=d/1000
利用Excel驅(qū)動(dòng)避雷器安裝板三維模型發(fā)生變化,如圖4所示。
圖4 Excel驅(qū)動(dòng)避雷器安裝板三維模型變化
本文闡述了利用Excel二次開發(fā)SolidWorks實(shí)現(xiàn)零部件參數(shù)化設(shè)計(jì)的方法和具體流程。實(shí)現(xiàn)零部件參數(shù)化設(shè)計(jì)的方法簡(jiǎn)單,可擴(kuò)展性強(qiáng),無需維護(hù)代碼,便于設(shè)計(jì)人員的使用,可以減少設(shè)計(jì)的重復(fù)性工作,提高設(shè)計(jì)效率。該參數(shù)化設(shè)計(jì)基于Excel與SolidWorks軟件,編程簡(jiǎn)單,通用性較強(qiáng),利于開發(fā),為開發(fā)人員提供了SolidWorks的二次開發(fā)新思路。
河北省科學(xué)院學(xué)報(bào)2022年3期