新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > SolidWorks接口開(kāi)發(fā)技術(shù)的實(shí)現(xiàn)

SolidWorks接口開(kāi)發(fā)技術(shù)的實(shí)現(xiàn)

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

1系統(tǒng)的關(guān)鍵技術(shù)

1.1 SolidWorks的軟件接口開(kāi)發(fā)

SolidWorks通過(guò)為用戶提供了強(qiáng)大的二次開(kāi)發(fā)接口,以Vc++為例來(lái)說(shuō)明。

(1)SolidWorksAPIObjects是由Microsoft提出的組件標(biāo)準(zhǔn),不僅定義了組件程序之間進(jìn)行交互的標(biāo)準(zhǔn),而且也提供了組件程序運(yùn)行所需的環(huán)境。OLE(對(duì)象鏈接嵌入)技術(shù)是COM的一個(gè)應(yīng)用。利用OLE技術(shù),用戶可以通過(guò)使用來(lái)自兩個(gè)或多個(gè)Windows應(yīng)用程序的資源來(lái)解決復(fù)雜的應(yīng)用課題。OLE提供了方便的技術(shù),用來(lái)將文檔和來(lái)自不同程序的各種類型的數(shù)據(jù)結(jié)合起來(lái)。SolidWorks支持標(biāo)準(zhǔn),同時(shí)也支持OLE標(biāo)準(zhǔn),并且已完全實(shí)現(xiàn)了OLE自動(dòng)化。

(2)SolidWorksAPI對(duì)象簡(jiǎn)介SolidWorksAPI接口采用面向?qū)ο蟮姆椒ǎ械暮瘮?shù)都是有關(guān)對(duì)象的方法或?qū)傩浴olidWorks主要的API對(duì)象(如圖。所示)涵蓋了全部的SolidWorks數(shù)據(jù)模型。通過(guò)對(duì)這些對(duì)象屬性的設(shè)置和方法的調(diào)用,就可以在用戶自己開(kāi)發(fā)的DLL中實(shí)現(xiàn)與SolidWorks相同的功能。

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

newmaker.com

1.2 API接口查詢技術(shù)

SolidWorks作為基于Windows的原創(chuàng)軟件,為方便用戶開(kāi)發(fā)的程序與SolidWorks通信,提供了采用COM技術(shù)開(kāi)發(fā)應(yīng)用程序的方法。用戶開(kāi)發(fā)的代碼可以作為獨(dú)立的EXE文件或DLL文件存在,它們就是COM模塊。采用COM技術(shù)在SolidWorks平臺(tái)上作二次開(kāi)發(fā)時(shí),通過(guò)直接訪問(wèn)SolidWorks底層對(duì)象可以方便地?cái)U(kuò)充SolidWorks的功能。采用COM技術(shù)開(kāi)發(fā)SolidWorks時(shí),COM調(diào)用的每個(gè)API函數(shù)都將有一個(gè)HRESULT類型的接口指針,可以按照你的意圖使用該指針,但在使用完后必須釋放指針。

1.3資源的管理

為避免用戶化的SolidWorks應(yīng)用程序的資源與平臺(tái)本身和其它第三方開(kāi)發(fā)的SolidWorks應(yīng)用程序的資源發(fā)生沖突,必須對(duì)應(yīng)用程序的資源進(jìn)行管理。解決資源沖突的方法是調(diào)用AfxGet Resource Handle和AfxSet Resource Handle這兩個(gè)函數(shù)。在使用新的資源前調(diào)用AfxGet Resource Handle函數(shù)保存當(dāng)前的資源,然后調(diào)用AfxSet Resource Handle函數(shù)把當(dāng)前資源設(shè)置成新的資源,使用完后再調(diào)用AfxSet Resource Handle函數(shù)恢復(fù)先前已保存的資源。以對(duì)話框的管理為例來(lái)說(shuō)明上述過(guò)程。

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

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

然后用MFC向?qū)lassWizard創(chuàng)建資源,加入所需的控件;最后再恢復(fù)先前保存的資源句柄::AfxSetResourceHandle(saveResource)。

1.4導(dǎo)出函數(shù)的管理

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

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

newmaker.com

