![]() |
实体的扩展数据xdata怎么删除啊?(已解决) - 精华帖集合
实体的扩展数据xdata怎么删除啊?(已解决) - 精华帖集合
www.dimcax.com 实体的扩展数据xdata怎么删除啊?(已解决) 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(); } 复制代码 没有用啊,扩展数据增多了,并没有覆盖原来的。 [ 覆盖扩展数据 104 105 public void clearxdatatest() 106 { 107 //get selectimplied 108 document doc = autodesk.autocad.applicationservices.application.documentmanager.mdiactivedocument; 109 promptselectionresult res = doc.editor.selectimplied(); 110 111 //if err,show alertdialog 112 if (res.status != promptstatus.ok) 113 { 114 autodesk.autocad.applicationservices.application.showalertdialog("err: failure actions, get nothing!"); 115 return; 116 } 117 118 //show the count of selectedimplied 119 string strmsg = string.format("selectedcount={0}\nthere are:", res.value.count); 120 121 //traversal entitys 122 foreach (selectedobject obj in res.value) 123 { 124 //show the extended data 125 strmsg = string.format("\n\n{0}name={1};\nid={2};", strmsg, obj.gettype().tostring(), obj.objectid.tostring()); 126 127 using (transaction ts = doc.database.transactionmanager.starttransaction()) 128 { 129 130 //get objectid 131 dbobject dbobj = doc.database.transactionmanager.getobject(obj.objectid, openmode.forwrite, false); 132 133 //debug:dbobj 134 system.diagnostics.debug.assert(dbobj != null); 135 136 //a new list 137 resultbuffer xdatares = new resultbuffer(); 138 //set list is null except application name 139 xdatares.add(new typedvalue(convert.toint16(dxfcode.extendeddataregappname), "myappname"));//application name 140 xdatares.add(new typedvalue(convert.toint16(dxfcode.extendeddataasciistring), ""));//xdata is null 141 142 //set extended data 143 dbobj.xdata = xdatares; 144 145 //judge extended data 146 if (dbobj.xdata == null) 147 { 148 //success: clear completed!" 149 strmsg = string.format("{0}\nxdata={1}\n", strmsg, "null! clear completed!"); 150 // 151 //to remove an appname (and its xdata) from an object, just use a resbuf with restype == 1001, 152 //resval == and no data resbufs following it (that is, either its rbnext == null or the next resbuf is another 1001) 153 } 154 else 155 { 156 //err: loser 157 typedvalue[] xdatas = dbobj.xdata.asarray(); 158 foreach (typedvalue xdata in xdatas) 159 { 160 strmsg = string.format("{0}\nxdata={1}\n", strmsg, xdata.value); 161 } 162 } 163 ts.commit(); 164 } 165 autodesk.autocad.applicationservices.application.showalertdialog(strmsg); 166 } 167 } 复制代码 [ impossible is nothing 程序里有昨天小米说的一句话,贴上来希望对大家有所启示! impossible is nothing 没法删只能替换 书山有路勤为径,学海无涯苦作舟! 是版本问题吗?cad6以上有方法吗?高版本的我没有尝试过~ impossible is nothing 哈哈,终于解决问题了。整理下马上就把源码贴出来了。再次多谢各位的指导! |
所有的时间均为北京时间。 现在的时间是 10:30 AM. |