实体的扩展数据xdata怎么删除啊?
(除了利用删除RegAppTable记录的方法之外)
当我给实体重新赋予xdata后,扩展数据只是增多了。
这时可以用两个应用程序名分别进行访问。

Code
BlockReference br = (BlockReference)tr.GetObject(id, OpenMode.ForWrite, false);
if (br.XData != null)
{
string regAppName = id.Handle.Value + "_XData";
TypedValue[] Values = br.XData.AsArray();
Values[0] = new TypedValue((int)DxfCode.ExtendedDataRegAppName, regAppName);
//注册新程序名
SymbolTable sTable = (SymbolTable)tr.GetObject(CurDataBase.RegAppTableId, OpenMode.ForWrite, false);
if (!sTable.Has(regAppName))
{
RegAppTableRecord ratr = new RegAppTableRecord();
ratr.Name = regAppName;
sTable.Add(ratr);
tr.AddNewlyCreatedDBObject(ratr, true);
}
br.UpgradeOpen();
// br.XData = null;//没有用的。
br.XData = new ResultBuffer(Values);
br.DowngradeOpen();
}
没有用啊,扩展数据增多了,并没有覆盖原来的。
搞不清,为什么给扩展数据重新赋值,xdata总是接着后面增加?
就向在执行ResultBuffer.add()一样。
解决方案
To remove an appName (and its xdata) from an object, just use a resbuf with restype == 1001, resval == and no data resbufs following it (that is, either its rbnext == NULL or the next resbuf is another 1001).