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.
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
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); } } } } }
Sub EraseLayer() On Error Resume Next Dim layerObj As AcadLayer Set layerObj = ThisDrawing.Layers("ABC") layerObj.Delete End Sub