明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 810|回复: 0

关于命名词典记录的修改问题

[复制链接]
发表于 2016-7-8 17:08 | 显示全部楼层 |阅读模式
我编子一个修改命名词典记录的函数,但文件中如有同名记录则无法保存,运行到db.TransactionManager.AddNewlyCreatedDBObject(authorRec, true)时就出错。
有大侠帮忙看看
代码:
       public ResultBuffer setDictList(string Dic1, string Xre1, ResultBuffer Real1)
        {
            Editor ed = MgdAcApplication.DocumentManager.MdiActiveDocument.Editor;
            Database db = HostApplicationServices.WorkingDatabase;
            ///Database db = HostApplicationServices.WorkingDatabase;
            ///Editor ed = MgdAcApplication.DocumentManager.MdiActiveDocument.Editor;
            ///ed.WriteMessage(Real1.ToString());
            using (Transaction trans = db.TransactionManager.StartTransaction())
            {
                //获取命名对象词典类(NOD)   
                DBDictionary NOD;
                try
                {
                    NOD = trans.GetObject(db.NamedObjectsDictionaryId, OpenMode.ForWrite) as DBDictionary;
                }
                catch
                {
                    return null;
                }
                // 声明一个新的词典对象
                DBDictionary copyrightDict;
                // 判断是否存在COPYRIGHT词典,没有则创建               
                try
                {
                    // 获取COPYRIGHT词典
                    copyrightDict = (DBDictionary)trans.GetObject(NOD.GetAt(Dic1), OpenMode.ForRead);
                }
                catch
                {
                    //在NOD下创建COPYRIGHT词典
                    copyrightDict = new DBDictionary();
                    NOD.SetAt(Dic1, copyrightDict);///产生新的有名词典
                    try
                    {
                        ///保存新的有名词典
                        db.TransactionManager.AddNewlyCreatedDBObject(copyrightDict, true);
                    }
                    catch
                    {
                        return null;
                    }
                }
                // 通过Xrecord和ResultBuffer添加扩展数据


                Xrecord authorRec;
                ///产生一个记录的对象
                try
                {
                    ///词典有无此记录的对象
                    authorRec = (Xrecord)trans.GetObject(copyrightDict.GetAt(Xre1), OpenMode.ForWrite);
                }
                catch
                {
                    authorRec = new Xrecord();
                }
                ed.WriteMessage("\n111");
                ///authorRec.Data = new ResultBuffer(new TypedValue((int)DxfCode.Real, Real1));


                ///ed.WriteMessage(Real1.ToString());
                authorRec.Data = Real1; ///把数据加入记录中
                ed.WriteMessage("\n222");
                copyrightDict.UpgradeOpen(); //扩展字典切换成写的状态。
                ed.WriteMessage("\n333");


                copyrightDict.SetAt(Xre1, authorRec);
                ed.WriteMessage("\n444\n");
                ///trans.AddNewlyCreatedDBObject(authorRec, true); //必须加,否则修改后无法保存。
                db.TransactionManager.AddNewlyCreatedDBObject(authorRec, true); //必须加,否则修改后无法保存。
                ed.WriteMessage("\n5555");


                copyrightDict.DowngradeOpen(); //为安全,扩展字典切换成读的状态。
                ed.WriteMessage("\n666");


                trans.Commit();
                return Real1;
            }
        }


您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-3-29 04:09 , Processed in 0.156737 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表