基于SolidWorks尺寸驅動建模的二次開發
闡述了SolidWorks二次開發原理,提出了基于零件尺寸遍歷的尺寸驅動建模二次開發方法并詳細論述了開發思路。以VBA為開發工具,運用SolidWorks API技術,實現了此方法在SolidWorks 中的應用。該方法對傳統的尺寸驅動建模進行了改進,使尺寸驅動建模具有普遍適用性,可大大提高產品設計效率。
引言
SolidWorks 是一款優秀的三維工程軟件,因其操作簡單、功能強大、具有很好的開放性和兼容性而為廣大機械設計工程師所接受。但SolidWorks 畢竟是國外軟件,與我國國家標準在很多方面有所不同,多年來,針對SolidWorks 軟件的二次開發工作從未間斷。
在系列零件設計及形狀相似的模型建模方面,傳統的SolidWorks 的二次開發主要有兩種:一是使用系列零件設計表;二是定制尺寸驅動窗體。這兩種方法都有其不足之處:系列零件設計表需要設計者先輸入大量特定的尺寸數據,使用時若表中沒有需要的系列,仍需要對模型進行重新建模;定制尺寸驅動窗體只針對某特定形狀的零件,不具有普遍性,例如,定制的平鍵尺寸驅動窗體只能在平鍵建模時使用,螺栓建模時將無法使用。
本文以SolidWorks 自帶的VBA 為開發工具,提出了基于SolidWorks 尺寸驅動建模的二次開發方法,該方法與定制尺寸驅動窗體有相似之處,但在模型針對性方面做了改進,使尺寸驅動建模具有普遍性。任何在設計時標注了尺寸的模型,都可以使用該方法輕松快速地實現模型尺寸數據更改,從而幫助設計者大大提高工作效率。
1、開發原理
SolidWorks 二次開發主要通過其內嵌的API(Application Programming Interface,應用程序接口)進行,任何基于Windows 系統,支持OLE(Object Linking and Embedding,對象鏈接與嵌入)技術的編程軟件,如VB、Delphi、VBA、C、VisualC++等都可以對SolidWorks 進行二次開發。API 就像一個暗盒,設計者只需要在程序中為API 提供相應的參數,API 函數就能輸出相應的結果,而無需理會API 內部的工作方式。開發時,開發者要找到完成所需功能的API 函數,了解該函數的參數含義,從而完成二次開發。
Solidworks API 對象是一個自上而下的多層次的樹形網絡。如圖1 所示,Sldworks 是根目錄對象,位于應用程序的底層,是訪Solidworks API 所有對象的入口程序。接口對Solidworks API 的調用實行逐級尋訪,先調用能實現所需功能對象的父對象,然后調用與父對象相關的子對象,如果子對象所封裝的屬性和方法不能實現所需要的功能,則繼續調用該子對象的下級子對象,如此逐級遍歷,直到結束[5]。So1idworksAPI 父對象與子對象是包含關系,不是繼承關系,父對象包含子對象的屬性和方法,子對象自身不帶有該屬性和方法。二次開發中,如果沒有按規則進行API逐級調用,將無法實現所需功能。本文所做二次開發主要用到了ModelDoc2 對象的特征管理子對象Feature 對象和尺寸管理子對象Parameter 對象。
2、開發思路
用戶在SolidWorks 建模過程中標注的尺寸,SolidWorks 會自動為其生成在該零件中惟一的尺寸名稱。特征樹中零件特征分為二維特征“草圖x”和三維特征“拉伸x/切除x/旋轉x 等”兩類(x 為數字,下同)。每次執行由二維草圖生成三維特征的操作時,SolidWorks 通常僅自動生成一個三維尺寸名稱,一般為“D1@拉伸1”、“D1@旋轉1”的形式;二維草圖中的尺寸數量則由設計者標注的多少決定,例如用戶在“草圖2”中標注了三個尺寸,則SolidWorks 為三個尺寸生成的名稱分別為“D1@草圖2”、“D2@草圖2”和“D3@草圖2”。因此,通過遍歷零件特征讀取各個特征包含的尺寸數目,就可以在程序中還原尺寸數據名稱,然后為各個尺寸賦值,重建模型。
圖1 Solidworks對象模型
圖2 尺寸驅動建模開發流程
尺寸驅動建模開發流程如圖2 所示,啟動SolidWorks 后,判斷是否有零件被打開。如果有,則獲得當前零件的名稱,供遍歷特征及尺寸驅動建模時使用;如果沒有,提示用戶打開零件。程序獲得零件名稱之后,開始對零件的特征樹進行遍歷。
因為特征樹中“備注”、“注解”、“光源”、“材質”、視圖基準面、“原點”等特征不具備尺寸特征,API 遍歷特征樹的順序又為從上到下依次進行,且零件特征緊接“原點”特征之下,所以遍歷過程中判斷當前特征是否為“原點”,如果為“原點”,則在下一次的遍歷中開始遍歷零件的各個特征及特征所包含的尺寸數目。遍歷特征并判斷該特征包含尺寸數目時,通過判斷“選擇尺寸時返回值是否為真”來實現。例如,零件模型特征樹中有“草圖1”,“草圖1”中含有x 個用戶標注的尺寸,程序通過循環,從選擇“D1@草圖1”開始判斷選擇“Dy@草圖1”時返回值的真假,當1≤y≤x 時,返回值為真,說明尺寸存在,當y=x+1 時返回值為假,說明尺寸不存在,并停止在“草圖1”特征的尺寸遍歷,從而獲得“草圖1”包含的尺寸數目。遍歷出各個特征所包含的尺寸數目之后,分別將其存儲于數組,然后根據各個特征的名稱及所包含的尺寸數目,動態加載尺寸驅動窗體,并在窗體上顯示每個尺寸名稱及相應的尺寸數據輸入框。用戶輸入相應尺寸的數值并確定,程序即可通過調用Solidworks API函數,自動完成尺寸驅動建模。
4、結束語
本文指出了傳統的基于SolidWorks 對系列零件及形狀相似、尺寸不同的零件模型二次開發方面存在的不足,提出了基于SolidWorks 尺寸遍歷的尺寸驅動建模二次開發方法。運用SolidWorks API 技術,以SolidWorks 自帶VBA 為開發工具,實現了該方法在SolidWorks 中的應用,使得尺寸驅動建模能夠針對任何模型方便地進行尺寸數據的更改,適用性得到了極大的提高,這對提高產品設計效率,縮短產品設計周期具有重要意義。