基於C#的AutoCad二次開發--第一章--環境搭建及幾種二開模式
Autocad的開發形式包括visual lisp、objectarx、vba、.Net等等,其中基於.Net平臺的C#語言學習曲線較為平緩,使用該語言進行AutoCad的二次開發效率較高。
本文主要記錄了使用C#進行AutoCad二次開發的環境搭建和幾種二次開發的模式。
學習資料:1. Autocad .Net開發指南(中文版),此為歐特克公司提供的官方文件;
2. AutoCad官網,在開發人員板塊可以查閱官方提供的各種類庫;
3. b站的AutoCad_C#二開視屏,連結如下:
https://www.bilibili.com/video/BV1x4411y79M?from=search&seid=11773567052653254338;
4. 百度,google......
軟體配置:Autocad2014 + objectarx2014 + AutoCAD_2014_dotnet_wizards + vs2013;
注:此配置不是唯一的,因為.NET框架可向下相容;
第一節:搭建環境
1.1 建立專案
在vs中建立一個類庫專案,適用於.dll和對話方塊應用程式的開發。
1.2 引用類庫
從objectarx2014中引入下圖所示類庫,並且對於所有類庫,右擊->屬性->複製到本地->false;
1.3 框架及目標平臺
做完上述操作,建議先不要動專案的框架及目標平臺(右擊->專案->應用程式or生成),如果編譯出問題,再調整這兩項,即注意:平臺要與Autocad相匹配:是x64 or x32;框架也要相匹配,看是否和當前Autocad版本相相容。
第二節:程式碼編寫
在正式寫程式碼之前,需要了解你想做哪種形式的Cad二次開發,如:.dll; Ribbon; 對話方塊應用程式等等。不同形式的開發,其程式碼編寫也有所不同。
2.1 載入動態連結庫(.dll)
這應該是較為常用的,且比較簡單快捷的一種開發形式。可以用其來編寫一些小的功能,類似於在Cad下方的編輯框中輸入一些命令(Command)。
具體開發如下:
在public class xxx下方編寫:
[Command("xxx")] //可以理解為:當寫完程式碼並載入至cad後,在編譯框鍵入命令xxx,從而執行操作。至於具體執行什麼操作,這要根據下面的xxx方法具體的演算法邏輯了。
public void xxx() //編寫期望cad具體執行的操作。
{
xxxxxx;
}
注:以上只是一個模板,具體可參照《Autocad .Net開發指南》上的例子。
2.2 對話方塊應用程式
本質上,這也是一個類庫專案,與2.1節類似,也是先編譯生成一個.dll格式的動態連結庫,然後再通過NETLOAD命令載入入Cad中,隨後鍵入xxx命令,執行操作。但是,與上述開發形式相比,其與使用者之間的互動模式更為友好。
一般地,當鍵入xxx命令後,cad會彈出一個對話方塊,通過點選按鈕的方式,讓cad執行具體操作。
具體開發如下:(注:僅為模板)
1. 建立一個類庫專案;
2. 新增窗體檔案,並在類庫中編寫類似如下的程式碼:
public class Class1 { [CommandMethod("DialogDemo")] public void DialogDemo() { Form1 f1 = new Form1(); //建立窗體例項 f1.ShowDialog(); //彈出對話方塊,注意與show的區別 } }
3. 為了實現:當點選按鈕,從而觸發事件這一操作,
需要編寫事件中命令cad所做的具體操作邏輯,這就需要單獨編寫一個或多個類,可以新增一個類檔案,將他們放在其中。
4.最後,為了點選按鈕後能夠觸發相應的事件,在事件處理器中需要新增類似如下的程式碼:
private void btnDrawToCad_Click(object sender, EventArgs e) { MyEntites m1 = new MyEntites((double)numericUpDown1.Value, (double)numericUpDown2.Value, (double)numericUpDown3.Value); //建立一個例項; datatool.AddEntity(m1.Ents); //將list作引數載入,將建立的圖形新增進模型空間塊表記錄中。 }
5. 綜合起來,在cad鍵入命令xxx後,彈出一個對話方塊,點選按鈕後,在cad中自動畫出了一個圖形。
ps: 隨著繼續學習深入,其他的一些開發模式也會陸續更新~ to be continue~