Public Sub ChangeLayerToCurrent()
Dim db As Database = Application.DocumentManager.MdiActiveDocument.Database
Dim ed As Editor = Application.DocumentManager.MdiActiveDocument.Editor
Try
Dim entselopt As PromptEntityOptions = New PromptEntityOptions(vbCrLf + "Select Entity: ")
entselopt.AllowNone = False
entselopt.AllowObjectOnLockedLayer = True
Dim entselres As PromptEntityResult = ed.GetEntity(entselopt)
If entselres.Status <> PromptStatus.OK Then Exit Sub
Using trans As Transaction = db.TransactionManager.StartTransaction
Dim ent As Entity = trans.GetObject(entselres.ObjectId, OpenMode.ForRead, False, True)
Dim entlayer As String = ent.Layer : ent = Nothing
Dim lt As LayerTable = trans.GetObject(db.LayerTableId, OpenMode.ForRead, False, True)
Dim ltr As LayerTableRecord = trans.GetObject(db.Clayer, OpenMode.ForRead, False, True)
Dim Values() As TypedValue = {New TypedValue(DxfCode.LayerName, entlayer)}
Dim prFilter As SelectionFilter = New SelectionFilter(Values)
Dim prSelRes As PromptSelectionResult = ed.SelectAll(prFilter)
If prSelRes.Status <> PromptStatus.OK Then Exit Sub
Dim selset As SelectionSet = prSelRes.Value
Dim ids() As ObjectId = selset.GetObjectIds
Dim id As ObjectId
For Each id In ids
ent = trans.GetObject(id, OpenMode.ForWrite, False, True)
ent.Layer = ltr.Name
Next
ltr = trans.GetObject(lt.Item(entlayer), OpenMode.ForWrite, False, True)
ltr.Erase()
trans.Commit()
End Using
Catch ex As Exception
ed.WriteMessage("Error: " + ex.Message)
End Try
End Sub