CAD系統(tǒng)二次開發(fā)-ObjectARX初次接觸_第1頁
CAD系統(tǒng)二次開發(fā)-ObjectARX初次接觸_第2頁
CAD系統(tǒng)二次開發(fā)-ObjectARX初次接觸_第3頁
CAD系統(tǒng)二次開發(fā)-ObjectARX初次接觸_第4頁
CAD系統(tǒng)二次開發(fā)-ObjectARX初次接觸_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

王淑營ObjectARX初次接觸一、AutoCAD常用的二次開發(fā)工具簡介二、建立ObjectARX應用程序的根本方法三、ObjectARX2000開發(fā)模板的定制四、ObjectARX與AutoCAD間的信息傳遞ObjectARX初次接觸一、AutoCAD常用的二次開發(fā)工具簡介AutoCAD軟件包是美國Autodesk公司的產品,因其功能強大而被廣泛應用于我國的機械、電子、航空等領域,但是在使用中也遇到一些問題,由于AutoCAD是一種通用的軟件,它很難滿足各行業(yè)的行業(yè)標準。然而,AutoCAD開放式結構和其所提供的多種開發(fā)工具,使用戶完全擺脫AutoCAD的限制,根據自己的需要對其進行二次開發(fā),這也是AutoCAD廣泛受人們青睞的主要原因之一。迄今為止,Autodesk公司已經相繼提出了三代AutoCAD二次開發(fā)工具如下圖。

1、AutoCAD開發(fā)工具的開展一、AutoCAD常用的二次開發(fā)工具簡介AutoLisp是1986年隨AutoCAD2.18提供的二次開發(fā)工具,是LISP編程語言的一個子集。AutoLISP是一種編程語言,包含許多像C和C++那樣的根本元素,但語法規(guī)那么比較簡單。AutoLISP是一種解釋性語言,所以不用對它進行編譯。所有的程序代碼都用文本編譯器編寫〔后綴名*.LSP〕。AutoLisp的優(yōu)點:1〕語言規(guī)那么簡單,易學易用;2〕直接針對AutoCAD,易于交互;AutoLisp的缺點是:1〕功能單一,綜合處理能力差;2〕解釋執(zhí)行,程序運行速度慢;3〕源程序保密性差;4〕不能直接訪問硬件設備和進行二進制文件的讀寫;5〕應用程序用記事本等字處理軟件編寫,調試不方便。VisualLisp是AutoLisp的換代產品,與AutoLisp完全兼容,其效率比解釋運行高5~8倍。VisualLisp擴展了使用ActiveX對象的語言,支持多文檔、對象和事件,并且提供強大的集成開發(fā)環(huán)境,使開發(fā)運行效果更高而且生成更加平安的可執(zhí)行程序〔VLX和FAX〕。2、AutoLisp及VisualLisp開發(fā)工具一、AutoCAD常用的二次開發(fā)工具簡介ADS即AutoCAD開發(fā)系統(tǒng)〔AutoCADDevelopSystem〕,它是用來開發(fā)AutoCAD應用程序的C語言程序設計環(huán)境,它與AutoCAD并不直接通信,而是以AutoLisp為中介聯(lián)系起來,這就擺脫了AutoCAD的約束,從而具有更大的靈活性。在采用ADS對AutoCAD進行開發(fā)時,使用C語言來編寫ADS的應用程序與使用AutoLisp語言來編寫的程序效果相同。在某些方面,C語言的功能比AutoLisp要強,比方運行速度比AutoLisp快,對各種類型的文件處理靈活,容易加密,而且使用ADS開發(fā)方式還可以節(jié)省內存,對操作系統(tǒng)及硬件資料的控制也較強。但C語言編程復雜,使用也比較麻煩,程序的任何一點變化都必須經過連接等操作規(guī)程,不易掌握。同時ADS程序需要編譯才能運行,不易見到代碼效果,而且同樣功能的ADS程序要比AutoLisp代碼要長得多。3、ADS開發(fā)工具一、AutoCAD常用的二次開發(fā)工具簡介VBA:〔MicrosoftVisualBasicforApplications〕是嵌套在AutoCAD之中的一個基于對象的編程環(huán)境,它提供了豐富的開發(fā)能力,能直接在AutoCAD內部執(zhí)行。VBA通過AutoCADActiveXAutomationInterface發(fā)送信息到AutoCAD。VBA的優(yōu)點如下:1〕容易使用Windows系統(tǒng)資源,使AutoCAD能容易地與其他Windows下的應用軟件交互;2〕對話框設計能力比DCL好得多,能快速高效地創(chuàng)立對話框;3〕多圖檔環(huán)境下的應用程序比VisualLisp提供更多的支持;4〕VBA工程能夠單獨存儲或放在圖形文件中,這使開發(fā)者在發(fā)布應用程序時有很大的靈活性。VBA的缺點是:1〕VBA不能象VisualLisp那樣隨心所欲地使用AutoCAD命令,只能像腳本文件的模式,以字符串的方式向AutoCAD命令發(fā)送一串響應,這個字串的內容也只好在自己的程序中生成和進行數據轉換;2〕源程序始終以相當容易接近的方式,暴露在最終用戶面前,由于用戶的誤操作,很容易使經常使用的應用程序出錯甚至崩潰。4、VBA開發(fā)工具一、AutoCAD常用的二次開發(fā)工具簡介ObjectARX是AutoDesk公司針對AutoCAD平臺上的二次開發(fā)而推出的一個面向對象的32位AutoCAD二次開發(fā)工具開發(fā)軟件包,它提供了以C++為根底的面向對象的開發(fā)環(huán)境及應用程序接口,可直接訪問AutoCAD數據庫的核心數據結構和代碼,在運行期間擴展AutoCAD固有的類和功能,創(chuàng)立與AutoCAD固有命令相同特權的新命令。

