图层的的添加spa
///acDoc 要添加的文档文档
///strLayerName 图层名字string
///color 图层颜色it
///io
public ObjectId CreateCadLayer(Document acDoc, string strLayerName,System.Drawing.Color color)
{
try
{
if (String.IsNullOrEmpty(strLayerName))
return ObjectId.Null;foreach
ObjectId layerId = new ObjectId();List
using(DocumentLock doclock = acDoc.LockDocument())
{
using(Transaction tr = acDoc.Database.TransactionManager.StartTransaction())
{
LayerTable lt = tr.GetObject(acDoc.Database.LayerTableId, OpenMode.ForWrite) as LayerTable;
if (lt.Has(strLayerName))
{
layerId = lt[strLayerName];
}
else
{
LayerTableRecord layer = new LayerTableRecord();
layer.Name = strLayerName;
layer.Color = Autodesk.AutoCAD.Colors.Color.FromColor(color);
layerId = lt.Add(layer);
tr.AddNewlyCreatedDBObject(layer, true);
}
tr.Commit();
tr.Dispose();
}
}
return layerId;
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message, "提示");
return ObjectId.Null;
}tab
图层删除poi
///layer 要删除的图层名co
using (Transaction tr = doc.Database.TransactionManager.StartTransaction())
{
LayerTable lt = tr.GetObject(doc.Database.LayerTableId, OpenMode.ForWrite) as LayerTable;
LayerTableRecord ltr = tr.GetObject(lt[layer], OpenMode.ForWrite) as LayerTableRecord;
lt.GenerateUsageData();
if ((doc.Database.Clayer == lt[layer]) //"0"和“Defpoints"以及当前图层不能够删除,若要删除当前图层,必须先修改当前图层到其余图层
|| layer == "0" || layer == "Defpoints") //最好是0图层 代码 doc.Database.Clayer = lt["0"];
{
tr.Commit();
//
}
else
{
tr.Erase(true);
tr.Commit();
}
}
获取所有的CAD图层名字 //固然也能够获取LayerTableRecord的其余记录 好比ObjectId ,linewith,color等
public void GetAllCadLayerName(Document acDoc, out List<string> lyList) { lyList = new List<string>(); try { Database acDb = acDoc.Database; using (Transaction tr = acDb.TransactionManager.StartTransaction()) { LayerTable lyTbl = tr.GetObject(acDb.LayerTableId, OpenMode.ForRead) as LayerTable; foreach (ObjectId layerId in lyTbl) { LayerTableRecord ltr = (LayerTableRecord)tr.GetObject(layerId, OpenMode.ForRead); if (ltr != null /*&& !ltr.Name.Equals("0")*/) { lyList.Add(ltr.Name); } } tr.Commit(); } } catch (System.Exception ex) { MessageBox.Show(ex.Message, "提示"); return; } }