autocad二次開發

autocad二次開發

AutoCAD(Auto Computer Aided Design)是美國Autodesk公司研製開發的一款計算機輔助設計軟體,它不是一款簡單的繪圖工具,而是一個複雜的計算機輔助設計系統。我們可以根據他靈活的開放性對其進行二次開發定製,讓它更加適用於某一具體的設計領域。

基本介紹

  • 中文名:AutoCAD 二次開發
  • 外文名:AutoCAD Development System
  • 目的:提高效率建立適合本行業的平台
  • ADS:已經淘汰的一種開發AutoCAD環境
  • AutoLISP: 語言的優點是語法規則簡單
  • VisualLISP:引入面向對象的LISP開發環境
為什麼要對AutoCAD進行二次開發,怎樣對AutoCAD進行二次開發,AutoLISP和Visual LISP,ADS、ARX和ObjectARX,利用微軟的ActiveX技術,利用ObjectARX.NET進行開發,AutoCAD二次開發各編程接口的比較及選用,
從1986年發布AutoLISP以來到現在的三十餘年來,Autodesk公司推出了AutoLISP、ADS、VBA、ARX、ObjectARX、VisualLISP、ObjectARX.NET、JavaScript等開發方式。本章就是對上述開發方式進行討論分析從而找到高效開發AutoCAD的一種方式。

為什麼要對AutoCAD進行二次開發

AutoCAD是目前在Windows和MAC系統中套用最為廣泛、使用人數最多的CAD軟體。但它只給我們提供了基礎的CAD功能,如果我們想完成具體項目設計,就必須根據數據一筆筆繪製出圖形,這樣一旦在設計完成之後,要更改局部圖形則需要重複原來的全部內容。造成了大量工作量的浪費。
如果使用AutoCAD的開發系統,我們就可以將以上的過程用程式編制出來,在需要設計時,只需一個命令就可以運行這個程式,自動完成繪圖過程。顯而易見,這不僅大大提高了設計效率,而且,還可以通過定製來完成某些專業化的模組,甚至大型設計軟體,比如測繪行業的南方CASS軟體、建築行業的天正CAD軟體等均是用AutoCAD開發系統實現的。
因此,要想讓AutoCAD真正使用於某一具體領域,或讓其經常完成一些重複性的工作,則必須利用AutoCAD的開發系統對其進行二次開發.

怎樣對AutoCAD進行二次開發

從AutoCAD 2.18開始推出AutoLISP開始到現在,我們所能使用的開發工具主要有:AutoLISP、VisualLISP、VBA、COM外部接口、ObjectARX、ObjectARX.NET等開發方式供用戶選擇。下面開始對上述開發方式進行簡要介紹:

AutoLISP和Visual LISP

AutoLISP是進行對AutoCAD二次開發最早的API,它是人工智慧語言LISP的一個分支.主要用來自動完成重複性任務,進行客戶化開發和編制AutoCAD選單以及通過簡單機制為AutoCAD擴充命令,能夠有機的和AutoCAD結合在一起,它語法簡單容易上手,到目前仍有很多的活躍開發用戶。但是由於它是解釋型API而不是面向對象的程式語言,使它的效率低下,由於執行的是原始碼檔案所以導致保密性能不高很難用它開發大型的應用程式。
在AutoCAD R14.01中,Autodesk公司首次提供了一種新的LISP編程工具:Visual LISP,它是一種面向對象的開發環境,是AutoLISP的擴展和延伸。
在AutoCAD2000中,Visual LISP被集成到了AutoCAD環境之中。Visual LISP是一種半編譯的API。由於可以被編譯所以大大提高了運行效率和安全性。同時它又與AutoLISP完全兼容,又提供了AutoLISP的所有功能,同時它又能夠訪問AutoCAD的多文檔環境,以及對COM/ActiveX技術的支持和反應器等。VisualLISP
IDE同時提供了完整的編輯環境使得用戶可以對代碼進行調試跟蹤、源碼語法檢查、括弧匹配、函式提示等工具,方便創建和調試LISP程式。由於VLISP集成於AutoCAD內部,而且隨AutoCAD升級而升級所以兼容性比較好,這也是LISP深受廣大編程愛好者使用的原因。
但在進行大數據的計算處理方面,Visual LISP不能很好的勝任這項任務,這使得開發大型數據運算的程式仍有一定困難。

ADS、ARX和ObjectARX

