图层操做

图层的的添加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;   } }

相关文章
相关标签/搜索