孫惠娟 尹 洋 湯積仁 秦軍軍
(西華大學(xué)機(jī)械工程與自動(dòng)化學(xué)院,四川 成都 610039)
SolidWorks軟件是在總結(jié)和繼承了大型機(jī)械CAD軟件的基礎(chǔ)上,在Windows環(huán)境下實(shí)現(xiàn)的第一個(gè)機(jī)械CAD軟件。各企業(yè)在實(shí)際的產(chǎn)品設(shè)計(jì)中大多要對(duì)通用CAD軟件進(jìn)行二次開發(fā),建立適合自己的專用模塊。SolidWorks的突出特點(diǎn)是:三維參數(shù)化特征造型,特征管理員功能,全相關(guān)的數(shù)據(jù)管理,它功能豐富、操作簡(jiǎn)單、維護(hù)方便、學(xué)習(xí)周期短、應(yīng)用開發(fā)方便,與多家CAM、CAE軟件有緊密接口。本文通過運(yùn)用Delphi對(duì)SolidWorks進(jìn)行二次開發(fā)來實(shí)現(xiàn)復(fù)雜的高速主軸三維成型及虛擬裝配體的過程,使用ACESS數(shù)據(jù)庫對(duì)高速主軸的相關(guān)參數(shù)進(jìn)行傳遞和管理,提高了設(shè)計(jì)的效率與正確率。
SolidWoks為用戶提供了幾百個(gè)二次開發(fā)接口(SolidWorks API)[1,2],凡支持 COM 編程的開發(fā)工具,如Visual C++、Visual Basic、Delphi等均可用于SolidWorks的二次開發(fā)。SolidWorks API是 Solid-Works的OLE編程接口,為程序員提供了完全面向?qū)ο蟮念愺w系,程序員可以在自己的程序中,派生這些類的子類,生成這些類的對(duì)象,對(duì)對(duì)象進(jìn)行操作,運(yùn)行對(duì)象的方法,設(shè)置或修改對(duì)象的屬性,從而訪問 Solid-Works的數(shù)據(jù)庫、圖形系統(tǒng)和系統(tǒng)界面。SolidWorks的API對(duì)象涵蓋了全部的 SolidWorks的數(shù)據(jù)模型,進(jìn)行二次開發(fā)時(shí),調(diào)用 SolidWorks中的 API函數(shù),可以完成零件各特征的建立、修改、刪除和壓縮等各項(xiàng)控制,零件特征信息的提取,如特征尺寸的設(shè)置與提取,特征所在面的信息提取及各種幾何和拓?fù)湫畔?,零件的裝配信息,零件工程圖紙中的各項(xiàng)信息等。圖1所示為SolidWorks API的部分對(duì)象體系。
組件對(duì)象模型(Component Object Model,COM)[1]是由Microsoft公司在Windows操作系統(tǒng)中創(chuàng)建的一種二進(jìn)制的網(wǎng)絡(luò)標(biāo)準(zhǔn),是組件(即應(yīng)用程序)間的接口。它允許兩個(gè)組件互相通信,而不論其運(yùn)行于任何計(jì)算機(jī)(只要聯(lián)網(wǎng)),采用任何操作系統(tǒng)(只要支持COM)以及該組件隸屬于任何語言。另外,COM還引用了面向?qū)ο蟮乃枷?,?duì)象鏈接與嵌入(Object Linking and Embedding,OLE2)是第一個(gè)用COM架構(gòu)的軟件系統(tǒng)。
本文使用面向?qū)ο笳Z言Delphi[3]對(duì)SolidWorks進(jìn)行二次開發(fā)。Delphi是Borland公司開發(fā)的一種可視化應(yīng)用程序開發(fā)工具,其基礎(chǔ)語言為對(duì)象Pascal。它提供了一種快速的編譯器,它具有高性能的32位本地優(yōu)化代碼編譯器,其應(yīng)用程序可以直接運(yùn)行,能夠最終生成可單獨(dú)執(zhí)行的DLL與EXE文件。另一方面,使用Delphi可方便迅速地建立強(qiáng)大的數(shù)據(jù)庫應(yīng)用程序。Delphi的數(shù)據(jù)庫應(yīng)用程序可以和Paradox、Sybase、Microsoft SQL Server、Informix、InterBase 和 ODBC 數(shù)據(jù)源等一起使用。
(1)在 Delphi編程環(huán)境下,單擊菜單欄中的“Project(工程)”、“Import Type Library”命令,彈出“Import Type library”對(duì)話框。
(2)在“Import Type library”對(duì)話框中選擇“Sld-Works 2007 Type Liaray(Version f.0)”選項(xiàng),單擊“Create Unit”按鈕,Delphi將在其import子目錄下生成該類型庫Object Pascal文件SldWorks_TLB.pas,然后就可以利用此文件進(jìn)行二次開發(fā)了。
(3)在Delphi環(huán)境下新建一個(gè)工程,加入相關(guān)代碼,生成.exe文件或.dll文件,然后編譯運(yùn)行即可。注意要將第二步中生成的SldWorks_TLB.pas文件添加到工程中。
主軸參數(shù)化系統(tǒng)結(jié)構(gòu)如圖2所示。首先需要對(duì)主軸進(jìn)行設(shè)計(jì)并計(jì)算出所有相關(guān)尺寸參數(shù)存入數(shù)據(jù)庫,以備以后對(duì)SolidWorks進(jìn)行二次開發(fā)時(shí)調(diào)用。用戶在主程序界面,通過相應(yīng)的操作,程序即可自動(dòng)從數(shù)據(jù)庫中取出相關(guān)尺寸數(shù)據(jù),調(diào)用相關(guān)SolidWorks API生成實(shí)體并調(diào)用零件庫在的零件生成虛擬裝配圖。
本文選用ACESS數(shù)據(jù)庫對(duì)高速主軸的相關(guān)參數(shù)進(jìn)行傳遞和管理。圖3為數(shù)據(jù)庫顯示和本例的設(shè)計(jì)界面。其中namei為尺寸的名稱,datai為尺寸的數(shù)值。在應(yīng)用程序中通過數(shù)據(jù)控件和數(shù)據(jù)庫建立連接,根據(jù)需要得到相應(yīng)的數(shù)據(jù)信息來進(jìn)行主軸三維圖形的繪制。
在Delphi環(huán)境下,創(chuàng)建如圖3所示的窗口,主要有三個(gè)控件:DBGrid1、Button1、Button2。主軸參數(shù)表DBGrid1中存放經(jīng)過計(jì)算得到的主軸相關(guān)尺寸參數(shù),當(dāng)用戶單擊“生成三維圖形”按鈕時(shí),主程序就會(huì)啟動(dòng)SolidWorks軟件,并從表中提取主軸相關(guān)參數(shù)進(jìn)行三維圖形的繪制[3],單擊“查看裝配圖”按鈕可以查看進(jìn)行虛擬裝配后的圖形。
Button1Click過程的作用是啟動(dòng) SolidWorks繪圖平臺(tái),并設(shè)置好繪圖環(huán)境;DrawPart過程的作用是引用數(shù)據(jù)庫中的數(shù)據(jù)記錄,以及調(diào)用 SolidWorks API函數(shù)功能進(jìn)行零件圖的繪制。Button2的作用是從標(biāo)準(zhǔn)零件庫零件三維圖形中找到相應(yīng)的零件進(jìn)行虛擬裝配。
Button1Click過程的代碼和 DrawPart過程的部分代碼如下:
用戶單擊“生成三維圖形”按鈕后程序運(yùn)行結(jié)果如圖4所示。用戶單擊“查看裝配圖”按鈕后系統(tǒng)自動(dòng)從標(biāo)準(zhǔn)零件庫零件三維圖形中找到相應(yīng)的零件進(jìn)行裝配,裝配體如圖5所示。
介紹了在Delphi的集成開發(fā)環(huán)境下,通過調(diào)用SolidWorks API函數(shù)進(jìn)行二次開發(fā),實(shí)現(xiàn)機(jī)械零件參數(shù)化設(shè)計(jì)的方法。可以參考該方法對(duì)SolidWorks進(jìn)行其他較為復(fù)雜的二次開發(fā),建立適合用戶需要的、專用的SolidWorks功能模塊。通過實(shí)例表明,用戶通過對(duì)SolidWorks的二次開發(fā)可以提高產(chǎn)品的設(shè)計(jì)和開發(fā)效率。
1 殷國(guó)富,徐雷,胡曉兵.SolidWorks 2007二次開發(fā)技術(shù)[M].北京:機(jī)械工業(yè)出版社,2007.
2 (美)SolidWorks公司.SolidWorks API二次開發(fā)[M].北京:機(jī)械工業(yè)出版社,2005.
3 何鵬飛.Delphi 7程序設(shè)計(jì)教程[M].北京:清華大學(xué)出版社,2003.
4 張海蓮,馬琳.Delphi 7組件應(yīng)用實(shí)例[M].北京:電子工業(yè)出版社,2003.