999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于AutoCAD二次開發(fā)技術(shù)的研究

2008-12-31 00:00:00孔勇平
電腦知識與技術(shù) 2008年12期

摘要:本文對AutoCAD的二次開發(fā)技術(shù)進行了探討,就AutoCAD六種開發(fā)技術(shù)AutoLISP,VisualLISP,ADS,VBA,Object ARX,Dot NET的內(nèi)涵作了簡要介紹,對其優(yōu)缺點進行了詳細的分析對比,指出ObjectARX和Dot NET是未來AutoCAD二次開發(fā)的方向,并為廣大的AutoCAD二次開發(fā)人員選用其開發(fā)工具提供參考性意見。

關(guān)鍵詞:AutoCAD;AutoLISP;VBA;ObjectARX;Dot NET;二次開發(fā)

中圖分類號:TP311文獻標(biāo)識碼:A文章編號:1009-3044(2008)11-2pppp-0c

Second Development Technology of AutoCAD

KONG Yong-ping,ZHU Juan

(South China University of Technology Computer Science and Engineering Institute,Guangzhou 510006,China)

Abstract:In this paper the development technique of AutoCAD has been discussed,AutoLISP,VisualLISP,ADS,VBA,Object ARX,Dot NET six technique that are used to develop AutoCAD second- ly are introduced in this paper. The merit and demerit of the six technique is analyzed and compa- reed among the technique in detail. indicating that ObjectARX and .NET API is the trend of AutoCAD secondary development, Some suggestions in choosing the tools are offered for engineers who are engaged in secondary developing AutoCAD.

Key words: AutoCAD;AutoLISP;VBA;ObjectARX;Dot NET;Second developed

1 引言

AutoCAD是美國Auto desk公司開發(fā)的通用型繪圖軟件,具有強大的圖形編輯和處理功能、開放性結(jié)構(gòu)以及良好的性能價格比,其版本從早期的1.0版到目前的2008版,在國內(nèi)外都已得到廣泛的應(yīng)用。AutoCAD作為Auto desk公司CAD工業(yè)的旗幟產(chǎn)品,伴隨著近年來整個PC基礎(chǔ)工業(yè)的突飛猛進,正在迅速而深刻地影響著人們從事設(shè)計和繪圖的基本方式。從始至今,AutoCAD是一種定位與全球各大領(lǐng)域和各類專業(yè)的通用微機CAD平臺軟件。到目前為止,Autodesk公司已經(jīng)相繼推出了四代二次開發(fā)工具,主要包括六種二次開發(fā)技術(shù):AutoLISP,Visual LISP,ADS,VBA,ObjectARX和Dot NET, 其中ObjectARX和Dot NET是全新的的開發(fā)手段,功能非常強大,是AutoCAD二次開發(fā)的方向。表1為此六種開發(fā)技術(shù)的性能特點的比較

由于每一種開發(fā)技術(shù)都有其優(yōu)點和缺點,而且在有些情況下是不可以比擬的。每個二次開發(fā)者可以根據(jù)自己的愛好特長和所要完成的任務(wù)來選擇具體的開發(fā)技術(shù)。下面將詳細介紹這幾種開發(fā)技術(shù)的特點和應(yīng)用領(lǐng)域。

2 基于AutoLISP/Visual LISP的開發(fā)技術(shù)

2.1 AutoLISP開發(fā)環(huán)境

AutoLISP是由Autodesk公司開發(fā)的一種采用LISP程序語言的編程工具。AutoLISP語言是一種嵌在AutoCAD內(nèi)部的LISP編程語言,既具有一般高級語言的基本結(jié)構(gòu)和功能,又具AutoCAD所特有的圖形處理功能。利用AutoLISP可以直接增加,修改和調(diào)用AutoCAD命令,并能結(jié)合各類標(biāo)準建立大量的參數(shù)圖形庫,還能夠?qū)Ξ?dāng)前圖形數(shù)據(jù)庫直接訪問和修改等。AutoLISP編程語言最使用的應(yīng)用之一是實現(xiàn)參數(shù)化繪圖的實現(xiàn),其中包括尺寸標(biāo)注和鼠標(biāo)拖動交互等等效果的實現(xiàn),同時能夠創(chuàng)建自己的對話框。 但AutoCAD和AutoCAD2.17以下版本的AutoCAD中不含AutoLISP,因此,AutoLISP只能夠在AutoCAD2.18以上的版本中應(yīng)用。AutoLISP不需要任何特定的硬件設(shè)備,只要一個系統(tǒng)能夠運行AutoCAD就能運行AutoLISP。

