本文通過介紹“自定義屬性”這個程序的開發(fā)和使用過程,來簡單地說明
SolidWorks API的應(yīng)用,希望起到拋磚引玉的作用。
J(/
eR,ak 7@tr^JykO SolidWorks API是SolidWorks的OLE應(yīng)用程序開發(fā)接口,用戶可以利用它和支持OLE編程的開發(fā)工具,如VB、VBA(Excel,Access)、C、VC++等對SolidWorks進行二次開發(fā),建立適合用戶需要的、專用的SolidWorks 功能模塊。
Z*]n]eS [EGE| 一、問題的提出大多數(shù)工程圖紙的標題欄中應(yīng)該包括一些基本的設(shè)計信息,如零件名稱、零件代號、材料以及設(shè)計人員和設(shè)計日期等,其中,零件的名稱、代號、材料、數(shù)量、重量及一些重要的后處理要求等信息還應(yīng)該出現(xiàn)在裝配圖的材料明細表(BOM)中。這些內(nèi)容如果在工程圖中一一進行編寫和修改,其工作量是很大的,并且這種處理方法也不利于保證設(shè)計信息的一致性,對模型文件(零件或裝配體文件)和圖紙文件的管理來講是脫節(jié)的。SolidWorks是一個全相關(guān)的三維
機械設(shè)計軟件,模型文件中的設(shè)計數(shù)據(jù),如尺寸、注釋、文件屬性等內(nèi)容與工程圖相關(guān),因此,我們在處理上述工程圖標題欄和材料明細表中的設(shè)計數(shù)據(jù)時,應(yīng)該將這些內(nèi)容保存在模型文件中,并且自動顯示在工程圖相應(yīng)的位置上。當需要對工程圖中的內(nèi)容進行修改時,直接修改模型文件中的相應(yīng)數(shù)據(jù)即可實現(xiàn)。
rhn*kf{8 #2HygS 這樣的處理方法不僅保證了設(shè)計信息的一致性,而且可以大大提高設(shè)計效率。根據(jù)這個設(shè)想,筆者將這些設(shè)計信息進行了歸納,并將它們作為模型文件的自定義屬性保存在模型文件指定配置的屬性(在SolidWorks中,選擇菜單“文件→屬性”,單擊“指定配置”標簽,如圖1所示)中,針對模型文件指定配置的這些屬性可以自動帶入到工程圖的標題欄和材料明細表。
[sNn^x )s=z i" 對于材料明細表模板進行修改或建立新的明細表模板就可以在裝配圖中的材料明細表中顯示所需要的設(shè)計信息(工程圖格式文件的定義和材料明細表模板的定義,請參閱《SolidWorks2001中文版實用技術(shù)精粹》一書)。因此,無論何時需要修改設(shè)計信息,只需在SolidWorks中打開相應(yīng)的模型文件,修改指定配置屬性即可。然而,即使采用這樣的處理方法,在修改文件當前配置屬性時仍然顯得有些繁瑣,能否為SolidWorks建立一個工作界面,可以更加方便地添加和修改這些信息就成了問題的關(guān)鍵。
g\*gHHa s.GhquFCrU 二、自定義屬性Cpbom 為了更大程度地提高工作效率,我們利用VB6.0通過SolidWorks API建立了自定義屬性設(shè)置程序——Cpbom,這個程序通過一個對話界面直接對當前模型文件的當前配置進行添加或修改,其基本功能如下:
QdW%5lM+ @#Xzk?+ ☆ 針對配置添加模型文件的自定義屬性;
qo.
6T 3&?Tc|F+ ☆ 設(shè)置的項目包括:零件代號、材料名稱、后處理、設(shè)計者姓名、設(shè)計日期;
;_Rx|~!! G0]n4"~+? ☆ 確定自定義屬性后,自動保存文件;如當前文件還沒有保存,提示文件保存路徑和文件名稱;
)uX:f8 h;ShNU ☆ 針對裝配文件,可以選擇是否刪除“材料”和“后處理”兩個屬性。本程序利用VB進行編譯生成可執(zhí)行文件。自定義屬性界面 “自定義屬性”程序就是通過SolidWorks API對當前模型文件中當前配置的自定義屬性的名稱和值進行“讀”和“寫”的操作,程序非常簡單,這里介紹一下該程序中用到的一些SolidWorks API的對象和方法。
9C4l@jrF s*8hN*A/, 1.SolidWorks對象這里指的是SolidWorks API的最高級別的對象。通過該對象可以控制SolidWorks軟件的執(zhí)行或退出,以及SolidWorks文件的建立、打開、關(guān)閉等操作。在VB中利用CreateObject方法來獲得SolidWorks對象,利用該對象的activedoc方法可以獲得當前SolidWorks文件對象,文件對象為空時,表示SolidWorks 沒有打開任何文件。
+tV(8h4 /t9w%Y Dim swApp As ObjectDim
pKH4?F (bo bKr activeDocument As ObjectSet swApp=CreateObject("SldWorks.Application")
y2qESAZ%k} eh`V#%S= Set activeDocument = swApp.activedocIf (activeDocument Is Nothing) Then Dim Msg, Style, title Style = vbExclamation
l =_@<p pJv? title = "模型自定義屬性"
7K;dVB