1. 程式人生 > >基於.NET的CAD二次開發學習筆記二:AutoCAD .NET中的物件

基於.NET的CAD二次開發學習筆記二:AutoCAD .NET中的物件

1、CAD物件

一個CAD檔案(DWG檔案)即對應一個數據庫,資料庫中的所有組成部分,看的見(包括點、多段線、文字、圓等)和看不見(圖層、線型、顏色等)的都是物件,資料庫本身也是一個物件。

  • 直線、圓弧、文字和標註等圖形物件都是物件。
  • 線型與標註樣式等樣式設定都是物件。
  • 圖層、編組和塊等組織結構都是物件。
  • 檢視與視口等圖形顯示都是物件。
  • 甚至圖形和 AutoCAD 應用程式本身也是物件。

2、CAD中的容器

對於任何一個DWG檔案,都會建立下列容器對像:九個固定的符號表(如下)和有名對像字典(包含Group字典和Mline樣式字典)。CAD中的所有物件都放在這些容器物件中,符號表及有名物件字典都具有同樣的功能,即組織和管理CAD資料庫中的物件。即它們含有實體物件,可以通過文字字串作為關鍵字對物件實體進行查詢,並向這些容器新增記錄(記錄即物件),修改記錄。

3、符號表與字典的不同

符號表如下所示有9種,每種符號表只能儲存特定型別的物件(如塊表只能儲存塊表記錄,層表只能儲存層表記錄),而字典則是一種通用容器,可儲存任何型別的物件。(一般多是通過符號表操作物件)

9種符號表:

1)塊表(BlockTabLe)

2)尺寸標註樣式表(DimStyleTable)

3)層表(LayerTable)

4)線型表(LinetypeTable)

5)應用程式登錄檔(RegAppTable)

6)文字樣式表(TextStyleTable)

7)使用者座標系表(UCSTable)

8)視口表(ViewportTable)

9)視圖表(ViewTable)

4、AutoCAD .NET API中的物件層次

1)Application物件層次

Application 物件是 AutoCAD .NET API 物件模型的根物件。通過 Application 物件,使用者可以訪問主視窗以及任何開啟的圖形。一旦使用者獲得了圖形,就可以訪問圖形中的物件。

例如,Application 物件具有 DocumentManager 特性,該特性可以返回 DocumentManager 物件。該物件提供對AutoCAD中當前圖形的訪問並允許使用者並允許使用者建立、儲存和開啟圖形檔案。通過 Application 物件提供的其它特性可以專用資料,例如資訊中心(InfoCenter)、主視窗(main window)和狀態列(status bar)。MainWindow 特性允許使用者訪問應用程式的名稱、 大小、位置和可見性。

雖然 Application 物件的特性允許訪問 AutoCAD .NET API 的大多數物件,也有一些 AutoCAD ActiveX® Automation 物件的引用。這些特性包括 application 物件的 COM 版本(AcadApplication),選單欄(MenuBar),載入的選單組 (MenuGroups)和引數選項 (Preferences)。

 

2) Document的物件層次

Document 物件實際上就是 AutoCAD 圖形,它是 DocumentCollection 物件的一部分,並提供訪問與 Document 物件相關的 Database 物件。 Database 物件包括所有的圖形和大部分非圖形的 AutoCAD 物件。

連同 Database 物件一起, Document 物件提供訪問圖形狀態列(StatusBar),document 物件被開啟的視窗(Window),Editor (Editor) 和事務管理器(TransactionManager)的物件。Editor 提供使用者以輸入形式獲取的點、輸入字串或數字值的功能。

事務管理器物件用於訪問將多個 database 物件下的單個操作當作一個 transaction 物件。事務可以被巢狀,當用戶完成事務時,可以提交或放棄已做的改變。

 

3)DataBase物件層次

Database 物件包括所有的圖形和大部分非圖形的 AutoCAD 物件。 被包含在 Database 中的一些物件有實體,符號表,命名字典。實體在 Database 中表示圖紙內部的圖形物件。直線、圓、圓弧、文字、填充和多段線都是實體的一個例子。使用者可以在螢幕上看到一個實體並可以操作它。

使用者通過 Document 物件的 Database 成員屬性可以訪問當前文件的 Database 物件。

Application.DocumentManager.MdiActiveDocument.Database

符號表和字典

符號表和字典物件提供對非圖形物件的訪問(塊、圖層、線型、佈局等等)。在AutoCAD中的每一個圖形都包含9個固定的符號表,然而圖形中的字典的數量是可以根據功能和應用程式的使用型別來改變的。新的符號表不能被新增到 Database 中去。

例如,層表 (LayerTable)就是符號表,它包含層表記錄,塊表也是符號表,它包含塊表記錄。所有的圖形實體 (直線、圓、圓弧等等) 都是屬於一個塊表記錄。預設情況下,每一個圖形都為模型空間和圖紙空間預定義了塊表記錄。每一個圖紙空間佈局都有它自己的塊表記錄。

字典是一個可以包含任何 AutoCAD 物件或 Xrecord 物件的容器。

 

4)圖形物件

也稱為圖元,是組成圖形的可見物件(例如直線、圓、光柵影象等)。新增圖形物件到圖形中是通過正確的塊表記錄引用,然後使用 AppendEntity 方法將一個新物件新增到圖形中來完成的。

要修改或查詢這些物件,請從正確的塊表記錄獲得物件引用,然後使用物件本身的方法或特性。每一個圖形物件都擁有允許應用程式執行大部分 AutoCAD 編輯命令的方法,例如複製、刪除、移動、映象等。

這些物件還提供了一些方法,用來設定和檢索物件的擴充套件資料(xdata),亮顯和更新物件,以及從另外的圖元設定屬性。大多數圖形物件具有諸如 LayerId、LinetypeId、Color 和 Handle 之類的典型特性。每個物件也具有一些特有的特性,例如 Center、StartPoint、Radius 和 FitTolerance。

非圖形物件是指屬於圖形的一部分但不可見的(提示性的)物件,例如 Layers、Linetypes、DimStyles、TableStyle 等。若要建立新的符號表記錄,請使用表所有者的 Add 方法或使用 SetAt 方法新增一個字典到命令物件字典中。要修改或查詢這些物件,請使用物件本身的方法或特性。每一個非圖形物件都有用於特定目的的方法和特性,都有設定和檢索擴充套件資料以及刪除自己的方法。

原文地址:http://www.cnblogs.com/rliverpool/p/3949606.html