1前言
為了縮短產(chǎn)品開(kāi)發(fā)周期、提高市場(chǎng)競(jìng)爭(zhēng)能力 ,各企業(yè)在產(chǎn)品設(shè)計(jì)中大多要對(duì)通用 CAD 軟件進(jìn)行二次開(kāi)發(fā) ,建立適合自己的專(zhuān)用模塊。但目前所開(kāi)發(fā)的 CAD 系統(tǒng) ,一般是對(duì)二維繪圖軟件如 AutoCAD 進(jìn)行二次開(kāi)發(fā) ,實(shí)現(xiàn)機(jī)械零件參數(shù)化設(shè)計(jì)。由于二維繪圖軟件本身無(wú)法實(shí)現(xiàn)參數(shù)化驅(qū)動(dòng) ,所以對(duì)其進(jìn)行二次開(kāi)發(fā)的周期長(zhǎng)、工作量大、不易實(shí)現(xiàn) CAX系統(tǒng)的集成。而三維繪圖軟件如 SolidWorks ,采用特征建模、參數(shù)化驅(qū)動(dòng)可方便地設(shè)計(jì)出三維實(shí)體模型。利用三維實(shí)體模型可以自動(dòng)生成二維工程圖;可以在生產(chǎn)之前動(dòng)態(tài)模擬裝配過(guò)程、進(jìn)行干涉檢查;可以對(duì)重要零部件進(jìn)行有限元分析與優(yōu)化設(shè)計(jì)(CAE) ;可以模擬數(shù)控加工(CAM) ;可以生成零件的工藝規(guī)程(CAPP) ,這樣就易于實(shí)現(xiàn) CAX系統(tǒng)的集成。所以基于三維繪圖軟件的二次開(kāi)發(fā)必將成為今后 CAD 技術(shù)發(fā)展的主流。
本文將討論在 Visual C++6. 0 的集成開(kāi)發(fā)環(huán)境下 ,對(duì) SolidWorks 進(jìn)行二次開(kāi)發(fā)實(shí)現(xiàn)機(jī)械零件參數(shù)化設(shè)計(jì)的方法 ,并結(jié)合實(shí)例說(shuō)明二次開(kāi)發(fā)的具體實(shí)現(xiàn)過(guò)程。
1 SolidWorks 二次開(kāi)發(fā)的原理
1. 1 SolidWorks 的 API 接口
SolidWorks 通過(guò) OLE(Object Linking and Embedding ,對(duì)象的鏈接和嵌入) 技術(shù)為用戶(hù)提供了強(qiáng)大的二次開(kāi)發(fā)接口 API(Application Programming Interface ,應(yīng)用程序界面) ,API 中包含了數(shù)百個(gè)可以在 Visual Basic、VBA(Excel 、Access 等) 、C、C++ 或 SolidWorks 宏文件調(diào)用的函數(shù)。SolidWorks API 接口采用面向?qū)ο蟮姆椒?,所有的函數(shù)都是有關(guān)對(duì)象的方法或?qū)傩浴S脩?hù)通過(guò)對(duì)這些對(duì)象屬性的設(shè)置和方法的調(diào)用 ,就可以在用戶(hù)自己開(kāi)發(fā)的程序中對(duì) SolidWorks 進(jìn)行各種操作控制 ,完成零件草圖的繪制和修改;零件各種特征的建立和修改;零件的特征信息、裝配信息及工程圖紙信息的提取等。
1. 2 SolidWorks 二次開(kāi)發(fā)的方法
SolidWorks 的API 接口分為兩種:一種是基于 OLE Automation 的 IDispatch 技術(shù) ;另一種開(kāi)發(fā)方式是基于 Windows 基礎(chǔ)的 COM(Object Model ,組件對(duì)象模型) 。
基于 OLE Automation 的 IDispatch 技術(shù)作為快速開(kāi)發(fā)的手段 ,一般常用于 VB、Delphi 編程語(yǔ)言的接口 ,通過(guò) IDispatch 接口暴露對(duì)象的屬性和方法 ,以便在客戶(hù)程序中使用這些屬性并調(diào)用它所支持的方法。此種技術(shù)只能開(kāi)發(fā) EXE形式的程序 ,所開(kāi)發(fā)的 CAD 系統(tǒng)不能直接加掛在 SolidWorks 系統(tǒng)界面下 ,無(wú)法實(shí)現(xiàn)與 SolidWorks 系統(tǒng)的集成。
COM 是一種組件開(kāi)發(fā)技術(shù) ,是 Microsoft 公司提出的并被大多數(shù)公司支持的一種標(biāo)準(zhǔn)協(xié)議 ,它建立了一個(gè)軟件模塊同另一個(gè)軟件模塊的連接 ,當(dāng)這種連接建立之后 ,兩個(gè)模塊之間就可以通過(guò)接口來(lái)進(jìn)行通訊。COM接口更為簡(jiǎn)潔高效 ,這種技術(shù)可以使用最多的 SolidWorks API函數(shù)。實(shí)際上 SolidWorks 系統(tǒng)本身是用 VC++編寫(xiě)的 ,所以使用 VC++語(yǔ)言通過(guò) COM 接口開(kāi)發(fā) ,可以實(shí)現(xiàn)對(duì) SolidWorks 底層的開(kāi)發(fā)并且代碼的執(zhí)行效率高。
通過(guò) VC編寫(xiě)基于 COM的動(dòng)態(tài)連接庫(kù) DLL(Dynamic Link Library)文件 ,能直接在 SolidWorks 的界面下添加菜單、工具條等 ,如圖 1 所示。在注冊(cè)表中注冊(cè)成功即可成為 SolidWorks 的插件 ,實(shí)現(xiàn)了與 SolidWorks 的無(wú)縫集成 ,是眾多二次開(kāi)發(fā)方法中的首選 ,以下結(jié)合參數(shù)化設(shè)計(jì)銅合金軸承保持架擠壓模墊套的實(shí)例 ,介紹 DLL 程序的開(kāi)發(fā)方法。
2 DLL 程序的具體實(shí)現(xiàn)過(guò)程
2. 1 DLL 的創(chuàng)建
SolidWorks 公司提供了制作 DLL 文件的向?qū)?,利用向?qū)0蹇煞奖憧旖莸厣?DLL 文件。具體步驟是:首先從 SolidWorks 公司的網(wǎng)站下載制作動(dòng)態(tài)連接庫(kù)的向?qū)募?SWizard. awx",將其拷貝至 VC++安裝目錄下的 Common MSDev98 Template 文件夾 ,這時(shí) VC 新建工程項(xiàng)中會(huì)出現(xiàn)"SolidWorks Add InAppWizard"向?qū)А_x擇此向?qū)л斎腠?xiàng)目名 3DCAD 后單擊 Next ,在 Step 1 of 2 選擇 SolidWorks 的安裝路徑 ,除了 Overload WNDPROC of ModelView復(fù)選框 ,選中其他所有復(fù)選框 ,然后單擊 Next 進(jìn)入 Step 2 of 2 ,選中 Create Sample Feature Manager 和 ViewRegister Add - In at compile time 復(fù)選框后單擊 Finish 即可完成DLL 工程的創(chuàng)建。
2. 2 DLL 中添加資源的方法
在動(dòng)態(tài)鏈接庫(kù)中 ,當(dāng)用戶(hù)需要添加自己的資源如對(duì)話框時(shí) ,應(yīng)明確指出在什么時(shí)候使用自己的資源 ,否則 SolidWorks 系統(tǒng)分不清那些是由系統(tǒng)控制的資源 ,那些是由用戶(hù)控制的資源 ,會(huì)發(fā)生沖突導(dǎo)致程序運(yùn)行錯(cuò)誤。避免資源沖突的方法是在使用自己資源前調(diào)用 Afx Get Resource Handle 函數(shù)保存當(dāng)前的資源 ,然后調(diào)用 Afx Set Resource Handle 函數(shù)把當(dāng)前資源設(shè)置成新的資源 ,當(dāng)使用完自己的資源后 ,再調(diào)用Afx Set Resource Handle 函數(shù)恢復(fù)先前已保存的資源。創(chuàng)建本程序的運(yùn)行界面時(shí) ,首先用對(duì)話框編輯器創(chuàng)建對(duì)話框模板資源 ,如圖 2 所示加入所需控件 ,再用 Class wizard 為對(duì)話框生成 CTestDlg類(lèi)(基類(lèi)為 CDialog) ,并加入所需的成員變量 ,相關(guān)代碼如下:
/ / 保存當(dāng)前系統(tǒng)資源
HINSTANCE saver = AfxGetResourceHandle() ;
/ / 把當(dāng)前資源設(shè)置成新的資源
AfxSetResourceHandle(AfxGetResourceHandle() ) ;
CDlg1 dlg ; / / 聲明一個(gè)對(duì)話框類(lèi)
If (int n = dlg. DoModal () = = IDOK) ; / / 按下繪圖按鈕后繪圖
{
drawdt( ) ; / / 參數(shù)化繪制墊套三維圖的自定義函數(shù)
}
/ / 恢復(fù)先前已保存的系統(tǒng)資源的句柄
AfxSetResourceHandle(saver) ;
相關(guān)文章
- 2021-08-23精通AutoCAD三維設(shè)計(jì)與開(kāi)發(fā)PDF下載
- 2021-08-22AutoCAD 2013應(yīng)用與開(kāi)發(fā)系列中文版AutoCAD 2013室內(nèi)裝
- 2021-08-22AutoCAD 2013應(yīng)用與開(kāi)發(fā)系列中文版AutoCAD 2013機(jī)械圖
- 2021-08-19數(shù)字化成圖-最新AutoCAD地形圖測(cè)繪高級(jí)開(kāi)發(fā)PDF下載
- 2021-08-03Autodesk RevitStructure2012應(yīng)用寶典 [歐特克軟件(中
- 2021-08-02Autodesk RevitMEP2012應(yīng)用寶典 [歐特克軟件(中國(guó))有限
- 2021-08-02Autodesk Revit2013族達(dá)人速成 [歐特克軟件(中國(guó))有限公
- 2021-08-01Visual LISP程序設(shè)計(jì)(AutoCAD 2006)PDF下載
- 2021-08-01Visual Basic與AutoCAD二次開(kāi)發(fā)PDF下載
- 2021-07-31Autodesk Revit2012族達(dá)人速成 [歐特克軟件(中國(guó))有限公