Message 1 of 7
RasterImages
Not applicable
03-01-2012
02:41 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
I think I'm going about this the wrong way.
I want to rename the RasterImage Files to Match the Drawing Naming Convention Plus a Suffix.
In this case _A, _B, _C etc.
And update that in the Drawing.
Public Shared Sub RenameRasterImagesAndReattachToDrawing(ByVal FilePath As String)
Dim sNewName As String = ""
Dim iImg As Integer = 0
Dim Suffix As String = "A"
Dim myDwgIO As New IO.FileInfo(FilePath) 'Get FileName from Full FilePath
'<<<1. Locate Raster Images
'Autocad Database Adapter
'Read Autocad File Silently without opening file on Screen
Dim myDoc As Autodesk.AutoCAD.ApplicationServices.Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
'Start(Transaction)
Using myTrans As Autodesk.AutoCAD.DatabaseServices.Transaction = myDoc.Database.TransactionManager.StartTransaction
'~~~~~~~~~~~~~~~~~~~~~~~~TEMP CODE~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'Take a Look at Attachments
'Open The Dictionary
Dim nod As Autodesk.AutoCAD.DatabaseServices.DBDictionary
Dim imageDict As Autodesk.AutoCAD.DatabaseServices.DBDictionary
nod = CType(myTrans.GetObject(myDoc.Database.NamedObjectsDictionaryId, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForWrite, False), _
Autodesk.AutoCAD.DatabaseServices.DBDictionary)
imageDict = CType(myTrans.GetObject(nod.GetAt("ACAD_IMAGE_DICT"), _
Autodesk.AutoCAD.DatabaseServices.OpenMode.ForWrite, False), _
Autodesk.AutoCAD.DatabaseServices.DBDictionary)
For Each dicentry As Autodesk.AutoCAD.DatabaseServices.DBDictionaryEntry In imageDict
Dim myRasterImgDef As Autodesk.AutoCAD.DatabaseServices.RasterImageDef = _
CType(myTrans.GetObject(CType(dicentry.Value, Autodesk.AutoCAD.DatabaseServices.ObjectId), _
Autodesk.AutoCAD.DatabaseServices.OpenMode.ForWrite), _
Autodesk.AutoCAD.DatabaseServices.RasterImageDef)
'<<<2. Save Information to Memory Object
Dim TempString As String = myRasterImgDef.Handle.ToString
'MsgBox(TempString)
'<<<3. Rename Files (Enforce Naming Convention)
Try
Dim sFileFullName As String = myRasterImgDef.SourceFileName
'Get File Directory
Dim myFileIO As System.IO.FileInfo
myFileIO = My.Computer.FileSystem.GetFileInfo(sFileFullName)
'FileName
Dim sFileName As String = myFileIO.Name.Substring(0, (myFileIO.Name.Length - 4))
'Store NewName in Memory Object
sNewName = myFileIO.Directory.ToString & "\" & sFileName & "_" & Suffix & ".dwg"
MsgBox(sNewName)
'Rename File
If Not My.Computer.FileSystem.FileExists(sNewName) Then
My.Computer.FileSystem.CopyFile(sFileFullName, sNewName)
End If
'Increment Letter
Suffix = GetNextLetter(Suffix)
'<<<4. Confirm Renames??
Catch ex As Exception
MsgBox(ex.Message)
End Try
myRasterImgDef.SourceFileName = sNewName
myRasterImgDef.ActiveFileName = sNewName
MsgBox(myRasterImgDef.ActiveFileName & vbCrLf & myRasterImgDef.SourceFileName)
Next
'Commit Transaction
myTrans.Commit()
End Using
End Sub