.NET
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Iterate Through Raster Images/Image Dictionary

4 REPLIES 4
SOLVED
Reply
Message 1 of 5
VB_Autocad_guy
908 Views, 4 Replies

Iterate Through Raster Images/Image Dictionary

Here's the Code I have so far: 

 

I want to iterate through the Image Dictionary and Connect into the Raster ImageDef Properties. 

I want to be able to modify and fix missing Raster Images. 

 

Can someone help me get this code sorted out. 

 

For Each myObjID As ObjectId In myModelSpace
                Dim myEnt As Entity = myObjID.GetObject(OpenMode.ForRead)

 

If TypeOf myEnt Is Image Then
                        Dim myRasterImg As RasterImage
                        Dim myRasterImgDef As RasterImageDef

                        'Open The Dictionary 
                        Dim ImgDict As ObjectId = RasterImageDef.GetImageDictionary(DatabaseIn)

                        For Each dictEntry In ImgDict


                        Next



End If

 

4 REPLIES 4
Message 2 of 5
fieldguy
in reply to: VB_Autocad_guy

assuming transaction "avctivetx" is started

For Each dicentry As DBDictionaryEntry In imageDict
            Dim rasterimgDef As RasterImageDef = CType(activetx.GetObject(CType(dicentry.Value, ObjectId), OpenMode.ForRead), RasterImageDef)
            msg = msg & rasterimgDef.ActiveFileName & vbCrLf
        Next 

Message 3 of 5
VB_Autocad_guy
in reply to: fieldguy

How would I get the RasterImageDef and it's attached properties? 

 

ElseIf TypeOf myEnt Is Image Then

                    Dim myExtImage As New extractRasterImage

                    Dim myRasterImage As RasterImage = CType(myTrans.GetObject(myEnt.ObjectId, OpenMode.ForRead), RasterImage)
                    MsgBox(myRasterImage.Path)

                    myExtImage.Path = myRasterImage.Path

                    myExtractedDB.RasterImages.Add(myExtImage)

 

Message 4 of 5

If anyone's wondering this is how I got it to work. 

 

   'Start(Transaction)
        Using myTrans As Transaction = DatabaseIn.TransactionManager.StartTransaction

            'Take a Look at Attachments
            'Open The Dictionary 
            Dim nod As DBDictionary
            Dim imageDict As DBDictionary

            nod = CType(myTrans.GetObject(DatabaseIn.NamedObjectsDictionaryId, OpenMode.ForRead, False), DBDictionary)
            imageDict = CType(myTrans.GetObject(nod.GetAt("ACAD_IMAGE_DICT"), OpenMode.ForRead, False), DBDictionary)

            Dim msg As String = ""
            For Each dicentry As DBDictionaryEntry In imageDict
                Dim myRasterImgDef As RasterImageDef = CType(myTrans.GetObject(CType(dicentry.Value, ObjectId), OpenMode.ForRead), RasterImageDef)


                msg = (msg & myRasterImgDef.ActiveFileName & vbTab & myRasterImgDef.FileType & vbCr & _
                            vbTab & myRasterImgDef.SourceFileName & vbCrLf)
            Next
            MsgBox(msg)

 

Message 5 of 5

Never mind... 

Found it 

  ElseIf TypeOf myEnt Is Image Then
                    'Database Image Attachment

                    Dim myExtImage As New extractRasterImage
                    Dim myRasterImage As RasterImage = CType(myTrans.GetObject(myEnt.ObjectId, OpenMode.ForRead), RasterImage)
                    Dim myRasterImageDef As RasterImageDef = CType(myTrans.GetObject(myRasterImage.ImageDefId, OpenMode.ForRead), RasterImageDef)

                 
                    myExtImage.Path = myRasterImage.Path
                    myExtImage.ActiveFullFileName = myRasterImageDef.ActiveFileName
                    MsgBox(myRasterImage.Path & myRasterImageDef.ActiveFileName)

                    myExtractedDB.RasterImages.Add(myExtImage)

 

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk DevCon in Munich May 28-29th


Autodesk Design & Make Report

”Boost