![]() |
插入块时此名称的块已经存在的问题?
插入块时此名称的块已经存在的问题?
www.dimcax.com 插入块时此名称的块已经存在的问题? 当这个块名称存在,用wblockcloneobjects进行替换,出现ewasopenforwrite错误, 奇怪的事这些代码以前是好用的,现在就出现这个问题了。请高手指点。 public static void block(ienumerable<blocktablerecord> blocklist,string info) { document doc = application.documentmanager.mdiactivedocument; using (documentlock lockdoc = doc.lockdocument()) { bool cover = false; editor ed = doc.editor; database db = hostapplicationservices.workingdatabase; database tempdb; tempdb = db.wblock(); objectidcollection blockids = new objectidcollection(); objectid blocktableid = db.blocktableid; foreach (blocktablerecord btr in blocklist) { transactionmanager manager = db.transactionmanager; using (transaction trans = manager.starttransaction()) { blocktable blocktable = (blocktable) trans.getobject(blocktableid, openmode.forwrite, false); string kapstr = btr.name; if (!blocktable.has(kapstr)) { if (!btr.isanonymous && !btr.islayout) { blocktable.add(btr); trans.addnewlycreateddbobject(btr, true); } } else { if (!cover) { string msg = string.format("kap={0}的块文件存在,是否覆盖?", kapstr); dialogresult dr = messagebox.show(msg, "选择", messageboxbuttons.yesnocancel, messageboxicon.question); if (dr == dialogresult.yes) { cover = false; if (!btr.isanonymous && !btr.islayout) { objectid objectid = tempdb.adddbobject(btr); blockids.add(objectid); } } else if (dr == dialogresult.cancel) { cover = true; if (!btr.isanonymous && !btr.islayout) { objectid objectid = tempdb.adddbobject(btr); blockids.add(objectid); } } } } //trans.clone(); //blocktable.dispose(); trans.commit(); } } try { idmapping mapping = new idmapping(); tempdb.wblockcloneobjects(blockids, db.blocktableid, mapping, duplicaterecordcloning.replace, false); }catch(exception e) { ed.writemessage(e.message); } blockids.clear(); ed.writemessage(info); ed.regen(); } } |
| 所有的时间均为北京时间。 现在的时间是 12:37 PM. |