2.2 AutoLISP優(yōu)缺點

AutoLISP具有的優(yōu)點:利用AutoLISP語言對AutoCAD進行二次開發(fā),能夠充分發(fā)揮AutoCAD的使用效率,而且AutoLISP特有的優(yōu)點有,(1)編程十分簡潔易懂,便于調(diào)試。(2)直接針對AutoCAD,易于交互。(3)解釋執(zhí)行,效果明顯。AutoLISP在工程系統(tǒng),特別是繪圖系統(tǒng)的一個重要的開發(fā)工具。

AutoLISP的缺點是:(1)功能單一,綜合處理能力差。(2)解釋執(zhí)行,程序運行速度慢。(3)缺乏很好的保護機制,源程序保密性差。(4)LISP用表來描述一切,并不能很好地反映現(xiàn)實世界過程,跟人的思維方式不一致。(5)不能直接訪問硬件設(shè)備和進行二制文件的讀寫。(6)由于AutoLISP編寫的AutoCAD應(yīng)用程序是用記事本等(7)字處理軟件編寫的,調(diào)試起來很不方便。AutoLISP的這些特點,使得其應(yīng)用有一定的局限性,使其僅適合于有一定能力的用戶來完成一些自己的開發(fā)任務(wù)。

2.3 Visual LISP開發(fā)環(huán)境

Visual LISP是Autodesk公司為AutoLISP提供的一個完整的開發(fā)環(huán)境,從R14版開始,AutoCAD支持Visual LISP開發(fā)工具。Visual LISP是一個可視化的LISP語言開發(fā)環(huán)境,它是AutoLISP語言的擴展和延伸。

Visual LISP具有以下特性:(1)在完全可視化的開發(fā)環(huán)境下編寫、調(diào)試程序。(2)Visual LISP程序經(jīng)過編譯后,提高了運行性能和保密性。(3)LISP代碼通過AutoCAD R14的Object ARX接口,提高了程序的運行速度。(4)Visual LISP是一個被建立并裝載的Object ARX應(yīng)用程序,因而可以在AutoCAD外部裝載和更新。

3 基于ADS的開發(fā)技術(shù)

3.1 ADS開發(fā)環(huán)境

ADS(AutoCAD Development System)是AutoCAD的C語言開發(fā)系統(tǒng),是繼AutoLISP后的第二代開發(fā)工具,是從AutoCAD R14開始引入的C語言開發(fā)工具,ADS不是C語言的一個子集,也不是基于C而編譯的專用語言(如Microstation的MDL)但它包括了C的全部功能。是一組可以用C語言編寫AutoCAD應(yīng)用程序的頭文件和目標(biāo)庫。它直接利用用戶熟悉的各種流行的C語言編譯器,將應(yīng)用程序編譯成可執(zhí)行的文件在AutoCAD環(huán)境下運行,因此ADS很輕易地克服了AutoLISP語言所固有的諸多缺點。且ADS由于其速度快,有采用結(jié)構(gòu)化的編譯體系,因而很適合高強度的數(shù)據(jù)處理,如二次開發(fā)的橋梁CAD,工程分析CAD,建筑結(jié)構(gòu)CAD等等。

3.2 ADS優(yōu)缺點

與AutoLISP相比,ADS優(yōu)越之處在于:(1)具備錯綜復(fù)雜的大規(guī)模處理能力。(2)編譯成機器代碼后執(zhí)行速度快。(3)編譯時可以檢查出程序設(shè)計語言的邏輯錯誤。(4)程序源代碼的可讀性好于AutoLISP。

ADS的缺點:(1)C語言比LISP語言難于掌握和熟練應(yīng)用。(2)ADS程序的隱藏錯誤往往導(dǎo)致AutoCAD乃至操作系統(tǒng)的崩潰。(3)需要編譯才能運行,不易見到代碼的效果。(4)同樣功能,ADS程序源代碼比AutoLISP代碼長很多。

