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