本文基於autocad 2006新推出的.net api為工具,介紹了在.net平台下對autocad進行二次開發的技術,並與目前常用的vba、objectarx作了對比。同時討論了如何彌補.net api某些不足的功能。
當前autocad的二次開發工具主要有:visuallisp、vba和objectarx等。其中,visuallisp與vba較為簡單,特別是 vba,使用方便且開發速度較快,但其功能相比objectarx有所不足,尤其是對物件導向的功能支援不好。而objectarx基於vc平台,在 c++的支援下,其功能非常強大,可以很好地運用各種物件導向技術,但其缺點是發開速度比較慢,同時對開發人員的能力要求較高。
.net是微軟新推出的開發平台,具有眾多優點。基於.net平台對autocad進行二次開發,可充分利用.net的各種優勢,在保證功能強大的前提下大大提高開發速度。
一、基於.net的開發
namespace arxexample
public void terminate() ……}
}同時,為加快載入速度,可在myarx.cs的檔案頭加入以下語句:
[assembly: commandclass (typeof (arxexample.myarx) ) ]
(5).net api與com互動操作
在目前的.net api中,其功能與傳統的objectarx相比有所不及,有相當的objectarx函式目前還沒有封裝到.net api中,如getpoint等。但可以通過com方式使用activex來彌補.net api的不足。
增加了com引用後,程式就可以使用許多vba中的功能了。以autocad activex中的事件為例,以下**可以為當前工作空間中所有的圖元新增modified事件:
blocktable bt = (blocktable)db.blocktableid.open(openmode.forread);
blocktablerecord btr = (blocktablerecord)bt[blocktablerecord.modelspace].open(openmode.forwrite);
try
}finally
其中事件響應函式obj_modified的表示如下所示:
public static void obj_modified(acadobject obj)
用C 進行AutoCAD的二次開發
在上一次的例子中我是通過引用autocad 2004 type library來進行c 與autocad之間的通訊,但這種方法存在兩個致命的缺點。第乙個缺點是每次除錯程式的時候c 都要重新啟動autocad,如果除錯的次數非常多 比如跟蹤錯誤然後除錯 那麼程式設計的效率就很低,因為啟動一次cad還是...
利用C 進行AutoCAD的二次開發
利用c sharp 進行autocad 的二次開發。在這一講中,主要介紹上一講例子中存在的問題。在上一次的例子中我是通過引用 autocad 2004 type library 來進行c sharp 與autocad 之間的通訊,但這種方法存在兩個致命的缺點。第乙個缺點是每次除錯程式的時候 c sh...
AutoCAD二次開發的好處
autocad二次開發的好處 首先,autocad自身的功能就很強大,對於一般的平面製圖 比如建築 結構方面 不使用任何第三方的軟體,僅憑 autocad 自帶的基本命令,就可以完成。但如果這樣的話,cad製圖就是一件很枯燥乏味 效率低下的事情,比手工製圖強不到 去。autocad 的高明之處就在於...