ADS都是通過內(nèi)部進程通信來和AutoCAD通訊,他們與AutoCAD是相互分離的過程;而ObjectARX以DLL形式與AutoCAD共享地址空間。因此相比之下,前者速度更快,運行更穩(wěn)定,更簡單。由于是在Windows及VC++編程環(huán)境里運行,所以,對開發(fā)者的編程要求較高。

自從AutoLISP R14后,已經(jīng)不再支持和發(fā)展ADS程序設(shè)計模式。從第二代的ADS開始,Autodesk開始采用多種語言環(huán)境下的開發(fā)工具,從LISP語言到Basic,C/C++等。

4 基于VBA的開發(fā)技術(shù)

4.1 VBA開發(fā)環(huán)境

Autodesk公司自它的AutoCAD R14.01版開始,內(nèi)置了VBA開發(fā)工具, VBA(Visual Basic for Application)是一種嵌入AutoCAD內(nèi)部基于對象的集成編程環(huán)境。已經(jīng)被集成到AutoCAD2000以后所有的版本中。VBA為開發(fā)者提供了一種新的選擇,同時也為用戶訪問AutoCAD中豐富的技術(shù)框架打開了一條新的通道。VBA和AutoCAD中強大的ActiveX自動化對象模型的結(jié)合,代表了一種新型的定制AutoCAD的模式架構(gòu)。VBA和AutoCAD運行在同一處理空間,為AutoCAD提供智能和快速的編程環(huán)境。VBA編程環(huán)境有它自己一套對象、關(guān)鍵詞、常量,并且提供程序流程、控制、調(diào)試和執(zhí)行。VBA具有強大的開發(fā)能力。

VBA的主要功能和特點:(1)VBA可提供強大的窗體創(chuàng)建功能,為應(yīng)用程序建立對話框及其他屏幕界面。(2)可創(chuàng)建自己的工具條。(3)可建立功能強大的模塊級宏指令,宏名實質(zhì)就是模塊的過程名。(4)提供建立類模塊的功能,這對開發(fā)大型工程非常有用,因為類可提供重用組件。另外,對于AutoCAD ActiveX技術(shù)中的應(yīng)用程序級和對象級事件調(diào)用,將使用類模塊。(5)具備完善的數(shù)據(jù)訪問與管理能力,通過DAO(數(shù)據(jù)訪問對象),可以對Access數(shù)據(jù)庫或其他外部數(shù)據(jù)(象dBase,F(xiàn)oxpre等)實現(xiàn)訪問與管理。此功能比直接使用AutoCAD的數(shù)據(jù)庫管理系統(tǒng)要方便,且功能強大。(6)可以使用SQL語句檢索數(shù)據(jù),與RDO(遠程數(shù)據(jù)對象)結(jié)合起來,能夠建立客戶機/服務(wù)器級的數(shù)據(jù)通信。(7)能夠使用Win32API提供的功能,建立應(yīng)用程序與操作系統(tǒng)之間的通信。

VBA的不足之處:(1)VBA不能像Visual LISP那樣可以隨意使用AutoCAD命令,只能像腳本文件的模式,以字符串的方式向AutoCAD命令發(fā)送一串響應(yīng),這個字符串的內(nèi)容也只要在自己的程序中生成和進行數(shù)據(jù)轉(zhuǎn)換。(2)由于VBA是以對象作為數(shù)據(jù)處理的基本單元的,因此像Trim Extend之類的命令都不能真正實施,要想完成這樣的操作,相關(guān)數(shù)據(jù)只能在程序中自己計算。(3)源程序始終以相當(dāng)容易接近的方式,暴露在最終用戶面前,由于擁護的誤操作,很容易使正常的應(yīng)用程序出錯甚至崩潰。

5 基于ObjeceARX的開發(fā)技術(shù)

5.1 ObjectARX開發(fā)環(huán)境