5、ObjectARX開發(fā)工具與以往的AutuCAD二次開發(fā)工具AutoLISP和ADS不同,ObjectARX應用程序是一個DLL,共享AutoCAD的地址空間,其效率、數據處理和軟硬件控制能力好,是針對多圖檔環(huán)境的程序設計方法。

AutoLisp與ADS都是通過內部進程通信〔IPC〕來和AutoCAD通信,它們和AutoCAD是相互別離的過程,而ARX與AutoCAD采用windows通訊機制,運行更穩(wěn)定、更簡單?!?〕ObjectARX的特點一、AutoCAD常用的二次開發(fā)工具簡介ObjectARX開發(fā)環(huán)境說到底就是VC,就是面向對象,就是類。ObjectARX應用程序本身就是DLL。ObjectARX的優(yōu)點如下:

ObjectARX更加適合于速度要求高的應用程序開發(fā)要求。在很多情況下可以用LISP做開發(fā),可以用VBA做開發(fā),然而在對速度要求很高時,比方說做分形理論仿真、做SQL數據庫接口,在這些對速度要求很高的場合,用ObjectARX具有明顯的優(yōu)勢。VC下的ARX顯然更具有可移植性:我們的開發(fā)如果是站在移植的角度、站在通用性的角度或站在PDM的角度處理問題而不是局限于設計本身的話,最好還是用ObjectARX。在復雜度要求較高的應用程序的開發(fā)方面,ObjectARX也具有明顯的優(yōu)勢。5、ObjectARX開發(fā)工具〔2〕ObjectARX的優(yōu)勢AcRx類庫:AutoCAD的實時擴展類,提供了系統(tǒng)級的類和C++的宏指令集,用于DLL應用程序的初始化、連接及運行時類的注冊和一致性檢查,該庫提供了對象實時類的標識及繼承分析、對現(xiàn)有類的擴充定義、對象的比較及檢驗、對象的拷貝等功能。AcEd類庫:AutoCAD編輯器類的簡稱,該類庫用于定義和注冊新的AutoCAD命令,所定義的命令和AutoCAD本身內部命令占有相同的內部堆棧,本類庫中有一個重要的類AcEditorReactor,它監(jiān)測AutoCAD編輯器的狀態(tài),并根據特定事件運行相應的程序。AcDb類庫:AutoCAD圖形數據庫的簡稱,提供可直接訪問AutoCAD數據庫結構的類包括實體等圖形對象和層、線型等非圖形對象。ARX環(huán)境主要由AcRx、AcEd、AcDb、AcGi、AcGe和ADS類庫組成,其核心是兩組關鍵的API,即AcDb和AcEd。5、ObjectARX開發(fā)工具〔3〕ObjectARX的組成一、AutoCAD常用的二次開發(fā)工具簡介AcGi類庫:是AutoCAD實體渲染圖形接口庫,該類庫提供了許多圖形界面工具來繪制AutoCAD的實體,該類庫中的函數WorldDraw()、viewportDraw()及saveAs()等作為AcDbEntity類的成員函數。AcGe類庫:是AutoCAD幾何庫的簡稱,該類庫可以被AcDb類所引用并提供諸如向量、點及轉換矩陣等用于普通二維及三維的幾何操作,同時也提供簡單的幾何對象,如點、曲線、曲面等。AcGe庫主要包含二維操作類及三維操作類兩個子集。ADS類庫:一組標準的C語言庫函數庫,從功能上講,可包含幾乎上述五個類庫的全部功能,典型的ARX用ADS庫進行諸如實體選擇、操作選擇集、數據獲取等操作。5、ObjectARX開發(fā)工具〔3〕ObjectARX的組成一、AutoCAD常用的二次開發(fā)工具簡介使用ObjectARX開發(fā)應用程序要求如下的軟硬件配置:--—Windoiws95或NT4.0以上;--—MicrosoftVisualC++6.0;--—安裝有AutoCAD2000以上版本;--—至少90MHz或更高的奔騰PC機,內存為32MBRAM或更多;

