利用C#進行AutoCAD的二次開發(三)

來源:互聯網
上載者:User

這一講的主要內容是介紹AutoCAD物件模型,如果你對VBA開發AutoCAD瞭解的話,這部分內容應該是超簡單的。
對象是 AutoCAD ActiveX 介面的主要構造塊,每一個顯示的對象均精確代表一個 AutoCAD 組件。AutoCAD ActiveX 介面的主要對象有:
• 直線、圓弧、文字和標註等繪圖物件。
• 線型與標註樣式等樣式設定對象
• 圖層、編組和塊等組織圖對象
• 視圖與視口等圖形顯示對象。
• 圖形、AutoCAD 應用程式本身也是對象
所有對象的根對象是AutoCAD 應用程式本身,它用AcadApplication類來表示。獲得當前啟動並執行AcadApplication對象可以使用上一講中介紹的方法來得到。AcadApplication對象下有四個子物件構成,分別是:

AcadPreferences 對象,通過此對象可以訪問和設定“選項”對話方塊中的相關選項
AcadDocuments對象,它表示AutoCAD 圖形
AcadMenuBar 對象,它表示AutoCAD主功能表列 (注意不是AcadMenuBars,因為應用程式只有一個主功能表列)
AcadMenuGroups對象, 它表示AutoCAD 菜單和工具列
上面介紹了AutoCAD ActiveX 介面物件模型的大致組成,下面重點介紹AcadDocuments對象,因為大部分的編程都與它有關。首先大家看到它是複數的形式,因此它是當前開啟的AutoCAD所有圖形的集合,這種對象稱為集合對象(呵呵,好像在講廢話)。集合對象有一些比較重要的方法和特性。其中最主要的是:Count特性用於擷取集合中的對象個數(從零開始);Item 方法用於擷取集合中的任何對象。關於它們的用法我會在下面的例子中介紹。而 AcadDocuments的單數形式AcadDocument表示當前開啟的一個AutoCAD圖形。AcadDocument對象由以下幾個主要對象組成:
AcadModelSpace 集合和 AcadPaperSpace集合,提供對繪圖物件(直線、圓、等)的訪問
AcadLayers、AcadLinetypes 和 AcadTextStyles,則提供對非繪圖物件(圖層、線型、文本樣式等)的訪問
AcadPlot 對象提供對“列印”對話方塊中設定的訪問,並為應用過程提供了列印圖形的各種方法
AcadUtility 對象提供使用者輸入和轉換函式
繪圖物件的建立使用Add方法,比如要建立一個圓,就是用AddCircle方法,而非繪圖物件的建立使用Add方法。
下面通過一個簡單的例子來說明上面介紹的內容。這個例子是在AutoCAD中建立一個新的層,然後在該層中畫一個紅色的圓和一條綠色的直線。這是程式的原始碼:(請先把上一講中產生的interop.AutoCAD.dll 和 AutoCADExample.dll檔案包含在工程中)
using System;
using AcadExample;
using AutoCAD;

namespace CircleLine
{
///

/// Class1 的摘要說明。
///
class Class1
{
///

/// 應用程式的主進入點。
///
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此處添加代碼以啟動應用程式
//
using(AutoCADConnector connector=new AutoCADConnector()) //串連AutoCAD
{
AcadDocument aDocument=connector.Application.ActiveDocument;
//取得當前AutoCAD活動圖表形對象
double[] center=new Double[3]{20,20,0};//設定圓心
double radius=20;//設定圓的半徑
double[] startPoint=new Double[3]{0,0,0};//設定直線的起點
double[] endPoint=new Double[3]{40,40,0};//設定直線的終點
AcadLayer newLayer=aDocument.Layers.Add("CircleLine");
//建立一個名為CircleLine的新層
aDocument.ActiveLayer=newLayer;//把CircleLine層設定為當前層
AcadCircle circle=aDocument.ModelSpace.AddCircle(center,radius);//加入圓
AcadLine line=aDocument.ModelSpace.AddLine(startPoint,endPoint);//加入直線
circle.color=ACAD_COLOR.acRed;//把圓變為紅色
line.color=ACAD_COLOR.acGreen;//把直線變為綠色
connector.Application.Update();//更新顯示
for(int i=0;i Console.WriteLine("這是第{0}個對象:{1}",i+1,aDocument.ModelSpace.Item(i)); //遍曆當前圖形

}
Console.ReadLine();
}
}
}
好了,今天就到這裡。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.