一、创建对象扩展字典
1、开启事务,读模式打开对象,判断对象是否存在扩展字典(DBObject.ExtensionDictionary == ObjectId.Null)
2、升级为写权限,创建扩展字典(DBObject.CreateExtensionDictionary())
3、获取对象扩展字典,并以读模式打开字典(DBObject.ExtensionDictionary .GetObject())
4、设置扩展字典的扩展记录,记录数据。需要判断字典中是否存在当前键的数据
if (DBDictionary.Contains(key))
写模式获取扩展记录 Xrecord = ((ObjectId)DBDictionary[key]).GetObject()
else
升级字典权限为写模式,设置字典的键值对(DBDictionary..SetAt(key, Xrecord)),(字典的值有Xrecord或DataTable)
将新建的扩展记录添加到事务(tr.AddNewlyCreatedDBObject(Xrecord, true))
5、设置扩展记录的数据(Xrecord.Data = ResultBuffer)
6、扩展记录的数据ResultBuffer中接受的是 TypedValue数组,TypedValue示例: new TypedValue((int)DxfCode.ExtendedDataAsciiString, "这是我的名字")
7、提交事务
二、获取对象扩展字典的扩展记录
1、Using开启事务,读模式打开对象,判断对象是否存在扩展字典(DBObject.ExtensionDictionary == ObjectId.Null)
2、获取对象扩展字典,并以读模式打开字典(DBObject.ExtensionDictionary .GetObject())
3、获取扩展字典中的扩展记录数据。需要判断字典中是否存在当前键的数据,不存在就返回(DBDictionary.Contains(key))
4、获取字典对应的键的扩展记录ID((ObjectId)DBDictionary[key])),判断扩展记录的类型(id.ObjectClass != RXObject.GetClass(typeof(Xrecord)))
5、以读模式打开扩展记录(ObjectId.GetObject())
6、扩展记录中遍历获取数据(foreach (TypedValue tv in Xrecord.Data.AsArray()))
7、销毁事务