--—800*600SVGA顯示器或更高配置。學習ObjectARX開發(fā)應用程序所需的知識:--C/C++知識,清楚面向對象編程的概念,并且了解MicrosoftVisualC++的使用。--AutoCAD的根本知識和使用經驗。熟悉AutoCAD各功能操作。--如果您曾用AtuoLISP或ADS開發(fā)過AutoCAD,那就最好。5、ObjectARX開發(fā)工具〔4〕開發(fā)ObjectARX程序所需根底一、AutoCAD常用的二次開發(fā)工具簡介一、AutoCAD常用的二次開發(fā)工具簡介二、建立ObjectARX應用程序的根本方法三、ObjectARX2000開發(fā)模板的定制四、ObjectARX與AutoCAD間的信息傳遞ObjectARX初次接觸二、建立ObjectARX應用程序的根本方法ObjectARX不隨AutoCAD發(fā)行盤一起發(fā)行,而由Autodesk的產品供給商來提供,或者由用戶通過Autodesk的網址自由下載。用戶可直接在Autodesk公司網站〔://autodesk)上下載,也可以在國內一些網站上下載,如、://easylou/,還可以在://上下載。下載后,將得到一個ObjectARX.rar文件,該文件越19MB,解壓在一個確定目錄下即可。1、ObjectARX的下載與安裝

解壓后可安裝到硬盤的指定目錄。安裝后有十個子目錄:〔1〕Arxlabs:應用程序例如;〔2〕Classmap:表示ObjectARX類層次關系的圖形文件;〔3〕Docs:存放ObjectARX的在線幫助文件;〔4〕Docsamples:包含《ObjectARX開發(fā)指南》中的每個實例;〔5〕Lesdk:Autodesk的圖象引擎SDK;〔6〕Inc:ObjectARX應用程序所需的頭文件;〔7〕Lib:ObjectARX應用程序所需的庫文件;〔8〕Redistrib:運行ObjectARX應用程序所需的一組動態(tài)鏈接庫;〔9〕Samples:包含了一組ObjectARX應用程序實例;〔10〕Utils:包含了ObjectARX擴展的應用程序子目錄。1、ObjectARX的下載與安裝

二、建立ObjectARX應用程序的根本方法ARX應用程序由定義文件〔.DEF〕和C/C++源程序文件〔.CPP〕組成。2、ObjectARX應用程序的文件構成二、建立ObjectARX應用程序的根本方法模塊定義文件如下:DESCRIPTION‘FirstARXsampleapplication’LIBRARYFirstARXEXPORTSacrxEntryPointPRIVATEacrxGetApiVersionPRIVATE〔1〕定義文件〔.DEF〕DEF文件是一個模塊定義文件,由于ARX應用程序是一個動態(tài)鏈接庫,因此要正確生成模塊,必須有一個相應的模塊定義文件,該文件中必須定義AutoCAD調用的入口函數名,以便AutoCAD能訪問該函數。

LIBRARY段定義動態(tài)鏈接庫名,EXPORTS段定義輸出函數名acrxEntryPoint()和acrxGetApiVersion,第一個為AutoCAD調用ARX應用程序的入口函數名,第二個是在rxapi.lib庫中生成的函數?!?〕C/C++源程序文件〔.CPP〕