ADS(AutoCAD Development System)是Autodesk公司最早在AutoCAD R11中提供的C語言編程環境。ADS除可使用標準C的函式外,又增加了一組專用於對AutoCAD進行操作的函式。由於ADS程式具有C語言的一切優點,因而它曾是開發AutoCAD R11、AutoCAD R12應用程式的主要工具。用C寫就的ADS程式,可在所有支持AutoCAD平台上進行原始碼移植。只需使用普通的C語言編譯器就可以編譯生成ADS模組,與ADS庫和標準C庫連結後生成執行檔,裝入AutoCAD後即可運行。但是ADS和AutoLISP一樣,內在結構不是面向對象的,用AutoLISP解釋器載入和調用,利用IPC與AutoCAD通訊。
ARX(AutoCAD Runtime eXtension)是在ADS基礎上發展起來的一種面向對象的C語言編程環境。由ADS到ARX的變遷就像C到C++的轉變。ARX與老式的ADS及AutoLISP的最大差異在於ARX應用程式是動態程式庫,共享AutoCAD地址空間,可以對AutoCAD進行直接函式調用,避免了IPC的系統開銷和由此引起的性
能下降。因此那些頻繁與AutoCAD通訊的應用程式在ARX環境下的運行效率明顯優於老式ADS或AutoLISP環境。
ARX最早是在AutoCAD R13中提供的,但在AutoCAD R14中,ARX就被ObjectARX所代替。同時原來的ADS庫函式全部被包含在ObjectARX中,將ADS函式合為單一的庫就形成了ADSRX。ADSRX庫已納入到AutoCAD的總體結構中,因此它與其他ObjectARX庫一樣,能共享AutoCAD地址空間。
到了新世紀,傳統意義上的ADS開發環境的概念已經不復存在,且ADSRX已成為了ObjectARX的一個子集,因此,ObjectARX是包含了ADS、ARX和ADSRX的一種綜合的C/C++開發環境。ObjectARX的最大特點是引入了面向對象的編程機制,用戶可以根據規則定製實體也是ObjectARX的一大亮點。

利用微軟的ActiveX技術

自AutoCAD R14起,提供了ActiveX Automation形式的API。ActiveX技術可將各種二進制應用程式組件集成一體。它可採用多種編程方式例如:VBA構造一種或多種與應用程式獨立的宏編程。提供Automation服務的軟體組件通過標準接口能夠對外開放它的特定功能。
正是由於AutoCAD擁有ActiveX接口,因此,用戶可以容易的用各種AciveX程式語言來定製開發AutoCAD。
AutoCAD包含的VBA能在進程內訪問AutoCAD的對象模型。亦可以通過獨立
的VB進行編程,但是VB與ActiveX的接口需要通過IPC驅動AutoCAD,所以作為ActiveX控制項的VBA比VB具有明顯的性能優勢。
特別要強調的是,ActiveX與AutoCAD互動操作很慢,若需要在外部程式中一邊運算一邊互動操作的重複疊代,將耗費大量時間,如同當機
值得注意的是,從AutoCAD 2010版本開始,VBA不在隨AutoCAD一起安裝。如果想要在機器中運行VBA程式必須登錄下面的網址進行下載方可運行。

利用ObjectARX.NET進行開發

在AutoCAD 2005 版本中Autodesk公司推出了用.NET開發AutoCAD的編程接口。它的實質是通過Managed C++/CLR技術對VC++的ObjectARX進行封裝。到目前的AutoCAD 2015十年來Autodesk公司已經完成對大部分ObjectARX編程接口的封裝。這種編程方式難度適中,能夠訪問大部分的編程接口(除了自定義實體);但是,由於AutoCAD的.NET接口是在不斷的完善過程中導致了在低版本上不能夠使用新增的功能。

AutoCAD二次開發各編程接口的比較及選用

比較各種開發AutoCAD的編程接口,需要從以下幾個方面進行考慮:
1. 速度:直接與AutoCAD通訊的API比利用IPC進行通訊的API在速度方面要快。編譯型的API比解釋型的API速度要快。因此,ObjectARX的速度最快,Com接口開發的外部程式速度最慢。
2. 穩定性:運行穩定性反映出因程式可能出現的嚴重錯誤所導致的危險。採用LISP開發的程式一旦失敗或崩潰,並不危害AutoCAD自身進程;而由於ObjectARX應用程式共享AutoCAD的地址空間,所以其一旦運行失敗,AutoCAD進程隨之崩潰。
3. 性能:ObjectARX的應用程式能在運行期間實時擴展AutoCAD,共享AutoCAD地址空間,甚至為所欲為,因此性能無比強大,以至於AutoCAD自身的許多功能模組都是由ObjectARX進行製作。相反,解釋型API如AutoLISP僅被限用於使用靜態的AutoCAD命令集提供結構化函式館
4. 技術難度:AutoLISP和VBA均是解釋型語言,方便易學,開發周期短。許多程式設計師或一些技術人員都在使用它們。相比之下ObjectARX依賴於C++語言,它必須經過嚴格控制的編譯、連結才能生成應用程式。這就需要編程人員需要積累經驗,這樣才能去發現問題從而解決問題。
5. 保密性:編譯型程式要比解釋型保密性要好,保護了開發人員的著作權,解釋型語言往往保密性能不高。導致用戶誤操作源碼造成不應有的錯誤。
另外:雖然.NET開發出來的DLL檔案是編譯後的程式,但是由於其程式可以反編譯回源碼造成了代碼的保密性差,也是不容忽視的問題。
相比之下,如果以前已熟悉使用LISP語言的朋友,則可選用VisualLISP。
如果用戶只想利用開發一些簡單的周期性短的應用程式,則可以依個人愛好和經驗選擇Visual Basic和VisualLISP。若用戶有較好的C++基礎和AutoLISP函式基礎,同時又要開發速度和性能要求都很高的應用程式或大型CAD套用軟體,則要使用ObjectARX。

熱門詞條

聯絡我們