法蘭盤基于CAD模塊設(shè)計(jì)程序_第1頁
法蘭盤基于CAD模塊設(shè)計(jì)程序_第2頁
法蘭盤基于CAD模塊設(shè)計(jì)程序_第3頁
法蘭盤基于CAD模塊設(shè)計(jì)程序_第4頁
法蘭盤基于CAD模塊設(shè)計(jì)程序_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、利用ObjectARX開發(fā)基于AutoCAD的法蘭盤設(shè)計(jì)來源:中國論文下載中心 08-05-05 16:58:00 作者:章玉婷 李橋梁編輯:studa0714-摘 要本文討論了在Visual C +6 0的集成開發(fā)環(huán)境下,結(jié)合Object ARX和MFC開發(fā)AutoCAD2002應(yīng)用程序的設(shè)計(jì)技術(shù)和方法,針對(duì)特定零件族的高效率繪制進(jìn)行探討,并圍繞法蘭盤設(shè)計(jì)繪制實(shí)例詳細(xì)闡述了此CAD二次開發(fā)技術(shù)。 關(guān)鍵詞ObjectARX;MFC;法蘭盤1 概述 在實(shí)際產(chǎn)品的設(shè)計(jì)中,對(duì)于產(chǎn)品的尺寸及工藝參數(shù)已經(jīng)系列化的零件族, AutoCAD提供給的通用功能難以滿足其快速生成圖紙的需要。為適應(yīng)快速繪制零件圖、

2、工藝路線設(shè)置、工藝參數(shù)設(shè)置、以及其它要求,必須在AutoCAD這種通用的繪圖環(huán)境下建立一個(gè)集中的使用非常簡(jiǎn)潔的用戶操作環(huán)境。 本文擬構(gòu)建一個(gè)操作環(huán)境,包括AutoCAD數(shù)據(jù)庫、文件讀入、交互式界面幾個(gè)部分。2 Object ARX與MFC簡(jiǎn)介2.1 ObjectARX的類庫構(gòu)成 (1)AcRx庫,提供系統(tǒng)層次的類,用于動(dòng)態(tài)鏈接庫的初始化以及運(yùn)行時(shí)刻類的注冊(cè)和標(biāo)識(shí)。 (2)AcEd庫,提供一組用于定義和注冊(cè)新的AutoCAD命令的類。 (3)AcDb庫,提供一組用于存取AutoCAD圖形數(shù)據(jù)庫結(jié)構(gòu)的類。 (4)AcGi庫,提供繪制AutoCAD實(shí)體圖形界面的類。 (5)AcGe庫,提供的實(shí)用類用

3、于執(zhí)行二維和三維幾何操作。2.2 MFC MFC(Microsoft Foundation Class Library)是Windows環(huán)境下的編程應(yīng)用程序框架,是封裝的C+類庫的擴(kuò)展。ObjectARX(AutoCAD Runtime Extension)是AutoCAD采用面向?qū)ο蟮腃+應(yīng)用程序機(jī)制進(jìn)行二次開發(fā)的有效工具,它的一個(gè)動(dòng)態(tài)鏈接庫(DLL),與AutoCAD共享一個(gè)地址空間, 能夠直接被后者調(diào)用,使開發(fā)者能夠更直接地完成其深層數(shù)據(jù)結(jié)構(gòu)、圖形系統(tǒng)編程和用戶命令的定義。ObjectARX提供了一套與MFC用戶界面(UI)相關(guān)的類,MFC用戶界面可以具有和AutoCAD用戶界面一樣的外