3、ObjectARX應用程序的文件構成二、建立ObjectARX應用程序的根本方法2〕接口函數局部使用了initApp()、unloadApp()和acrxEntryPoint()三個關鍵函數,initApp()、unloadApp()是當應用程序加載和卸載時被AutoCAD調用。initApp()借AutoCAD命令機制注冊一個新的AutoCAD命令。acrxEntryPoint()函數不僅是AutoCAD與ObjectARX應用程序通訊的入口,而且是應用程序傳遞消息和向AutoCAD返回狀態(tài)碼的一個途徑。1〕頭文件和函數聲明局部aced.h和rxregsvc.h是任何ObjectARX應用程序都必須要包含的。3〕用戶主體函數局部主要依據用戶要完成的任務不同,在用戶開發(fā)應用程序時,一般只需要編寫用戶程序主體函數,從而實現(xiàn)任意復雜的功能。extern"C"AcRx::AppRetCodeacrxEntryPoint(AcRx::AppMsgCodemsg,void*ptr){switch(msg){caseAcRx::kInitAppMsg:acrxDynamicLinker->unlockApplication(ptr); acrxRegisterAppMDIAware(ptr); initApp(); break;caseAcRx::kUnloadAppMsg:unloadApp();break; default: break;}returnAcRx::kRetOK;}二、建立ObjectARX應用程序的根本方法4、ObjectARX應用程序入口函數

