久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > SolidWorks接口開發技術的實現

SolidWorks接口開發技術的實現

作者: 時間:2013-04-07 來源:網絡 收藏
SolidWorks是基于的優秀三維機械設計軟件,其參數化和特征造型技術,為設計人員提供了良好的設計環境。SolidWorks盡管功能非常強大,但要使其在我國企業中非常有效地發揮作用,就必須對其進行本體化和專業的二次開發工作。SolidWorks通過對象鏈接嵌入技術(OLE)為用戶提供了強大的二次開發接口,凡支持OLE編程的開發工具,如VisualC++、VisualBasic、Delphi等均可用于SolidWorks的二次開發,創建出用戶定值的、專用的SolidWorks功能模塊。

1系統的關鍵技術

1.1 SolidWorks的軟件接口開發

SolidWorks通過為用戶提供了強大的二次開發接口,以Vc++為例來說明。

(1)SolidWorksAPIObjects是由Microsoft提出的組件標準,不僅定義了組件程序之間進行交互的標準,而且也提供了組件程序運行所需的環境。OLE(對象鏈接嵌入)技術是COM的一個應用。利用OLE技術,用戶可以通過使用來自兩個或多個Windows應用程序的資源來解決復雜的應用課題。OLE提供了方便的技術,用來將文檔和來自不同程序的各種類型的數據結合起來。SolidWorks支持標準,同時也支持OLE標準,并且已完全實現了OLE自動化。

(2)SolidWorksAPI對象簡介SolidWorksAPI接口采用面向對象的方法,所有的函數都是有關對象的方法或屬性。SolidWorks主要的API對象(如圖。所示)涵蓋了全部的SolidWorks數據模型。通過對這些對象屬性的設置和方法的調用,就可以在用戶自己開發的DLL中實現與SolidWorks相同的功能。

(3)APICOM對象及屬性的使用COM對象與C++程序語言對象一樣具有封裝性和可重用性。COM對象的封裝性表現在客戶不能直接訪問COM對象的屬性,只能通過COM對象提供的方法來訪問;COM對象的可重用性表現在COM對象的包容和聚合,一個對象可以完全使用另一個對象的所有功能,例如Drawing Doc對象派生于Model Doc對象,因此Drawing Doc對象可以通過接口指針使用Model Doc對象里的所有方法與屬性。

newmaker.com

1.2 API接口查詢技術

SolidWorks作為基于Windows的原創軟件,為方便用戶開發的程序與SolidWorks通信,提供了采用COM技術開發應用程序的方法。用戶開發的代碼可以作為獨立的EXE文件或DLL文件存在,它們就是COM模塊。采用COM技術在SolidWorks平臺上作二次開發時,通過直接訪問SolidWorks底層對象可以方便地擴充SolidWorks的功能。采用COM技術開發SolidWorks時,COM調用的每個API函數都將有一個HRESULT類型的接口指針,可以按照你的意圖使用該指針,但在使用完后必須釋放指針。

1.3資源的管理

為避免用戶化的SolidWorks應用程序的資源與平臺本身和其它第三方開發的SolidWorks應用程序的資源發生沖突,必須對應用程序的資源進行管理。解決資源沖突的方法是調用AfxGet Resource Handle和AfxSet Resource Handle這兩個函數。在使用新的資源前調用AfxGet Resource Handle函數保存當前的資源,然后調用AfxSet Resource Handle函數把當前資源設置成新的資源,使用完后再調用AfxSet Resource Handle函數恢復先前已保存的資源。以對話框的管理為例來說明上述過程。

HINSTANCE save Resource=∶∶AfxGetResourceHandle();//保存當前資源句柄
∶∶AfxSetResourceHandle(∶∶AfxGetInstanceHandle());//把當前資源設置成新的資源句柄定制菜單。在CexampleApp∶∶docCreateMenu函數中加入如下代碼:

