分析AutoCAD二次開發(fā)方法的研究

2014-12-07 劉永波 瀘州職業(yè)技術(shù)學(xué)院

  CAD 技術(shù)對(duì)于實(shí)現(xiàn)我國(guó)產(chǎn)業(yè)信息化具有重要的推動(dòng)作用,它能夠有效地體現(xiàn)一個(gè)國(guó)家的技術(shù)設(shè)計(jì)水平。然而由于技術(shù)的不斷更新與完善,其功能的需求也會(huì)隨之產(chǎn)生巨大變化,這就要求CAD 軟件也要不斷更新,因此有必要加強(qiáng)對(duì)AutoCAD 的二次開發(fā)。本文主要從當(dāng)前AutoCAD 五種較為典型的開發(fā)工具及其優(yōu)缺點(diǎn)、應(yīng)用特點(diǎn)等方面分析AutoCAD 二次開發(fā)的方法。

  引言

  為了達(dá)到繪圖工作更加規(guī)范、準(zhǔn)確,減小計(jì)算繪圖工作量,有效避免其重復(fù)性,使CAD 技術(shù)發(fā)揮出積極效用的目標(biāo),在通用CAD 軟件的基礎(chǔ)上,進(jìn)行各種程度不同的本地開發(fā),即AutoCAD 二次開發(fā)。它對(duì)于豐富CAD 附加功能,提升軟件的操作速度,促進(jìn)技術(shù)轉(zhuǎn)化為較為先進(jìn)的生產(chǎn)力等多方面都具有積極的意義,加強(qiáng)對(duì)AutoCAD 二次開發(fā)的方法研究至關(guān)重要。實(shí)現(xiàn)AutoCAD 的環(huán)境客戶化的最為有效的途徑即為AutoCAD 開發(fā)系統(tǒng), 它主要提供了ADS、Visual LISP、VBA、Object ARX 以及AutoLisP 等五種非常典型的開發(fā)工具。僅將這五種開發(fā)工具視作AutoCAD 的使用功能,他們各自的特點(diǎn)及應(yīng)用情況具體如下:

1、ADS 開發(fā)系統(tǒng)

  ADS 是以C 語言為基礎(chǔ)的高級(jí)語言開發(fā)系統(tǒng),它實(shí)質(zhì)上是一個(gè)函數(shù)庫,用戶可通過C 語言進(jìn)行程序編寫,然后可直接調(diào)用ADS 開發(fā)系統(tǒng)中的函數(shù)庫,運(yùn)用用戶熟知的C 語言編譯器,實(shí)現(xiàn)應(yīng)用程序向可執(zhí)行的文件轉(zhuǎn)化,并在AutoCAD 環(huán)境中運(yùn)行,這類可執(zhí)行的文件就被稱作ADS 應(yīng)用程序。ADS 非常適合于處理高強(qiáng)度的數(shù)據(jù),例如,二次開發(fā)的土木工程CAD、建筑結(jié)構(gòu)CAD 等。

  1.ADS 開發(fā)系統(tǒng)優(yōu)點(diǎn):(1)對(duì)于讀取程序源代碼而言,ADS 具有較好的可讀性;(2)ADS 具備超大規(guī)模的處理能力;(3)在編譯過程中還能同時(shí)檢查程序的設(shè)計(jì)語言是否存在邏輯錯(cuò)誤;(4)運(yùn)用C 語言編譯器編程代碼之后,ADS 具備高速的執(zhí)行能力。

  2. ADS 開發(fā)系統(tǒng)缺點(diǎn):ADS 是以C 語言為基礎(chǔ),難以熟練地掌握與運(yùn)用,程序源代碼非常長(zhǎng),代碼的效果難以體現(xiàn);同時(shí)隱藏在ADS 中的邏輯錯(cuò)誤容易造成操作系統(tǒng)整體崩潰。但由于ADS 運(yùn)行較為快速、簡(jiǎn)單、穩(wěn)定,仍是許多大型項(xiàng)目廣泛采用的二次開發(fā)技術(shù)。

2、Visual LISP

  VisuaI LISP 本質(zhì)上是一種代碼編輯工具,它能夠最大程度地縮短Auto LisP 程序開發(fā)的時(shí)間,且源代碼的保密性非常好。在VisuaI LISP 中新增了部分函數(shù),如調(diào)試工具與有色代碼編輯器,具有面向事件與對(duì)象的特征。

