美文网首页
集合对象

集合对象

作者: using__ | 来源:发表于2019-03-15 21:12 被阅读0次

    集合是一种包含了许多相似对象实例的对象类型。

    访问集合

    • 多数集合对象和容器都是通过Document对象或Database对象来访问的。
    • 定义一个变量并检索LayersTable对象,LayersTable对象表示当前图形文件的图层集合
    // 获取当前文档,启动事务管理器
    Database acCurDb = Application.DocumentManager.MdiActiveDocument.Database;
    using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
    {
      //本例返回当前数据库中的图层表
      LayerTable acLyrTbl;
      acLyrTbl = acTrans.GetObject(acCurDb.LayerTableId,OpenMode.ForRead) as LayerTable;
      //关闭事务
    }
    
    • 向集合中添加新成员,使用Add()方法。
    • 新建一个图层,并将其添加到Layer表。
    using Autodesk.AutoCAD.Runtime;
    using Autodesk.AutoCAD.ApplicationServices;
    using Autodesk.AutoCAD.DatabaseServices;
    
    [CommandMethod("AddMyLayer")]
    public static void AddMyLayer()
    {
      //获取当前文档和数据库,并启动事务
      Document acDoc = Application.DocumentManager.MdiActiveDocument;
      Database acCurDb = acDoc.Database;
    
      using (Transaction acTrans =     acCurDb.TransactionManager.StartTransaction())
      {
        //返回当前数据库的图层表
        LayerTable acLyrTbl;
        acLyrTbl = acTrans.GetObject(acCurDb.LayerTableId,OpenMode.ForRead) as LayerTable;
        //检查图层表里是否有图层MyLayer
        if(acLyrTbl.Has("MyLayer") != true)
        {
          //以写模式打开图层表
          acLyrTbl.UpgradeOpen();
          //新创建一个图层表记录,并命名为“MyLayer”
          LayerTableRecord acLyrTblRec = new LayerTableRecord();
          acLyrRec.Name = "MyLayer";
          //添加新的图层表记录到图层表,添加事务
          acLyrTbl.Add(acLyrTblRec);
          acTrans.AddNewlyCreatedDBObject(acLyrTblRec,true);
          //提交修改
          acTrans.Commit();
        }
        //关闭事务,回收内存
      }
    }
    

    相关文章

      网友评论

          本文标题:集合对象

          本文链接:https://www.haomeiwen.com/subject/affdmqtx.html