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