CAD二開 擴充套件資料XData

2022-02-09 05:18:46 字數 3532 閱讀 5972

一.簡述

cad資料庫物件可以靈活新增一定數量的自定義資料,供開發者使用,這些資料由開發者自己進行解釋 ,cad不管其含義,但要遵循一定的組碼規則,這些資料被稱為擴充套件資料xdata。擴充套件資料以吸附物的形式吸附在實體上。

1.可以通過實體dbobject類及其派生類的xdata屬性獲取或設定擴充套件資料,實體的擴充套件資料由應用程式建立。

2.實體的擴充套件資料可以是一組或多組,每一組都以乙個互不相同的註冊應用程式名開頭。

簡而蓋之:

xdata資料形式類似字典dictionary,但是此字典的key有乙個,value可以是多個(一組或多組),這裡的key必須按照dxfcode組碼規則來,value也必須根據選定的組碼選用約定好的資料形式

dxf 組碼值 

擴充套件資料內容

1000~1009

字串 (最多不超過 255 個字元)

1001 

xdata 的應用程式名

1002 

xdata 的控制字串

圖層名二進位制資料

資料庫物件控制代碼

1010~1059 

浮點數1010,1020,1030 

三維點(x, y , z)

1011,1021,1031 

三維空間位置

1012,1022,1032 

三維空間距離

1013,1023,1033 

三維空間方向

1040 

xdata 中的浮點數

1041 

xdata 中的距離值

xdata 中的比例係數

1060~1070 

16 位整數

1071 

32 位整數

二.步驟

1.註冊應用程式

什麼是應用程式---->說白了就相當於你擴充套件資料的乙個分類,擴充套件資料前,必須明確你擴充套件的資料屬於哪乙個應用程式。

2.註冊應用程式

3.資料對

結果快取即

autodesk.autocad.databaseservices.resultbuffer 型別,使用

resultbuffer

物件時需要提供乙個資料對,每個資料對包含乙個資料型別描述和乙個值,這些資料對

autodesk.autocad.databaseservices.typedvalue

類的例項。

typedvalue.typecode 屬性是乙個

16位整型資料,它指明

typedvalue.value

屬性的資料型別,可接受的

typecode

值取決於

resultbuffer

例項的使用範圍。

例如,適用於擴充套件記錄定義的

typecode

值就不適合於

xdata

。而autodesk.autocad.databaseservices.dxfcode

列舉型別定義的碼值則描述了

resultbuffer

可能的資料型別。

typedvalue.value

屬性是乙個

system.object

的例項,它可以包含任何型別的資料;但是,

value

的資料必須符合由

typecode

指明的型別。

建立 resultbuffer 方法有兩種:

1.一種是使用建構函式建立,即在宣告 resultbuffer 時將乙個

typedvalue

作用引數傳給

resultbuffer

:2.另一種是使用 resultbuffer.add() 方法來新增

typedvalue

,可以新增多個

typedvalue

,但總資料大小不能超過

128k

:resultbuffer resbuf = new resultbuffer();

"));

注意// resbuf 必須包含 1001 對應的值

就是應用程式名稱

resultbuffer  resbuf = new resultbuffer(new typedvalue((int)dxfcode.text, "我的擴充套件資料

"));

但是這裡雖然是用等號賦值的,但是它並不一定會覆蓋舊的擴充套件資料,乙個實體,只有乙個xdata屬性,但是裡面可以記錄多個不同應用程式名的擴充套件資料。

每次用「=」給實體的xdata賦值時,如果xdata裡還沒有這個應用程式的擴充套件資料,那麼新賦的這些值,會被新增到原有的xdata結尾去。

三.**

通用**:

///

///給指定的實體增加擴充套件資料 根據 dbobject

/// ///

db ///

ent等

///擴充套件資料名

///擴充套件資料

public

static

void setxdata(database db, dbobject obj, string}}

view code

///

///註冊並新增擴充套件資料名

/// ///

public

static

}

view code

///

///得到擴充套件資料

/// ///

db ///

實體id

///擴充套件資料名

///擴充套件資料

///true,false

public

static

typedvalue tv)

else}}

}

view code

四.總結

1.每一條擴充套件資料都必須以應用程式名開頭。 

2. xdata資料形式類似字典dictionary,但是此字典的key有乙個,value可以是多個(一組或多組),這裡的key必須按照dxfcode組碼規則來,value也必須根據選定的組碼選用約定好的資料形式。

注意:在專案開發中,cad程式檔案有可能被防毒軟體誤殺掉擴充套件資料相關檔案,建議少用xdata,可以用xrecord,其次xdata資料的形式約束和長度約束也不是很便利。

本人辛苦總結的文章最近被**原封不動的抄襲,請問你的良心何在,至少也要說一聲**吧,本人保留法律追究權利。

如果要**本人文章,請標註**字眼,尊重原創。

CAD二開 屬性塊的插入

一.概念 塊定義與塊參照兩個概念 塊定義類似於模具,而塊參照類似於模具澆築出來的模型,在圖形中只需用塊定義來儲存塊的實際幾何組成,而僅用插入點和比例因子來儲存塊定義,因為塊參照的幾何形狀與快參照完全一樣,僅大小不同,好處 不需要儲存塊參照中的實體,減小了圖形檔案 只需要修改塊定義,塊參照會自動更新,...

Revit二開 Schemachema擴充套件資料

一.什麼是schema 二.schema架構 建立revit擴充套件資料第一步是建立schema 類似建立架構設計,設計schema儲存結構,類似設計db 資料表結構 第二步是將擴充套件資料放入entity,最終儲存的位置在element。三.schemamaager public class sc...

cad二開輸出實體id CAD建模之布林運算

安裝解除安裝 異常 退出 檔案及輸入輸出 基本操作技巧 設定及相關問題 介面和顯示 快捷鍵 檢視設定和調整 圖層管理 顏色 線型 字型 文字樣式和文字輸入 標註 引線和標註樣式 座標系 座標輸入定位 物件捕捉 選擇及組 二維繪圖 多段線 圖塊 屬性塊 動態塊 填充 複製貼上 三維建模 圖形編輯和修改...