几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » ObjectARX(VB.NET/C#)
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


回复
 
主题工具 搜索本主题 显示模式
旧 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自动化论坛(仅游客可见)
回复


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 08:05 PM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多