明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1705|回复: 2

[基础] 给字典中添加键值时出现问题,求教!!

[复制链接]
发表于 2011-4-20 22:07 | 显示全部楼层 |阅读模式
                DBDictionary nod4 = (DBDictionary)trans.GetObject(nodSw3, OpenMode.ForWrite);
                Xrecord xrec = new Xrecord();
                xrec.Data = new ResultBuffer(new TypedValue((int)DxfCode.ExtendedDataWorldXCoordinate, new Point3d(10, 10, 0)));
                ObjectId nodSw4 = nod4.SetAt("PM_qyPoint1", xrec);
                trans.AddNewlyCreatedDBObject(xrec, true);
                xrec.Data = new ResultBuffer(new TypedValue((int)DxfCode.XCoordinate, new Point3d(20,20,0)));
                ObjectId nodSw5 = nod4.SetAt("PM_qyPoint2",xrec);
                trans.AddNewlyCreatedDBObject(xrec, true);
这段代码的最后一句调试时报错 说无法创建。
求教是怎么个情况啊!
发表于 2011-4-21 08:17 | 显示全部楼层
nod4是nod3的引用吧,nod3不是已经在database里了吗?
 楼主| 发表于 2011-4-23 18:39 | 显示全部楼层
我试验了一下 发现给字典添加键值 一个commit只能添加一个键值。 程序改成下面这个样子就能执行了不知道我理解的对不对。还请大家指教。
public class testNod1
    {
        Database db = HostApplicationServices.WorkingDatabase;
        Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
        ObjectId objTemp = new ObjectId();
        [CommandMethod("tesc")]
        public void Test()
        {
            using (Transaction trans = db.TransactionManager.StartTransaction())
            {
                DBDictionary nod = (DBDictionary)trans.GetObject(db.NamedObjectsDictionaryId, OpenMode.ForWrite);
                DBDictionary sw_database = new DBDictionary();
                ObjectId nodSw = nod.SetAt("sky_sw9527_database", sw_database);
                trans.AddNewlyCreatedDBObject(sw_database, true);


                DBDictionary nod1 = (DBDictionary)trans.GetObject(nodSw, OpenMode.ForWrite);
                DBDictionary swGC_database = new DBDictionary();
                ObjectId nodSw1 = nod1.SetAt("GC1", swGC_database);
                trans.AddNewlyCreatedDBObject(swGC_database, true);

                DBDictionary nod2 = (DBDictionary)trans.GetObject(nodSw1, OpenMode.ForWrite);
                DBDictionary swPM_database = new DBDictionary();
                ObjectId nodSw2 = nod2.SetAt("PMCD", swPM_database);
                trans.AddNewlyCreatedDBObject(swPM_database, true);


                DBDictionary nod3 = (DBDictionary)trans.GetObject(nodSw2, OpenMode.ForWrite);
                DBDictionary swPM1_database = new DBDictionary();
                ObjectId nodSw3 = nod3.SetAt("PM1", swPM1_database);
                trans.AddNewlyCreatedDBObject(swPM1_database, true);

                DBDictionary nod4 = (DBDictionary)trans.GetObject(nodSw3, OpenMode.ForWrite);
                Xrecord xrec = new Xrecord();
                xrec.Data = new ResultBuffer(new TypedValue((int)DxfCode.ExtendedDataWorldXCoordinate, new Point3d(10, 10, 0)));
                ObjectId nodSw4 = nod4.SetAt("PM_qyPoint1", xrec);
                trans.AddNewlyCreatedDBObject(xrec, true);

                objTemp = nodSw3;
                trans.Commit();
            }
            using (Transaction trans = db.TransactionManager.StartTransaction())
            {
                DBDictionary nod4 = (DBDictionary)trans.GetObject(objTemp, OpenMode.ForWrite);
                Xrecord xrec = new Xrecord();
                xrec.Data = new ResultBuffer(new TypedValue((int)DxfCode.Bool, true));
                ObjectId nodSw5 = nod4.SetAt("PM_qykObjectId", xrec);
                trans.AddNewlyCreatedDBObject(xrec, true);
                trans.Commit();
            }

            using (Transaction trans = db.TransactionManager.StartTransaction())
            {
                DBDictionary nod4 = (DBDictionary)trans.GetObject(objTemp, OpenMode.ForWrite);
                Xrecord xrec = new Xrecord();
                xrec.Data = new ResultBuffer(new TypedValue((int)DxfCode.ExtendedDataWorldXCoordinate, new Point3d(10, 10, 0)));
                ObjectId nodSw6 = nod4.SetAt("PM_qyPoint2", xrec);
                trans.AddNewlyCreatedDBObject(xrec, true);
                trans.Commit();
            }
        }
    }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-17 12:46 , Processed in 0.167661 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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