天天看點

CAD容器對象

容器對象在圖形檔案初始化時,就已經存在了。容器對象包括符号表、字典、組和擴充記錄。下面介紹如何向符号表、字典群組中添加實體,怎樣使用周遊來查詢容器的内容,以及怎樣建立和使用自己的字典和擴充記錄來管理應用程式資料和對象。

符号表

符号表具有這樣的功能:它可以包含資料庫對象,這些資料庫對象能夠通過一個字元串關鍵字來搜尋。使用者可以向這些容器中添加實體,也可以使用周遊來浏覽容器以查找所需的内容。

符号表和字典的異同

1、符号表和字典在本質上有相同的功能。字典為使用者提供了和符号表類似的機制來儲存和恢複帶有相關關鍵字的對象。當建立一個新的圖形時,它就建立了一個命名對象字典,這個字典可以看作是圖形中實體對象的容器清單。使用者可以建立任意數量的對象并将它們添加到命名對象字典中。

2、符号表和字典的一個重要差別是符号表記錄不能由ObjectARX應用程式直接删除,而一個字典所包含的對象則可以直接被删除。

符号表介紹

1、在符号表記錄和字典中使用的名稱必須遵循以下規則:

(1)名稱可以有任意長度,但是在控件中使用者輸入的符号名不能超過255個字元。

(2)保留了使用名稱中的大小寫的權力,但是并沒有在比較中區分大小寫。

(3) 除了逗号、單引号、分号、和等号之外,名稱可以由任何Windows NT檔案名中可以使用的字元組成。資料庫中包含以下符号表:

類型 類名
塊表 McDbBlockTable; BLOCK
層表 McDbLayerTable: LAYER
文本樣式表 McDbTextStyleTable; STYLE
線型表 McDbLinetypeTable: LTYPE

2、每一個表都包含相應的 McDbSymbolTableRecord 類的子類。

3、每一個符号表都提供了一個getAt()函數來查找指定名稱的記錄。另外還有 has() 和 add() 函數,前者可以用來判斷一個記錄名是否已經包含在符号表中,後者用來向符号表中添加一個新記錄。

塊表

在資料庫中的實體通常屬于一個塊表記錄。預設情況下,塊表包含1個記錄: *MODEL_SPACE 。

層表

1、在預設情況下,層表中包含0層一個層。下面是一些常用的設定和查詢層特性資訊的函數:

2、當機和解凍:當一個層被當機時,該層的圖形将不能重新生成。

1

2

​void​

​​ ​

​McDbLayerTableRecord::setIsFrozen(Mdesk::Boolean);​

​Mdesk::Boolean McDbLayerTableRecord::isFrozen() ​

​​

​const​

​​

​;​

3、打開和關閉:當一個圖層被關閉時,該層的圖形将不再顯示。

1

2

​void​

​​ ​

​McDbLayerTableRecord::setIsOff(Mdesk::Boolean);​

​Mdesk::Boolean McDbLayerTableRecord::isOff() ​

​​

​const​

​​

​;​

4、鎖定和解鎖:在控件中,使用者不能修改在一個鎖定層上的實體,也不能在應用程式中以write()函數打開實體。

1

2

​void​

​​ ​

​McDbLayerTableRecord::setIsLocked(Mdesk::Boolean);​

​Mdesk::Boolean McDbLayerTableRecord::isLocked() ​

​​

​const​

​​

​;​

5、顔色:當一個實體的顔色被設定成BYLAYER時,可以通過setColor()函數來設定實體的顔色。

1

2

​void​

​​ ​

​McDbLayerTableRecord::setColor(​

​​

​const​

​​ ​

​AcCmColor &color);​

​AcCmColor McDbLayerTableRecord::color() ​

​​

​const​

​​

​;​

6、線型:當一個實體的線型是BYLAYER時,可以通過setLinetypeObjedtId()函數來設定實體的線型。

1

2

​void​

​​ ​

​McDbLayerTableRecord::setLinetypeObjectId(McDbObjectId);​

​McDbObjectId McDbLayerTableRecord::linetypeObjectId() ​

​​

​const​

​​

​;​

周遊器