Erase Layers
 
 
 

You can erase a layer at any time during a drawing session. You cannot erase the current layer, layer 0, an xref-dependent layer, or a layer that contains objects.

To erase a layer, use the Erase method. It is recommended to use the Purge function to verify that the layer can be purged, along with verifying that it is not layer 0, Defpoints, or the current layer.

NoteLayers referenced by block definitions, along with the special layer named DEFPOINTS, cannot be deleted even if they do not contain visible objects.

VB.NET

Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
 
<CommandMethod("EraseLayer")> _
Public Sub EraseLayer()
  '' Get the current document and database
  Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
  Dim acCurDb As Database = acDoc.Database
 
  '' Start a transaction
  Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
 
      '' Open the Layer table for read
      Dim acLyrTbl As LayerTable
      acLyrTbl = acTrans.GetObject(acCurDb.LayerTableId, _
                                   OpenMode.ForRead)
 
      Dim sLayerName As String = "ABC"
 
      If acLyrTbl.Has(sLayerName) = True Then
          '' Check to see if it is safe to erase layer
          Dim acObjIdColl As ObjectIdCollection = New ObjectIdCollection()
          acObjIdColl.Add(acLyrTbl(sLayerName))
          acCurDb.Purge(acObjIdColl)
 
          If acObjIdColl.Count > 0 Then
              Dim acLyrTblRec As LayerTableRecord
              acLyrTblRec = acTrans.GetObject(acObjIdColl(0), OpenMode.ForWrite)
 
              Try
                  '' Erase the unreferenced layer
                  acLyrTblRec.Erase(True)
 
                  '' Save the changes and dispose of the transaction
                  acTrans.Commit()
              Catch Ex As Autodesk.AutoCAD.Runtime.Exception
                  '' Layer could not be deleted
                  Application.ShowAlertDialog("Error:\n" + Ex.Message)
              End Try
          End If
      End If
  End Using
End Sub

C#

using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
 
[CommandMethod("EraseLayer")]
public static void EraseLayer()
{
  // Get the current document and database
  Document acDoc = Application.DocumentManager.MdiActiveDocument;
  Database acCurDb = acDoc.Database;
 
  // Start a transaction
  using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
  {
      // Open the Layer table for read
      LayerTable acLyrTbl;
      acLyrTbl = acTrans.GetObject(acCurDb.LayerTableId,
                                   OpenMode.ForRead) as LayerTable;
 
      string sLayerName = "ABC";
 
      if (acLyrTbl.Has(sLayerName) == true)
      {
          // Check to see if it is safe to erase layer
          ObjectIdCollection acObjIdColl = new ObjectIdCollection();
          acObjIdColl.Add(acLyrTbl[sLayerName]);
          acCurDb.Purge(acObjIdColl);
 
          if (acObjIdColl.Count > 0)
          {
              LayerTableRecord acLyrTblRec;
              acLyrTblRec = acTrans.GetObject(acObjIdColl[0],
                                              OpenMode.ForWrite) as LayerTableRecord;
 
              try
              {
                  // Erase the unreferenced layer
                  acLyrTblRec.Erase(true);
 
                  // Save the changes and dispose of the transaction
                  acTrans.Commit();
              }
              catch (Autodesk.AutoCAD.Runtime.Exception Ex)
              {
                  // Layer could not be deleted
                  Application.ShowAlertDialog("Error:\n" + Ex.Message);
              }
          }
      }
  }
}
VBA/ActiveX Code Reference