4、觀和行為。3 系統(tǒng)總體設(shè)計(jì)3.1 AutoCAD數(shù)據(jù)庫 AutoCAD基本的數(shù)據(jù)庫對(duì)象是實(shí)體、符號(hào)表和詞典。實(shí)體是在AutoCAD圖內(nèi)部表示圖的一種特殊數(shù)據(jù)庫對(duì)象,用戶可以在屏幕上看見實(shí)體并能對(duì)其進(jìn)行操作。符號(hào)表和詞典是用于存儲(chǔ)數(shù)據(jù)庫對(duì)象的容器,這兩個(gè)容器對(duì)象都映射一個(gè)符號(hào)名到一個(gè)數(shù)據(jù)庫對(duì)象。 一個(gè)AutoCAD數(shù)據(jù)庫包含一套固定的符號(hào)表,每一個(gè)符號(hào)表包含一個(gè)特定符號(hào)表記錄類的實(shí)例,用戶不能向數(shù)據(jù)庫添加新符號(hào)表。符號(hào)表包含層表和塊表。所有AutoCAD實(shí)體都屬于塊表記錄。詞典為存儲(chǔ)對(duì)象提供了比符號(hào)表更加普通的容器。一個(gè)詞典可以包含任何類型的AcDbObject及其子類的對(duì)象。當(dāng)AutoCAD創(chuàng)

5、建新圖時(shí),AutoCAD數(shù)據(jù)庫創(chuàng)建一個(gè)叫做“命名對(duì)象詞典”的詞典。AutoCAD數(shù)據(jù)庫主要結(jié)構(gòu)如圖1。圖1 數(shù)據(jù)庫結(jié)構(gòu)3.2 ARX程序自動(dòng)加載和DWG文件讀入 對(duì)于已創(chuàng)建好的.arx程序,ARX程序的自動(dòng)加載可以省去每次進(jìn)入AutoCAD環(huán)境后手動(dòng)加載程序的過程。有幾種方法可以實(shí)現(xiàn)。最簡(jiǎn)便易行的方法是進(jìn)入AutoCAD環(huán)境,選擇“工具”菜單“加載應(yīng)用程序”選擇啟動(dòng)組的“內(nèi)容”“添加”。將已生成的ARX應(yīng)用程序添加進(jìn)來,下次啟動(dòng)AutoCAD環(huán)境時(shí),該程序已被加載。在命令行中鍵入該程序的執(zhí)行命令即可運(yùn)行。程序運(yùn)行流程圖如圖2。圖2 程序運(yùn)行流程圖 利用ObjectARX AppWizard的a

6、ddCommand()創(chuàng)建新Command,F(xiàn)unction name為“OPEN”,部分代碼如下:void OpenDoc( void *pData) AcApDocument* pDoc = acDocManager- curDocument(); if (acDocManager-isApplicationContext() acDocManager-appContextOpenDocument (const char *)pData); else acutPrintf(nERROR To Open Doc!n); void OPEN() /打開系統(tǒng)中存在的路徑為e:test.dwg 的

7、DWG文件, static char pData = e:test.dwg; acDocManager-executeInApplicationContext(OpenDoc, (void *)pData);3.3 無模式對(duì)話框建立 對(duì)話框是Windows應(yīng)用程序常用的與用戶對(duì)話通訊的窗口界面,對(duì)話框可分為模式(Model)對(duì)話框和無模式對(duì)話框(Modeless),模式對(duì)話框要求用戶在使用程序的其它任何部分之前關(guān)閉對(duì)話框。AutoCAD總是試圖不使系統(tǒng)聚焦于其子窗口,故使用無模式對(duì)話框。 初始化函數(shù):Create函數(shù)。其功能為使用資源中的對(duì)話框模板創(chuàng)建無模式對(duì)話框。Create函數(shù)參數(shù)說明參數(shù)

8、說明lpszTemplateName包含對(duì)話框模板的空中止字符串nIDTemplate包含對(duì)話框模板的資源中ID號(hào)pParentWnd對(duì)話框的父窗體的指針,如果此值為NULL,則對(duì)話框的父窗體為主應(yīng)用程序窗體在一常規(guī)間歇內(nèi),無模式對(duì)話框收到WM_ACAD_KEEPFOCUS窗口消息。當(dāng)對(duì)話框接收到此消息時(shí),如想保持聚焦則應(yīng)返回TRUE,否則返回FALSE(缺省值),此時(shí)鼠標(biāo)一離開對(duì)話框系統(tǒng)就不再聚焦于對(duì)話框。在對(duì)話框的消息映射中ON_MESSAGE()函數(shù)如下: BEGIN_MESSAGE_MAP(HelloDlg CDialog)ON_COMMAND(IDCLOSE,OnClose)ON_C

