Thank you.
That is what I needed.
When I converted your code over to .NET you had used var alot, I wasnt quite sure what to do, because the compiler was complaining though I fixed it. (I Think)
Here is my tweaked version. (Changes are in bold.) Also I have Option Explicit On
Tony
DOT NET VERSION
Function LayerDelete(ByVal db As Database, ByVal layerName As String) As String
If (layerName = "0") Then
Return "Layer '0' cannot be deleted."
End If
Dim tr As Transaction = db.TransactionManager.StartTransaction
Dim layerTable As LayerTable = CType(tr.GetObject(db.LayerTableId, OpenMode.ForRead), LayerTable)
If Not layerTable.Has(layerName) Then
Return ("Layer '" + (layerName + "' not found."))
End If
Try
Dim layerId As Object = layerTable(layerName)
If Application.GetSystemVariable("Clayer") = layerName Then
Return "Current layer cannot be deleted."
End If
Dim layer As LayerTableRecord = CType(tr.GetObject(layerId, OpenMode.ForWrite), LayerTableRecord)
layer.IsLocked = False
Dim blockTable As BlockTable = CType(tr.GetObject(db.BlockTableId, OpenMode.ForRead), BlockTable)
For Each btrId As Object In blockTable
Dim block As BlockTableRecord = CType(tr.GetObject(btrId, OpenMode.ForRead), BlockTableRecord)
For Each entId As Object In block
Dim ent As Entity = CType(tr.GetObject(entId, OpenMode.ForRead), Entity)
If (ent.Layer = layerName) Then
ent.UpgradeOpen()
ent.Erase()
End If
Next
Next
layer.Erase()
tr.Commit()
MsgBox("Layer '" + (layerName + "' have been deleted."))
Catch e As System.Exception
MsgBox("Error: " + e.Message)
End Try
End Function