天天看點

ObjectARX

1. ObjectARX的介紹:

  ObjectARX是AutoDesk公司針對AutoCAD平台上的二次開發而推出的一個開發軟體包,它提供了以C++為基礎的面向對象的開發環境及應用程式接口,能真正快速的通路AutoCAD圖形資料庫。 與以往的 AutuCAD 二次開發工具 AutoLISP 和ADS不同,ObjectARX應用程式是一個DLL(動态連結庫),共享AutoCAD的位址空間,對AutoCAD進行直接函數調用。是以,使用ARX程式設計的函數的執行速度得以大大提高。ARX 類庫采用了标準的C++類庫的封裝形式,這也大大提高了程式員程式設計的可靠度和效率。 ObjectARX目前最新的版本是ObjectARX2010。它是應用軟體與Internet的接口。通過支援XML,為ObjectARX開發網絡協作應用提供了有力的支援。

2. 開發環境的設定:

  運用ObjectARX進行二次開發,必須首先設定好ObjectARX的開發環境。目前常用的開發環境是Microsoft Visual C++ 6.0。同時,還需要安裝ObjectARX SDK,ObjectARX SDK可以在AutoDesk公司的網站上免費下載下傳。不同的AutoCAD版本對應相應的ObjectARX SDK的版本,目前常用的是ObjectARX SDK for AutoCADR14和ObjectARX SDK for AutoCAD2000i。這兩個開發工具在設定上略有不同,将進行對比介紹。 安裝好VC++和ObjectARX後,就可以開始設定開發環境了。

 1) 設定INC和LIB檔案尋找路徑 INC和LIB檔案尋找路徑為VC++的環境參數,設定一次即可,對以後的所有項目均有效。 選擇 Tools→Options …,出現Option對話框,選擇Directories頁,在Show Directories for中選擇Include files,然後在Directories中加上ARX的INC目錄路徑c:/objectarx/inc(假定ARX的開發工具在c:/objectarx/中)。 在Show Directories for中選擇Library files,然後在Directories中加上ARX的LIB目錄路徑c:/objectarx/lib(假定ARX的開發工具在c:/objectarx/中)。

2) 建立項目并設定編譯環境 一般來說,開發的ObjectARX應用程式都需要支援MFC(如采用對話框等),是以,我們可以直接建立支援MFC的ObjectARX開發項目。每個項目均應設定編譯環境,一般項目的編譯環境可以有兩個設定,分别為釋出版本(Win32 Release)和調試版本(Win32 Debug)。在本節裡,介紹的是釋出版本的設定,而調試版本的設定将在下一節介紹。ObjectARX SDK for AutoCADR14和ObjectARX SDK for AutoCAD2000i在設定上面存在着差别,下面分别進行介紹。 對于ObjectARX SDK for ACADR14

a. 選擇 File→New ,選擇projects頁→MFC AppWizard,給定項目名(helloR14)及位置,選OK,在DLL type中選擇MFC Extension DLL(using share MFC DLL),再選擇Finish。建立項目。

b. 選擇Build→Set Active Configration…→helloR14 Win32 Release,然後選OK。

c. 選擇Project→Setting,出現Project Settings對話框,開始設定編譯環境。

d. General中,Microsoft Foundation Classes選擇Use MFC in a Share DLL。

e. C/C++→Code Generation中,Use run-time library選擇Multithreaded DLL。

f. C/C++→Preprocessor中,Preprocessor definitions填入ACRXAPP,RADPACK,WIN32,NDEBUG,_WINDOWS。

g. Link→General中,Output file Name填入helloR14.arx。

h. Link→Input中,Object/library modules添加Acad.lib acedapi.lib rxapi.lib libacge.lib庫檔案名。

i. Link→Output中,Base address填入0xc10000,Entry-point symbol中填入[email protected]。

j. 點選OK退出Project Settings對話框。

k. 添加HelloR14.cpp主程式,為了使ARX支援MFC,把 HelloR14.cpp的内容直接替換為ObjectARX/UTILS/MFCEXTRAS/目錄下ARXMFCTMPL.CPP的内容,其中包含了MFC所需的支援函數。同時加入公用頭檔案 resourcehelper.h到項目中去,這個頭檔案也可以在上面的目錄找到。

l. 添加注冊指令,在 initApp ()函數中,用 acedRegCmds->addCommand()冊新的AutoCAD指令。

m. 添加HelloR14.def定義檔案,EXPORTS下加入 acrxEntryPoint acrxGetApiVersion

n. 對話框的可以采用一般VC++的對話框,繼承 CDialog類。

對于ObjectARX SDK for ACAD2000i

a. 選擇 File→New ,選擇projects頁→MFC AppWizard,給定項目名(hello2000)及位置,選OK,在DLL type中選擇MFC Extension DLL(using share MFC DLL),再選擇Finish。建立項目。

b. 選擇Build→Set Active Configration…→hello2000 Win32 Release,然後選OK。

c. 選擇Project→Setting,出現Project Settings對話框,開始設定編譯環境。

d. C/C++→Code Generation中,Use run-time library選擇Multithreaded DLL。

e. C/C++→Preprocessor中,Preprocessor definitions填入ACRXAPP, WIN32,NDEBUG,_WINDOWS,_WINDLL,_AFXDLL,AFXEXT。

f. Link→General中,Output file Name填入hello2000.arx。