(2)模塊定義文件方法

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

2開(kāi)發(fā)系統(tǒng)的結(jié)構(gòu)框架及功能

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

系統(tǒng)由以下幾部分組成:數(shù)據(jù)輸入部分、數(shù)據(jù)模型建立部分及圖形輸入部分,具體的系統(tǒng)功能由以下幾個(gè)部分,如圖2所示:

輸入功能:主要是輸入零件幾何信息(幾何形狀、尺寸等)、加工信息(精度、材料、熱處理等)。軟件功能:通過(guò)人機(jī)對(duì)話方式選取零件型號(hào),將工藝信息、設(shè)計(jì)資料信息附加到具體的參數(shù)所對(duì)應(yīng)的零件上。輸出功能:生成具體的參數(shù)驅(qū)動(dòng)的零件三維模型,將模型對(duì)應(yīng)的加工和其他信息存儲(chǔ)到數(shù)據(jù)庫(kù)中,將模型轉(zhuǎn)換數(shù)據(jù)標(biāo)準(zhǔn)STEP對(duì)應(yīng)的數(shù)據(jù)字典文件,存入數(shù)據(jù)庫(kù)中。

newmaker.com

3系統(tǒng)數(shù)據(jù)庫(kù)的實(shí)現(xiàn)

3.1數(shù)據(jù)庫(kù)管理系統(tǒng)

為了能夠生成統(tǒng)一類型不同規(guī)格的零件,必須將標(biāo)準(zhǔn)件的數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中,目前可供選擇的數(shù)據(jù)庫(kù)系統(tǒng)很多,其中Access簡(jiǎn)單易學(xué),操作方便,可以完成諸如查詢、排序、增刪記錄等對(duì)數(shù)據(jù)的操作功能,完全滿足開(kāi)發(fā)零件庫(kù)對(duì)數(shù)據(jù)管理的要求,因此選用Access作為管理數(shù)據(jù)的工具。

3.2訪問(wèn)數(shù)據(jù)庫(kù)

應(yīng)為當(dāng)用戶輸入主導(dǎo)參數(shù)后,程序訪問(wèn)數(shù)據(jù)庫(kù),獲得與主導(dǎo)參數(shù)相匹配的其它參數(shù),所以必然在開(kāi)發(fā)中涉及到對(duì)數(shù)據(jù)庫(kù)的操作。常用的數(shù)據(jù)庫(kù)接口包括ODBC、DAO、ADO等,其中DAO是一種廣泛使用的數(shù)據(jù)庫(kù)接口技術(shù),可使用Vc++的標(biāo)準(zhǔn)函數(shù)調(diào)用公用接口訪問(wèn)數(shù)據(jù)庫(kù)的內(nèi)容。相關(guān)的代碼如下:

newmaker.com

3.3MFC開(kāi)發(fā)SolidWorks的具體應(yīng)用

在前面所述工作的基礎(chǔ)上加入了所需的導(dǎo)出函數(shù)并確定了連接方式就可以編寫系統(tǒng)的具體實(shí)現(xiàn)代碼了,為了使程序規(guī)范化,所有零件系統(tǒng)生成函數(shù)都采用了函數(shù)調(diào)用的方法,即將所有的函數(shù)聲明放在一個(gè)頭文件*.h中,函數(shù)的實(shí)現(xiàn)放在*.cpp文件,這樣主程序就可以通過(guò)參數(shù)傳遞實(shí)現(xiàn)對(duì)函數(shù)的調(diào)用了.

4結(jié)語(yǔ)

上述基于MFC的SolidWorks二次開(kāi)發(fā)的關(guān)鍵技術(shù)是對(duì)SolidWorks二次開(kāi)發(fā)技術(shù)的初步探索,我們開(kāi)發(fā)的基于SolidWorks的零件信息庫(kù)系統(tǒng)已經(jīng)通過(guò)省科技廳的項(xiàng)目鑒定,這對(duì)CAD/CAM軟件的應(yīng)用、推廣,為推動(dòng)甘肅制造業(yè)信息化,都將起到重要作用。(end)

c++相關(guān)文章:c++教程




評(píng)論


技術(shù)專區(qū)

關(guān)閉