查看单个帖子
旧 2009-04-20, 10:03 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】如何保存后台打开的dwg文件

如何保存后台打开的dwg文件
www.dimcax.com
如何保存后台打开的dwg文件
//存在问题,无法保存修改后的数据到db中 database curdb = hostapplicationservices.workingdatabase; database db = new database(); db.readdwgfile(filename, system.io.fileshare.readwrite, false, null); hostapplicationservices.workingdatabase = db; transaction tr = db.transactionmanager.starttransaction(); //开始事务处理 try { //存储sheet的图框大小 string xrecordname = "caicad_sheet_size"; typedvalue[] tvs = new typedvalue[] { new typedvalue((int16)(dxfcode.text),size) }; arx.db.addxrecord(arx.db.caicaddictionaryname, xrecordname, tvs, tr, db); db.projectname = "size"; db.useri1 = 1; tr.commit();//提交事务 } finally { tr.dispose(); } db.dispose(); hostapplicationservices.workingdatabase = curdb; 问题是程序运行正常,可是当我再次用readdwgfile()打开该文件,用arx.db.getxrecord(arx.db.caicaddictionaryname, xrecordname, tr, db)方法读取记录时,确始终提示我keynotfound,说明记录没有存到文件中。 arx.db.getxrecord()是我的一个函数,我还测试了db.projectname 和db.useri1 两个属性,发现这两个属性也无法保存。 我还发现在处理的文件是当前cad窗口打开的文件时,就不会出现这样的问题。 public static typedvalue[] getxrecord(string dicname, string xrecordname, transaction tr, database db) { dbdictionary nd = (dbdictionary)tr.getobject(db.namedobjectsdictionaryid, openmode.forread, false); try { objectid dicid = nd.getat(dicname); dbdictionary dd = (dbdictionary)tr.getobject(dicid, openmode.forread, false); objectid xrecid = dd.getat(xrecordname); xrecord xd = (xrecord)tr.getobject(xrecid, openmode.forread, false); resultbuffer rb = xd.data; typedvalue[] tvs = rb.asarray(); return tvs; } catch(system.exception ex) { arx.prompts.cmdlinemessage("\n" + ex.message); return null; } } public static objectid addxrecord(string dicname, string xrecordname, typedvalue[] tvs, transaction tr, database db) { objectid xrecid = objectid.null; objectid dicid; dbdictionary dd; try { dbdictionary nd = (dbdictionary)tr.getobject(db.namedobjectsdictionaryid, openmode.forwrite, false); try { dicid = nd.getat(dicname); } catch { dd = new dbdictionary(); dicid = nd.setat(dicname, dd); tr.addnewlycreateddbobject(dd, true);// } dd = (dbdictionary)tr.getobject(dicid, openmode.forwrite, false); resultbuffer rb = new resultbuffer(tvs); xrecord xr = new xrecord(); xr.data = rb; xrecid = dd.setat(xrecordname, xr); tr.addnewlycreateddbobject(xr, true); } catch (system.exception ex) { arx.prompts.errormessage(ex); } return xrecid; }
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)