一.簡述
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結尾去。
三.**
通用**:
///view code///給指定的實體增加擴充套件資料 根據 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}}
}
四.總結
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建模之布林運算
安裝解除安裝 異常 退出 檔案及輸入輸出 基本操作技巧 設定及相關問題 介面和顯示 快捷鍵 檢視設定和調整 圖層管理 顏色 線型 字型 文字樣式和文字輸入 標註 引線和標註樣式 座標系 座標輸入定位 物件捕捉 選擇及組 二維繪圖 多段線 圖塊 屬性塊 動態塊 填充 複製貼上 三維建模 圖形編輯和修改...