#region 新建层
/// <summary>
/// 新建层
/// </summary>
/// <param name="layername">层名</param>
/// <returns>返回层的objectid</returns>
public Autodesk.AutoCAD.DatabaseServices.ObjectId CreateLayer(string layername)
{
Autodesk.AutoCAD.DatabaseServices.ObjectId layerId = new Autodesk.AutoCAD.DatabaseServices.ObjectId();
Autodesk.AutoCAD.DatabaseServices.Database db = Autodesk.AutoCAD.DatabaseServices.HostApplicationServices.WorkingDatabase;
//开始一个事务
Autodesk.AutoCAD.DatabaseServices.Transaction trans = db.TransactionManager.StartTransaction();
try
{
//首先取得层表
Autodesk.AutoCAD.DatabaseServices.LayerTable lt = (Autodesk.AutoCAD.DatabaseServices.LayerTable)trans.GetObject(db.LayerTableId, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForWrite);
//检查MyLayer层是否存在
if (lt.Has(layername))
{
layerId = lt[layername];
}
else
{
//如果MyLayer层不存在,就创建它
Autodesk.AutoCAD.DatabaseServices.LayerTableRecord ltr = new Autodesk.AutoCAD.DatabaseServices.LayerTableRecord();
ltr.Name = layername; //设置层的名字
layerId = lt.Add(ltr);
trans.AddNewlyCreatedDBObject(ltr, true);
}
//提交事务
trans.Commit();
}
catch (Autodesk.AutoCAD.Runtime.Exception e)
{
//放弃事务
trans.Abort();
}
finally
{
// 显式地释放
trans.Dispose();
}
return layerId;
}
#endregion
#region
/// <summary>
/// 根据层名字,获取当前的层的objectid
/// </summary>
/// <param name="lName">层名字</param>
/// <returns>获取层的objectid</returns>
public Autodesk.AutoCAD.DatabaseServices.ObjectId GetBlockTableRecordObjectId(string lName)
{
Autodesk.AutoCAD.DatabaseServices.ObjectId layerId = new Autodesk.AutoCAD.DatabaseServices.ObjectId();
Autodesk.AutoCAD.DatabaseServices.Database db = Autodesk.AutoCAD.DatabaseServices.HostApplicationServices.WorkingDatabase;
Autodesk.AutoCAD.DatabaseServices.Transaction trans = db.TransactionManager.StartTransaction();
try
{
Autodesk.AutoCAD.DatabaseServices.LayerTable lt = (Autodesk.AutoCAD.DatabaseServices.LayerTable)trans.GetObject(db.LayerTableId, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForRead);
//检查MyLayer层是否存在
if (lt.Has(lName))
{
layerId = lt.ObjectId;
}
trans.Commit();
}
catch (Autodesk.AutoCAD.Runtime.Exception e)
{
//放弃事务
trans.Abort();
}
finally
{
trans.Dispose();
}
return layerId;
}
#endregion