集合是一种包含了许多相似对象实例的对象类型。
访问集合
- 多数集合对象和容器都是通过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();
}
//关闭事务,回收内存
}
}
网友评论