g. Link→Input中,Object/library modules添加acge15.lib acad.lib acedapi.lib acrx15.lib acdb15.lib acutil15.lib rxapi.lib acui15.lib adui15.lib庫檔案名。

h. Link→Output中,Base address填入0xc1000000。

i. 點選OK退出Project Settings對話框。

j. 添加Hello2000.cpp主程式,為了使ARX支援MFC,需要把 Hello2000.cpp的内容直接替換為ObjectARX/DOCSAMPS/MFCSAMPS/DYNAMIC/目錄下ARXMFCTMPL.CPP的内容,其中包含了MFC所需的支援函數。同時加入兩個公用頭檔案 resourcehelper.h和stdafx.h到項目中去,這兩個頭檔案也可以在上面的目錄找到。

k. 添加注冊指令,在 initApp ()函數中,用 acedRegCmds->addCommand()新的AutoCAD指令。

l. 修改Hello2000.def檔案,在EXPORTS下加入 acrxEntryPoint acrxGetApiVersion m. 對話框采用的是ObjectARX提供的對話框類型,采用MFC UI提供的相關類。類的頭檔案為 acui.h和adui.h。使用時可以先按照一般VC++的對話框建立對話框,然後修改該對話框繼承的類為CAcUiDialog。可以通過查找和替換,直接把項目中的CDialog全部替換為CAcUiDialog。在引用該對話框時用采用下面的方法,如: HelloDlg Hello2000dlg(CWnd::FromHandle(adsw_acadMainWnd()))

3) 項目的加載、運作和解除安裝 項目編譯完成後,就可以在AutoCAD中加載運作了。加載ObjectARX程式,可以選擇Tools→Load Application…,然後選擇相應的 arx檔案,點選Load即可。 運作ObjectARX程式則通過鍵入程式中所注冊的指令進行調用。 需要解除安裝程式時,可以選擇Tools→Load Application…,然後選擇相應的 arx檔案,點選Unload即可。也可以直接鍵入(arxunload “ARX 程式名 ” )。

3. 調試技巧 程式編寫中需要進行大量的調試工作,ObjectARX程式的調試可以跟普通的VC++程式一樣通過設定斷點來跟蹤,同時,還有一些ObjectARX獨特的調試技巧。

1) 通過斷點跟蹤進行調試 ObjectARX的跟蹤調試需要首先設定調試版本(Win32 Debug)的編譯環境。不同版本的調試環境設定也略有不同。 對于ObjectARX SDK for ACADR14

a. 選擇Build→Set Active Configration…→helloR14 Win32 Debug,然後選OK。

b. 選擇Project→Setting,出現Project Settings對話框,開始設定編譯環境。

c. General中,Microsoft Foundation Classes選擇Use MFC in a Share DLL。

d. Debug→General中,Executable for debug session中選擇AutocadR14運作程式的位置,如C:/Program Files/AutoCAD R14/acad.exe。

e. C/C++→Code Generation中,Use run-time library選擇Debug Multithreaded DLL。

f. C/C++→Preprocessor、Link→General、Link→Input、Link→Output的設定均同釋出版本(Win32 Release)

g. 點選OK退出Project Settings對話框。

h. 編譯完成後,點選F9在相應位置設定斷點。

i. 點選F5開始跟蹤調試,調試開始時會自動打開AutoCAD,加載運作ARX後,到達斷點的位置,進入調試界面,可以查詢程式中變量的目前值,點選F5可以繼續調試。

j. 程式運作完成後,退出AutoCAD,結束調試。 對于ObjectARX SDK for 2000i,調試環境的設定與R14的基本相同,主要的差別在于第e 步中,Use run-time library需要選擇Multithreaded DLL,否則會出現DLL的版本問題,而導緻ARX無法加載。

2) 其他調試技巧 ObjectARX的程式由于是運作在AutoCAD圖形支撐環境下的,程式中很多元素都是對應着圖形中的相應位置,是以,在調試的時候,除了通過設定斷點跟蹤變量外,還可以通過圖形顯示來觀察變量。 但是,ObjectARX在AutoCAD裡面進行繪制時,需要與AutoCAD資料庫進行互動,代碼比較長,直接在程式裡面寫入容易造成混亂。是以,可以利用我們開發的ObjectARX基本繪圖函數庫(Plot1和Plot2)。該函數 庫提供了大量的圖形繪制函數、文字輸出函數以及圖形編輯函數,調用時隻需一行代碼就可以完成,十分友善。其中常用的函數有以下這些: l 繪圖相關函數 createLine 畫直線 createDimR 傾斜尺寸标注 createDim 水準或豎直尺寸标注 createPoint 建立點 createCircle 畫圓 createArc 畫圓弧 createText 寫字元串 createTextN 寫 一整數 createTextR 寫 一實數 createPline 畫等寬多義線 createHatch 區域填充 insertBlock 插入圖塊 l 圖形編輯相關函數 eraseByName 按實體的 ads_name 删除實體 eraseById 按實體的ID删除實體 changeLayerByName 按實體的 ads_name 改變實體的層 changeColorByName 按實體的 ads_name 改變實體的顔色 changeTextByName 按實體的 ads_name 改變實體字元内容 有了這個函數庫,就可以通過添加輔助線和輔助圖元、顯示不同位置的變量值、改變圖元的顔色等調試方法進行程式的調試了。

繼續閱讀