3、VBA 語言

  VBA 的最大優(yōu)勢(shì)在于非常容易掌握,而且具有較高的代碼運(yùn)行效率。在AutoCAD 中,VBA 語言主要通過ActiveX 技術(shù)進(jìn)行二次開發(fā)。ActiveX 控件通過動(dòng)態(tài)鏈接庫與其他的應(yīng)用程序進(jìn)行互易活動(dòng),它是ActiveX 技術(shù)的關(guān)鍵與核心,在保證合法操作的前提下,避免了開發(fā)過程中出現(xiàn)重復(fù)開發(fā)的現(xiàn)象。當(dāng)AutoCAD 與VBA 結(jié)合運(yùn)行時(shí),就會(huì)形成一種新型的AutoCAD模型,此時(shí)可將AutoCAD 系統(tǒng)視作一個(gè)服務(wù)器端,而開發(fā)的程序則可視作為一個(gè)客戶端,兩者間利用Activex Automation 服務(wù)器進(jìn)行相互協(xié)調(diào),并利用Activex Automation 技術(shù)實(shí)現(xiàn)兩者間的消息傳遞。但同時(shí),運(yùn)用VBA 進(jìn)行程序的設(shè)計(jì),AutoCAD的操作技巧不能夠充分地體現(xiàn)出來,且不能夠向AutoCAD 進(jìn)行命令的注冊(cè),而且在執(zhí)行過程中必須運(yùn)用加載應(yīng)用程序加載對(duì)應(yīng)的dvb 文件,再通過工具菜單執(zhí)行,比較復(fù)雜。

表一 AutoCAD 各種開發(fā)工具的性能及特點(diǎn)比較

分析AutoCAD二次開發(fā)方法的研究

4、Object ARX 應(yīng)用程序

  Object ARX 實(shí)質(zhì)上一個(gè)動(dòng)態(tài)鏈接庫程序(DLL)。ObjectARX 是以c++ 語言為基礎(chǔ),專門進(jìn)行AutoCAD 二次開發(fā)的應(yīng)用程序接口與開發(fā)環(huán)境,現(xiàn)階段,大多企業(yè)多采用該技術(shù)進(jìn)行AutoCAD 二次開發(fā)。Object ARX 運(yùn)用DLL, 實(shí)現(xiàn)與AutoCAD 的地址空間的共享,并能夠直接訪問CAD 圖形系統(tǒng)、數(shù)據(jù)庫結(jié)構(gòu)等,從而達(dá)到擴(kuò)展AutoCAD 功能的目的。運(yùn)用該技術(shù)進(jìn)行二次開發(fā)的AutoCAD 軟件具有較強(qiáng)的代碼重用性,且模塊化非常強(qiáng),在開發(fā)時(shí)能最大限度地運(yùn)用Windows 資源。但該程序存在著內(nèi)存泄露的問題,會(huì)對(duì)AutoCAD 的安全造成直接影響。

5、Auto LisP

  Auto LisP 實(shí)質(zhì)上是一種AutoCAD 內(nèi)部的編程的表處理語言,對(duì)于任何語句都能夠快速地執(zhí)行,非常利于開發(fā)交互式程序。它的優(yōu)點(diǎn)在于能夠直接調(diào)用AutoCAD 的多數(shù)命令,同時(shí)能夠?qū)崿F(xiàn)繪圖程序設(shè)計(jì)的參數(shù)化。但Auto LisP 效率較低,且速度慢。由此可見,除Object ARX 掌握較為困難之外,它的其余指標(biāo)都比較具有優(yōu)勢(shì)。AutoCAD 開發(fā)人員在二次開發(fā)中可參考各類開發(fā)工具優(yōu)缺點(diǎn),根據(jù)實(shí)際情況擇優(yōu)選取。各種開發(fā)工具性能與特點(diǎn)比較如表一所示。

  綜上所述,在大型專業(yè)且對(duì)性能、速度要求較高的應(yīng)用程序中,Object ARX 應(yīng)用程序以其可讀性好、對(duì)AutoCAD 具有較好的控制能力以及系統(tǒng)智能性等優(yōu)勢(shì),是AutoCAD 二次開發(fā)過程中的首要選擇。同時(shí),隨著開發(fā)平臺(tái)的不斷完善,.net 開發(fā)平臺(tái)在將來的AutoCAD 二次開發(fā)中具有廣泛的應(yīng)用前景。