SolidWorks API是SolidWorks的OLE應(yīng)用程序開(kāi)發(fā)接口,用戶可以利用它和支持OLE編程的開(kāi)發(fā)工具,如VB、VBA(Excel,Access)、C、VC++等對(duì)SolidWorks進(jìn)行二次開(kāi)發(fā),建立適合用戶需要的、專用的SolidWorks 功能模塊。
HV'xDy[) K~gt=NH 一、問(wèn)題的提出
o>x*_4[ [)U|HnAJ 大多數(shù)工程圖紙的標(biāo)題欄中應(yīng)該包括一些基本的設(shè)計(jì)信息,如零件名稱、零件代號(hào)、材料以及設(shè)計(jì)人員和設(shè)計(jì)日期等,其中,零件的名稱、代號(hào)、材料、數(shù)量、重量及一些重要的后處理要求等信息還應(yīng)該出現(xiàn)在裝配圖的材料明細(xì)表(BOM)中。這些內(nèi)容如果在工程圖中一一進(jìn)行編寫(xiě)和修改,其工作量是很大的,并且這種處理方法也不利于保證設(shè)計(jì)信息的一致性,對(duì)模型文件(零件或裝配體文件)和圖紙文件的管理來(lái)講是脫節(jié)的。SolidWorks是一個(gè)全相關(guān)的三維
機(jī)械設(shè)計(jì)軟件,模型文件中的設(shè)計(jì)數(shù)據(jù),如尺寸、注釋、文件屬性等內(nèi)容與工程圖相關(guān),因此,我們?cè)谔幚砩鲜龉こ虉D標(biāo)題欄和材料明細(xì)表中的設(shè)計(jì)數(shù)據(jù)時(shí),應(yīng)該將這些內(nèi)容保存在模型文件中,并且自動(dòng)顯示在工程圖相應(yīng)的位置上。當(dāng)需要對(duì)工程圖中的內(nèi)容進(jìn)行修改時(shí),直接修改模型文件中的相應(yīng)數(shù)據(jù)即可實(shí)現(xiàn)。
y7aBF13Kl vU&I,:72
H 這樣的處理方法不僅保證了設(shè)計(jì)信息的一致性,而且可以大大提高設(shè)計(jì)效率。根據(jù)這個(gè)設(shè)想,筆者將這些設(shè)計(jì)信息進(jìn)行了歸納,并將它們作為模型文件的自定義屬性保存在模型文件指定配置的屬性(在SolidWorks中,選擇菜單"文件→屬性",單擊"指定配置"標(biāo)簽,如圖1所示)中,針對(duì)模型文件指定配置的這些屬性可以自動(dòng)帶入到工程圖的標(biāo)題欄和材料明細(xì)表。
=YlsJ={h M@@l>"g@ 對(duì)于材料明細(xì)表模板進(jìn)行修改或建立新的明細(xì)表模板就可以在裝配圖中的材料明細(xì)表中顯示所需要的設(shè)計(jì)信息(工程圖格式文件的定義和材料明細(xì)表模板的定義,請(qǐng)參閱《SolidWorks2001中文版實(shí)用技術(shù)精粹》一書(shū))。因此,無(wú)論何時(shí)需要修改設(shè)計(jì)信息,只需在SolidWorks中打開(kāi)相應(yīng)的模型文件,修改指定配置屬性即可。然而,即使采用這樣的處理方法,在修改文件當(dāng)前配置屬性時(shí)仍然顯得有些繁瑣,能否為SolidWorks建立一個(gè)工作界面,可以更加方便地添加和修改這些信息就成了問(wèn)題的關(guān)鍵。
N{v
<z 6 xI?%.Z;*+ 二、自定義屬性Cpbom
4Z>KrFO {J3;4p-& 為了更大程度地提高工作效率,我們利用VB6.0通過(guò)SolidWorks API建立了自定義屬性設(shè)置程序--Cpbom,這個(gè)程序通過(guò)一個(gè)對(duì)話界面直接對(duì)當(dāng)前模型文件的當(dāng)前配置進(jìn)行添加或修改,其基本功能如下:
bqpy@WiI S 8Z{&b,Y4L ☆ 針對(duì)配置添加模型文件的自定義屬性;
9%aBW7@SK "PH}\Dl= ☆ 設(shè)置的項(xiàng)目包括:零件代號(hào)、材料名稱、后處理、設(shè)計(jì)者姓名、設(shè)計(jì)日期;
bmN'{09@ $/</J]2`; ☆ 確定自定義屬性后,自動(dòng)保存文件;如當(dāng)前文件還沒(méi)有保存,提示文件保存路徑和文件名稱;
3'WJx=0? [#S[=% ☆ 針對(duì)裝配文件,可以選擇是否刪除"材料"和"后處理"兩個(gè)屬性。本程序利用VB進(jìn)行編譯生成可執(zhí)行文件。自定義屬性界面 "自定義屬性"程序就是通過(guò)SolidWorks API對(duì)當(dāng)前模型文件中當(dāng)前配置的自定義屬性的名稱和值進(jìn)行"讀"和"寫(xiě)"的操作,程序非常簡(jiǎn)單,這里介紹一下該程序中用到的一些SolidWorks API的對(duì)象和方法。
7Pspx'u /bm$G"%d 1.SolidWorks對(duì)象這里指的是SolidWorks API的最高級(jí)別的對(duì)象。通過(guò)該對(duì)象可以控制SolidWorks軟件的執(zhí)行或退出,以及SolidWorks文件的建立、打開(kāi)、關(guān)閉等操作。在VB中利用CreateObject方法來(lái)獲得SolidWorks對(duì)象,利用該對(duì)象的activedoc方法可以獲得當(dāng)前SolidWorks文件對(duì)象,文件對(duì)象為空時(shí),表示SolidWorks 沒(méi)有打開(kāi)任何文件。
.s-X%%e\ M]&F1< Dim swApp As ObjectDim
$%9.qy\8 [5Zs%!Z;8N activeDocument As ObjectSet swApp=CreateObject("SldWorks.Application")
?&?gQ#\N_J #DjSS.iW Set activeDocument = swApp.activedocIf (activeDocument Is Nothing) Then Dim Msg, Style, title Style = vbExclamation
WVDkCo@ @{16j#'R title = "模型自定義屬性"
Vg9nb Htd-E^/ Msg = "請(qǐng)首先打開(kāi)一個(gè)Solidworks模型文件"
kBZnR$Cl z0[_5Cm/ Call MsgBox(Msg, Style, title) " Display error message
k2{*WF O>UG[ZgW End
?,8|K B \xD.rBbt End If
#(6^1S%
`8^4, 2.獲取當(dāng)前文件信息自定義屬性程序是對(duì)模型文件設(shè)置自定義屬性,與工程圖文件無(wú)關(guān),因此需要利用GetType方法獲得當(dāng)前文件的類型,并利用Gettitle()方法和Getpathname()方法獲得當(dāng)前文件的名稱和存盤(pán)路徑。
:%ms6j/B&V ?;NC(Z, Dim docType As LongDim
!p$z8~ @jb
-u S docName As StringDim
R7%'
vZk `)e5pK filename As StringDim
Ce 3{KGBw