ObjectARX(AutoCAD Run-Time Extension)是基于AutoCAD R14的一種新的編程環(huán)境,它提供了以C++為基礎(chǔ)的面向?qū)ο蟮拈_發(fā)環(huán)境及應(yīng)用程序接口,能真正快速地訪問AutoCAD圖形數(shù)據(jù)庫。ObiedARX程序本質(zhì)上是Windows動態(tài)鏈接庫(DLL)程序,與AutoCAD共享地址空間,直接訪問AutoCAD數(shù)據(jù)庫結(jié)構(gòu)、圖形系統(tǒng)以及CAD幾何造型核心,以便能在運行期間實時擴展AutoCAD的功能,創(chuàng)建能全面享受AutoCAD固有命令的新命令。ObjectARX程序與AutoCAD、Windows之間均采用Windows消息傳遞機制。

由于ObjectARX應(yīng)用程序是以C++為基本開發(fā)語言,而C++具有面向?qū)ο缶幊谭绞降臄?shù)據(jù)可封裝性、可繼承性及多態(tài)性的特點,用其開發(fā)的AutoCAD軟件具有模塊性好、獨立性強、連接簡單、使用方便、內(nèi)部功能高效實現(xiàn)以及代碼可重用性強等特點,并且支持MFC基本類庫,能簡潔高效地實現(xiàn)許多復(fù)雜功能。ObjectARX的核心是兩組關(guān)鍵的API,即AcDb (AutoCAD數(shù)據(jù)庫)和AcE(AutoCAD編譯器),另外還有其它的一些重要庫組件,如AcRX (AutoCAD實時擴展)、AcGi(AutoCAD圖形接口)、AeGe(AutoCAD幾何庫)、ADSRx(AutoCAD開發(fā)系統(tǒng)實時擴展)。

與前面幾中開發(fā)技術(shù)相比,這種開發(fā)技術(shù)擁有對AutoCAD最深入的控制能力,能夠提供最多類型的窗體。使用ARX可以向AutoCAD注冊自己的命令,用戶運行該程序時無需了解關(guān)于AutoCAD更多的知識。這種便利的代價就是編制ARX程序比VBA和LISP程序需要花費更多的時間,因此用來編制簡單的繪圖工具有點浪費了。要掌握ARX的前提是必須熟練掌握C++。ARX能夠訪問很多的AutoCAD底層工具(這些東西可能VBA和LISP并不能訪問),這是大多數(shù)開發(fā)者選擇ARX的主要原因,他們需要作一些用其他兩種開發(fā)工具不能完成的工作。此外,這也是唯一一種能夠確保代碼安全(不被別人閱讀或非法復(fù)制)的開發(fā)工具。如果需要開發(fā)自定義實體,使用空間過濾,擴展一個使用其他開發(fā)工具的應(yīng)用程序的功能,正在開發(fā)用于銷售的第三方工具,或者用到一大堆用VBA和LISP不能訪問的東西(或者費很大力氣去實現(xiàn)的東西),那么ObjectARX是最佳選擇。因此ObjectARX的許多特性能夠?qū)崿F(xiàn)很多原來開發(fā)環(huán)境難以實現(xiàn)的功能,提高了開發(fā)效率,它是AutoCAD新一代開發(fā)技術(shù)。開發(fā)人員可以開發(fā)相應(yīng)的模塊來定制和擴充AutoCAD的功能。同樣,ARX庫被設(shè)計成能夠與AutoLISP和ADS應(yīng)用程序協(xié)同工作,以便編程人員能夠選擇最能滿足其需要和經(jīng)驗的編程工具。

ObjectARX應(yīng)用程序的主要特點:(1)基于WindowsDLL的編譯應(yīng)用程序環(huán)境。(2)集成了AutoCAD,AutoLISP和ADS。(3)提供220個類與3000多個不重復(fù)的成員函數(shù)。(4)最大的可操作性,直接利用C++進入AutoCAD數(shù)據(jù)結(jié)構(gòu)內(nèi)核。(5)運行時可擴展。(6)能夠接受不同事件的聲明。(7)替代擴充充實實體數(shù)據(jù)和構(gòu)建應(yīng)用程序消息。(8)在不同的操作系統(tǒng)中可以移植。(9)用戶能夠定義“原始”的AutoCAD命令。(10)對于INTEL平臺,一個ARX動態(tài)鏈接庫工作于所有的應(yīng)用程序。

ObjectARX的相對不足之處:對二次開發(fā)者的計算機專業(yè)知識、軟件專業(yè)知識要求較高。增加了開發(fā)的復(fù)雜度和難度,加長了軟件開發(fā)的周期。

