CAD.NET二次开发过程中的记录——关于扩展数据

一、创建对象扩展字典

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、销毁事务

CAD.NET二次开发过程中的记录——关于扩展数据

上一篇:Java 多线程


下一篇:SpringIOC&AOP