Here is my solution
' Get old raster name
Sub GetRaster()
Dim CurrentSaveAsDrawing As String = Interaction.GetSetting("Autodesk Applications", My.Application.Info.Title, "CurrentSaveAsDrawing")
Dim ActiveDrawing As Autodesk.AutoCAD.ApplicationServices.Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
ActiveDrawing.LockDocument()
Dim acTypValAr(0) As Autodesk.AutoCAD.DatabaseServices.TypedValue
acTypValAr.SetValue(New Autodesk.AutoCAD.DatabaseServices.TypedValue(Autodesk.AutoCAD.DatabaseServices.DxfCode.Start, "IMAGE"), 0)
Dim acSelFtr As Autodesk.AutoCAD.EditorInput.SelectionFilter = New Autodesk.AutoCAD.EditorInput.SelectionFilter(acTypValAr)
Dim ed As Autodesk.AutoCAD.EditorInput.Editor = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor
Dim acSSPrompt As Autodesk.AutoCAD.EditorInput.PromptSelectionResult
acSSPrompt = ed.SelectAll(acSelFtr)
If acSSPrompt.Status = Autodesk.AutoCAD.EditorInput.PromptStatus.OK Then
Dim acSSet As Autodesk.AutoCAD.EditorInput.SelectionSet = acSSPrompt.Value
Using Trans As Autodesk.AutoCAD.DatabaseServices.Transaction = ActiveDrawing.Database.TransactionManager.StartTransaction
For Each selObj In acSSet
Dim MyImage As Autodesk.AutoCAD.DatabaseServices.RasterImage = Trans.GetObject(selObj.ObjectId, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForWrite, False, True)
Dim MyImageDef As Autodesk.AutoCAD.DatabaseServices.RasterImageDef = Trans.GetObject(MyImage.ImageDefId, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForWrite, False, True)
Dim OriginalName As String = MyImage.Name
Dim OriginalActiveFileName As String = MyImageDef.ActiveFileName
Dim OriginalSourceFileName As String = MyImageDef.SourceFileName
Dim ImageExtension As String = System.IO.Path.GetExtension(OriginalActiveFileName)
Dim DestinationFile As String = Replace(CurrentSaveAsDrawing, ".dwg", ImageExtension, 1, -1, CompareMethod.Text)
System.IO.File.Copy(OriginalActiveFileName, DestinationFile, True)
Interaction.SaveSetting("Autodesk Applications", My.Application.Info.Title, "SaveAsImageFile", DestinationFile)
Next
End Using
End Sub
' Apply new raster name
Sub Raster_Update()
Dim SaveAsImageFile As String = Interaction.GetSetting("Autodesk Applications", My.Application.Info.Title, "SaveAsImageFile")
Dim ACADApp As Autodesk.AutoCAD.Interop.AcadApplication = Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication
ActiveDrawing.LockDocument()
Dim acTypValAr(0) As Autodesk.AutoCAD.DatabaseServices.TypedValue
acTypValAr.SetValue(New Autodesk.AutoCAD.DatabaseServices.TypedValue(Autodesk.AutoCAD.DatabaseServices.DxfCode.Start, "IMAGE"), 0)
Dim acSelFtr As Autodesk.AutoCAD.EditorInput.SelectionFilter = New Autodesk.AutoCAD.EditorInput.SelectionFilter(acTypValAr)
Dim ed As Autodesk.AutoCAD.EditorInput.Editor = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor
Dim acSSPrompt As Autodesk.AutoCAD.EditorInput.PromptSelectionResult
acSSPrompt = ed.SelectAll(acSelFtr)
If acSSPrompt.Status = Autodesk.AutoCAD.EditorInput.PromptStatus.OK Then
Dim acSSet As Autodesk.AutoCAD.EditorInput.SelectionSet = acSSPrompt.Value
Using Trans As Autodesk.AutoCAD.DatabaseServices.Transaction = ActiveDrawing.Database.TransactionManager.StartTransaction
For Each selObj In acSSet
Dim MyImage As Autodesk.AutoCAD.DatabaseServices.RasterImage = Trans.GetObject(selObj.ObjectId, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForWrite, False, True)
Dim MyImageDef As Autodesk.AutoCAD.DatabaseServices.RasterImageDef = Trans.GetObject(MyImage.ImageDefId, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForWrite, False, True)
MyImage.Name = System.IO.Path.GetFileNameWithoutExtension(SaveAsImageFile)
MyImageDef.SourceFileName = System.IO.Path.GetFileName(SaveAsImageFile)
MyImageDef.ActiveFileName = SaveAsImageFile
Next
Trans.Commit()
ACADApp.ActiveDocument.SendCommand("-IMAGE" & vbCr & "R" & vbCr & "*" & vbCr)
End Using
End If
End Sub