AutoCAD命令用AcEdCommandStack類定義的并成組地保存在命令堆棧中,利用acedRegComamnd()宏可以對命令堆棧進行操作。5、ObjectARX應用程序新命令注冊與注銷二、建立ObjectARX應用程序的根本方法1〕命令注冊voidinitApp(){acedRegCmds->addCommand("Hello_COMMAND",//命令組名 "Hello",//全局命令名,字符型,一般為英文, "Hello",//本地化命令名,一般與全局命令名相同ACRX_CMD_TRANSPARENT,//可做透明命令使用 usr_app//指向命令執(zhí)行時所調用的函數);}2〕命令注銷voidunloadApp(){acedRegCmds->removeGroup("Hello_COMMAND");}1)創(chuàng)立工程文件File->new->Project->Win32Dynamic-LinkLibray->anemptyDLLproject->Finish6、在VC++中建立ObjectARX應用程序的方法二、建立ObjectARX應用程序的根本方法2〕設置編譯器選項Project下拉菜單->Settings對話框->在Setingfor中保證工程名被選中->Settingfor列表框中,選AllConfigurations->選C/C++->Category下拉列表框中選“CodeGeneration”->從“UseRuntimelibrary”框中選“MultithreadedDLL”->Category下拉列表框中選擇“Preprocessor”->在“Additionalincludedirectories:”框中輸入ObjectARX包含頭文件的路徑。3〕設置鏈接選項在上述對話框中選擇“l(fā)ink”選項卡->Category下拉列表框中選擇“General”->Settingfor列表框中選“Win32release”->將“outputfilename”框中的.dll改為.arx.->同上選“Win32Debug”->將“outputfilename”框中的.dll改為.arx.->Settingfor列表框中選“AllConfigurations->在“Object/librarymodule”中參加“acad.libacedapi.libacutil15.libacrx15.librxapi.lib->在”category下拉列表中選“input”->在“Additionalincludedirectories:”框中輸入ObjectARX包含庫文件的路徑。二、建立ObjectARX應用程序的根本方法6、在VisualC++中建立ObjectARX應用程序的方法4)增加C++源文件Project->AddtoProject->new…->files->C++SourceFile->Filename:中輸入*.cpp5)增加DEF文件Project->AddtoProject->new…->files->TextFile->Filename:中輸入*.def〔1〕ObjectARX應用程序的加載

7、ObjectARX應用程序的加載與卸載二、建立ObjectARX應用程序的根本方法〔2〕ObjectARX應用程序的卸載

1〕定義自動加載:通過windows的系統(tǒng)信息注冊表對應用程序的特定入口進行修改。2〕acad.rx初始化加載文件:將應用程序的文件名、路徑名寫入acad.rx文件中,并保證acad.rx在AutoCAD能找到的路徑之下。3〕使用AutoLISP的函數arxloadCommand:(arxload“e:\\zrh\\app3\\debug\\app3.arx”);4〕使用arx命令;5〕使用Appload應用程序;6〕使用ObjectARX的acedArxLoad()函數使用arxunload函數、ARX命令、appload應用程序、ObjectARX的acedArxunLoad()函數。一、AutoCAD常用的二次開發(fā)工具簡介二、建立ObjectARX應用程序的根本方法三、ObjectARX2000開發(fā)模板的定制四、ObjectARX與AutoCAD間的信息傳遞ObjectARX初次接觸ObjectARX開發(fā)模板是為ObjectARX應用程序開發(fā)者提供的,嵌入在MicrosoftVisualStudio中用于修改ObjectARX工程的工具,在開發(fā)ObjectARX應用程序時,可使用該模板工具修改ObjectARX2000應用程序向導建立的工程。

1、ObjectARX2000AppWizard安裝三、ObjectARX2000開發(fā)模板的定制ObjectARX2000AppWizard安裝過程如下:1〕如果翻開了VisualC++6.0,先關閉它;2〕轉到ObjectARX2000\utils\ObjARAWiz目錄下,運行WizardSetup.exe文件;3〕在彈出的對話框中單擊“Install”按鈕,安裝完成后,在VisualC++6.0新建工程選項中就多了一項工程類型〔即ObjectARX2000AppWizard〕,此后就可以在VisualC++6.0中使用ObjectARX2000AppWizard建立ObjectARX工程。對ObjectARX工程進行編譯鏈接時,要用到ObjectARX開發(fā)工具包資源,需將其資源的搜索路徑添加到VS包含文件搜索路徑中去。〔1〕設置頭文件搜索路徑1〕選擇在“Tools”菜單中的“Options”項;2〕在“Options”對話框中選擇“Directories”標簽,并在“Showdirectoriesfor”欄中選擇“Includefiles”;3〕將ObjectARX的安裝目錄下的“INC”目錄路徑添加到“Directories”的路徑中,如“C:\ObjectARX2000\INC”或雙擊新工具條目欄在其右側出現(xiàn)的“…”按鈕,出現(xiàn)“Directoryname”對話框,選INC目錄。

〔2〕設置庫文件的搜索路徑在“Showdirectoriesfor”欄中選擇“Libraryfiles”,同頭文件的添加方法,可將ObjectARX2000目錄下的“LIB”目錄添加到目錄表中。2、ObjectARX資源搜索路徑的設置三、ObjectARX2000開發(fā)模板的定制ObjectARXAddIn是與ObjectARXWizard配合的工具,它在VisualC++6.0中增加一組新的工具欄,以減輕編程工作,激活該模板工具欄的步驟如下:〔1〕在VisualC++6.0中選擇“Tools\Customize…”,在“Customize”對話框中選擇“Add-insandMacroFiles”標簽;〔2〕在列表框中選中ObjectARX2000Add-In,單擊Close;〔3〕在VisualStudio中生成一個新的工具欄名稱為“Toolbar1”;〔4〕假設想將該工具欄改名,那么再次翻開Customize對話框,選擇Tools標簽,拖動到列表框的滑動條,選擇Toolbar1,可以在Toolbarname編輯框中給它改名為“ObjectARXToolbar,單擊Close。3、ObjectARX開發(fā)模板工具的激活三、ObjectARX2000開發(fā)模板的定制ObjectARXAddIn工具欄在ObjectARX編程中提供以下功能:3、ObjectARX模板工具提供的功能

三、ObjectARX2000開發(fā)模板的定制〔1〕選擇ObjectARX包含文件,即可以選擇要在當前活動的ObjectARX工程中使用的類或函數,為所選項建立對應的“#include”語句?!?〕定義新的AutoCAD命令〔ObjectARXDefinedCommands〕,即可以選擇當前活動的ObjectARX工程中使用的類或函數定義的新命令。〔3〕選擇入口點消息〔ObjectARXEntryPointMessage〕,即可以選擇要在當前活動的ObjectARX工程中使用的類或函數使用哪一個消息?!?〕創(chuàng)立ObjectARX臨時反響器,用于定義或修改ObjectARX臨時反響器,可以添加新的反響器類,刪除已定義的反響器類,在一個已定義的反響器類中添加函數,從一個已定義的反響器類中刪除函數?!?〕創(chuàng)立新的自定義類〔ObjectARXClassWizard〕,定義或修改自定義實體或自定義對象,可從AutoCAD內部實體或對象類派生需要的類?!?〕ObjectARXMFC支持,可以在ObjectARX應用程序向導新建的工程中參加一些MFC特性。〔7〕ObjectARXInputPointAPIsupport:ObjectARX入口點支持,可以使用ObjectARX入口點API添加新入口點類;〔8〕ObjectARXRegisterApplication:ObjectARX注冊應用程序,用于擊活或使用AutoCAD的請求加載特性;〔9〕NewATLObject:新ALT對象用于調用VisualStudio的對象向導,可以在當前的工程中添加新的ALT部件;〔10〕ObjectARX部件:可以存儲一些常用的函數和源程序代碼,這些函數和源程序代碼可以在需要時插入到當前工程或當前文件?!?1〕ObjectARXOnlineHelp:ObjectARX在線幫助。4、ObjectARX模板工具提供的功能

三、

溫馨提示

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

評論

0/150

提交評論