hres=pFrame->AddMenu(auT"(PartExample"),swMenuPosition,bres);
hres=pFrame->AddMenuItem (auT"(PartExample"),auT"(Bearing"),
swLastPosition,auT(SwPartlib @ MenuItemCBBearing,
Example Property Manager Pageitem"),bres);

然后用MFC向導ClassWizard創建資源,加入所需的控件;最后再恢復先前保存的資源句柄::AfxSetResourceHandle(saveResource)。

1.4導出函數的管理

DLL包含一個導出函數表,可以通過函數的符號化的名字和稱為序號的整數識別這些函數。函數表也包含了函數在DLL內的地址。DLL函數導出有兩種方法:用關鍵字聲明和在模塊定義文件(3.def)中聲明。

(1)聲明顯式包含dllexport關鍵字

newmaker.com

(2)模塊定義文件方法

LIBRARY"SwPartlib";MenuItemCBBearing@4
EXPORTS; MenuItemCBFlange@5
…… ……

2開發系統的結構框架及功能

SolidWorks是典型的三維特征造型系統,完全基于Windows的操作,具有強大的實體造型功能,并且可以進行較為復雜的曲面生成,除此之外是經濟性好,可以作為人手一套的機械工程師設計軟件,其中重要的一條是它提供了較為方便的二次開發接口,本系統選用SolidWorks為圖形平臺,采用VC++為主控程序及編程語言,采用Access2000進行數據庫管理及數據操作,利用MFC對SolidWorks進行二次開發,從而實現了由參數驅動的友好的SolidWorks 的專業化開發, 本系統是一個開放的系統, 用戶可以根據自己的需求, 在系統支持庫中隨意加入自己的模塊。

系統由以下幾部分組成:數據輸入部分、數據模型建立部分及圖形輸入部分,具體的系統功能由以下幾個部分,如圖2所示:

輸入功能:主要是輸入零件幾何信息(幾何形狀、尺寸等)、加工信息(精度、材料、熱處理等)。軟件功能:通過人機對話方式選取零件型號,將工藝信息、設計資料信息附加到具體的參數所對應的零件上。輸出功能:生成具體的參數驅動的零件三維模型,將模型對應的加工和其他信息存儲到數據庫中,將模型轉換數據標準STEP對應的數據字典文件,存入數據庫中。

newmaker.com

3系統數據庫的實現

3.1數據庫管理系統

為了能夠生成統一類型不同規格的零件,必須將標準件的數據存儲在數據庫中,目前可供選擇的數據庫系統很多,其中Access簡單易學,操作方便,可以完成諸如查詢、排序、增刪記錄等對數據的操作功能,完全滿足開發零件庫對數據管理的要求,因此選用Access作為管理數據的工具。

3.2訪問數據庫

應為當用戶輸入主導參數后,程序訪問數據庫,獲得與主導參數相匹配的其它參數,所以必然在開發中涉及到對數據庫的操作。常用的數據庫接口包括ODBC、DAO、ADO等,其中DAO是一種廣泛使用的數據庫接口技術,可使用Vc++的標準函數調用公用接口訪問數據庫的內容。相關的代碼如下:

newmaker.com

3.3MFC開發SolidWorks的具體應用

在前面所述工作的基礎上加入了所需的導出函數并確定了連接方式就可以編寫系統的具體實現代碼了,為了使程序規范化,所有零件系統生成函數都采用了函數調用的方法,即將所有的函數聲明放在一個頭文件*.h中,函數的實現放在*.cpp文件,這樣主程序就可以通過參數傳遞實現對函數的調用了.

4結語

上述基于MFC的SolidWorks二次開發的關鍵技術是對SolidWorks二次開發技術的初步探索,我們開發的基于SolidWorks的零件信息庫系統已經通過省科技廳的項目鑒定,這對CAD/CAM軟件的應用、推廣,為推動甘肅制造業信息化,都將起到重要作用。(end)

c++相關文章:c++教程




評論


技術專區

關閉