6 新一代基于Dot NET的開發(fā)技術(shù)

Dot NET是基于Mircosoft.NET架構(gòu)直接進行AutoCAD二次開發(fā)的一種新技術(shù)。目前能支持Dot NET開發(fā)方法的軟件版本為AutoCAD2005到AutoCAD2008,但能完全支持Dot NET開發(fā)方法的軟件為AutoCAD2006到AutoCAD2008。不管開發(fā)人員熟悉的語言是Visual Basic.NET還是Visual C#.NET,使用Dot NET進行AutoCAD二次開發(fā)的基本方法和步驟基本上是一樣的。在新推出的支持Dot NET開發(fā)的AutoCAD 版本中,Autodesk公司專門為其開發(fā)增加了.NETAPI。.NET API提供了一系列托管的外包類(Managed Wrapper Class),使開發(fā)人員可在.NET框架下,使用任何支持.NET的語言,如VB.NET、C和Managed C++等對AutoCAD進行二次開發(fā)。其優(yōu)點是完全面向?qū)ο螅趽碛信cC++相匹配的強大功能的同時,具有方便易用的特點,是較理想的AutoCAD二次開發(fā)工具。

6.1 .NET API與傳統(tǒng)Object ARX

ARX的主要區(qū)別.NET API與傳統(tǒng)ObjectARX的區(qū)別主要在于:在.NET環(huán)境下開發(fā)應(yīng)用程序與在VC環(huán)境下開發(fā)應(yīng)用程序的區(qū)別。首先,在VC環(huán)境下,程序員需要自己管理內(nèi)存的申請和釋放,而.NET采用了垃圾回收機制,由.NET框架自行判斷內(nèi)存回收的時機并實行回收,從而解決了令C++程序員頭痛的內(nèi)存泄漏問題。也正是由于這個特點,在.NET環(huán)境下不能像在C++環(huán)境下那樣利用析構(gòu)函數(shù)釋放其他資源,需要程序員在程序中顯式地釋放。在.NETAPI中,主要通過Dispose來函數(shù)進行資源的釋放。其次,ObjectARX中的各種反應(yīng)器(Reactor)在.NET API中由外包類映射為各種事件(Event),可通過定義這些事件的響應(yīng)函數(shù)來響應(yīng)AutoCAD的各種操作。同時對于錯誤信息的處理也從函數(shù)返回值改變?yōu)椤巴ǔ#划惓!眮硖幚恚蛊涓玫丶嫒?NET。由于VB.NET、C等語言都是完全面向?qū)ο蟮模瑳]有全局函數(shù)的概念,所以.NET API將ObjectARX下的全局函數(shù)封裝為.NET API下的某些對象或?qū)ο蟮膶傩裕鏞bjectARX下與用戶交互的系列全局函數(shù)被封裝為CommandLin -ePrompt類。.NET API在具有ObjectARX強大功能的同時,也具有VBA使用方便易用的優(yōu)點,同時具有C++的強大功能,是較為理想的開發(fā)工具。雖然目前.NET API在某些方面還有些不足,但隨著其版本的更新、完善,將會成為眾多開發(fā)人員的首選工具。

7 結(jié)束語

本文對AutoCAD的四代開發(fā)技術(shù)分別做了詳細的介紹和比較。從目前開發(fā)技術(shù)可知,第一代的AutoLISP基本上能夠被第三代的Visual LISP完全替代,第三代和第四代開發(fā)工具將成為今后AutoCAD二次開發(fā)的必然選擇。其中主要的四種開發(fā)技術(shù)VisualLISP,VBA, ObjectARX, Dot NET分別利用當(dāng)前比較流行的編輯語言LISP,Visual Basic,Visual C++及Visual C#,。而ObjectARX著眼于應(yīng)用程序開發(fā)的自動化,智能化,為適應(yīng)未來發(fā)展的需要,ObjectARX代表了AutoCAD二次開發(fā)技術(shù)的一個主要方向,具有廣闊的前景。ARX類庫與MFC類庫的有機結(jié)合,必將為AutoCAD的二次開發(fā)注入新的生機和活力。Dot NET在具有ObjectARX強大功能的同時,也具有VBA使用方便易用的優(yōu)點,同時具有C++的強大功能,是最新的較為理想的開發(fā)工具。雖然目前.NET API在某些方面還有些不足,但隨著其版本的更新、完善。將與ObjectARX一起代表了AutoCAD二次開發(fā)技術(shù)的未來發(fā)展方向。

