1. 程式人生 > 其它 >基於C#的AutoCad二次開發--第一章--環境搭建及幾種二開模式

基於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~