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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章