參考文獻:

[1]明經(jīng)CAD社區(qū).http://www.mjtd.com/bbs/.

[2]ObjectARX編程站.http://www.objectarx.net/.

[3]郭啟全.AutoCAD 2002應(yīng)用與開發(fā)教程.北京:機械工業(yè)出版社,2003.

[4]孫江宏,丁立偉,米潔.AutoCAD ObjectARX開發(fā)工具及應(yīng)用.北京:清華大學(xué)出版社,1999.

[5]老大中,趙占強.AutoCAD 2000 ARX二次開發(fā)實例精粹.北京:國防工業(yè)出版社,2001.

[6]孫海林,陸帥華,趙海峰.設(shè)計大師AutoCAD 2002高級使用篇.北京:清華大學(xué)出版社.

[7]高成慧,李燕.關(guān)于AutoCAD二次開發(fā)工具的探討.應(yīng)用技術(shù),2002,(2):31-33.

收稿日期:2008-01-20

作者簡介:孔勇平,男,助教,碩士,主要從事CAD,三維設(shè)計方面的研究;朱娟,女,碩士生導(dǎo)師,主要從事CAD,三維設(shè)計方面的研究。

主站蜘蛛池模板: 日本人又色又爽的视频| 无码一区二区波多野结衣播放搜索| 欧美中文字幕第一页线路一| 欧美成人亚洲综合精品欧美激情| 亚洲一道AV无码午夜福利| 一级高清毛片免费a级高清毛片| 国产精品林美惠子在线播放| 一级一毛片a级毛片| 成人毛片免费在线观看| 久久情精品国产品免费| 日韩在线播放中文字幕| 99在线视频免费| 国产欧美日韩免费| 一区二区午夜| 欧美五月婷婷| 欧洲熟妇精品视频| 四虎精品国产永久在线观看| 真实国产乱子伦高清| 亚洲侵犯无码网址在线观看| 亚洲av无码人妻| 国产女同自拍视频| 国产91视频免费| 国产亚洲高清在线精品99| 国产流白浆视频| 国产麻豆精品久久一二三| 免费A级毛片无码免费视频| 成年人视频一区二区| 亚洲精品另类| 婷婷开心中文字幕| 欧美精品1区2区| 免费啪啪网址| 一本大道AV人久久综合| AV在线麻免费观看网站| 欧美亚洲第一页| 五月婷婷综合网| 国产精品开放后亚洲| 国产一区在线观看无码| 永久免费无码成人网站| 国产91av在线| 国产精品精品视频| 亚洲国产成人精品无码区性色| 午夜视频免费试看| 国产在线自揄拍揄视频网站| 一级爱做片免费观看久久 | 国产免费怡红院视频| 97成人在线观看| 欧美另类精品一区二区三区| 欧美.成人.综合在线| 91麻豆国产精品91久久久| 四虎成人精品| 2022国产无码在线| 五月六月伊人狠狠丁香网| 久草网视频在线| 97视频在线精品国自产拍| 中文字幕av一区二区三区欲色| 十八禁美女裸体网站| 免费啪啪网址| 狠狠色综合久久狠狠色综合| 国产综合亚洲欧洲区精品无码| 91色在线视频| 午夜精品影院| 亚洲 欧美 中文 AⅤ在线视频| 亚洲日韩图片专区第1页| 四虎永久在线精品国产免费| 女人18毛片久久| 国产欧美在线观看精品一区污| 精品久久人人爽人人玩人人妻| 日韩亚洲综合在线| 亚洲精品中文字幕午夜| 国产高潮视频在线观看| 国产成人亚洲精品色欲AV| 日韩久草视频| 女人爽到高潮免费视频大全| 五月婷婷中文字幕| 欧美伊人色综合久久天天| 伊人久久久久久久| 国产精品青青| 在线观看视频99| 特级精品毛片免费观看| 国产超碰一区二区三区| 22sihu国产精品视频影视资讯| 又黄又湿又爽的视频|