9、OMMAND(IDC_DRAW_CIRCLE,OnDrawCircle)ON_ MESSAGE(WM_ACAD_KEEPFOCUS,OnAcadKeepFocus)END_MESSAGE_MAP() 在這里應(yīng)用對(duì)話框類為HelloDlg,它由Cdialog類派生。當(dāng)將這一入口加入到消息映射中時(shí)必須為該消息寫一句柄函數(shù)。假定我們已寫了一函數(shù)keepFocus(),它在對(duì)話框保持聚焦時(shí)返回TRUE,反之返回FALSE。消息句柄函數(shù)為: Afx msg LONG HelloDlg:onAcadKeepFocus(UINT,LONG)return keepTheFocus()? TRUE:FALSE;

10、3.4 用戶界面設(shè)計(jì) 下面以法蘭盤的設(shè)計(jì)為例,介紹以O(shè)bjectARX對(duì)AutoCAD進(jìn)行二次開發(fā)的過程。 (1)創(chuàng)建ObjectARX MFC應(yīng)用程序框架。在Microsoft Visual C+中用利用ObjectARX AppWizard新創(chuàng)建一個(gè)工程。選擇MFC Extension DLL,結(jié)束創(chuàng)建。(2)創(chuàng)建MFC對(duì)話框。在Visual C+ App Studio加入一個(gè)對(duì)話框資源。(3)創(chuàng)建類和控件。用ClassWizard創(chuàng)建新對(duì)話框類,并給對(duì)話框命名。本例中采用默認(rèn)選項(xiàng)。為對(duì)話框內(nèi)的資源添加相應(yīng)的類控件。 C_BUTTON資源添加CButton類控件;IDC_EDIT資源添加C

11、edit類控件;IDC_COMBO資源添加CComboBox類控件。(4)創(chuàng)建對(duì)話框控制函數(shù)。在ClassWizard中為對(duì)話框添加“DoModal”與“OnInitDialog”函數(shù)。(5)給對(duì)話框控制函數(shù)添加代碼。部分代碼如下:/讀ID號(hào)為“IDC_EDIT1”的EditBox中輸入值至變量m_edit1 CEdit* pE = (CEdit*)GetDlgItem(IDC_EDIT1); CString szO; pE-GetWindowText(szO); float m_edit1 = atof(szO);/創(chuàng)建直線 AcGePoint3d startPt(x,y,0.0); AcG

12、ePoint3d endPt(x+m_edit1,y,0.0); AcDbLine *pLine=new AcDbLine(startPt,endPt); /創(chuàng)建圓 AcDbCircle *pCircle = new AcDbCircle(center,normal,r);圖3 法蘭盤對(duì)話框設(shè)計(jì)實(shí)例4 開發(fā)系統(tǒng)的實(shí)現(xiàn) 運(yùn)行AutoCAD后,創(chuàng)建的ARX程序自動(dòng)加載。直接在命令行輸入自定義命令“FLP”后,出現(xiàn)對(duì)話框如圖三。在組合框的下拉菜單中選擇所需的零件系列號(hào)數(shù),則文本框中會(huì)調(diào)用相應(yīng)零件的尺寸參數(shù),也可以修改文本框中的尺寸。完成后按“確定”,系統(tǒng)按自定義的尺寸參數(shù)自動(dòng)生成所需的零件圖如圖4所示。圖4 法蘭盤零件圖5 結(jié)束語 本設(shè)計(jì)基于ObjectARX的平臺(tái),使用Visual C+對(duì)AutoCAD進(jìn)行二次開發(fā),編制一個(gè)具有初步的CAD軟件結(jié)構(gòu)、用戶接口和操作方式的交互式CAD系統(tǒng),可以準(zhǔn)確迅速地得到設(shè)計(jì)模型。該技術(shù)實(shí)現(xiàn)了參數(shù)化設(shè)計(jì),提高了設(shè)計(jì)效率和運(yùn)行速度。參考文獻(xiàn)1 Charles McAuley著,李世國等譯. AutoCAD2000 ObjectARX編程指南 M, 北京:機(jī)械出版社,2000. 2 陳彬,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論