Iterate Through Raster Images/Image Dictionary

Iterate Through Raster Images/Image Dictionary

Anonymous
Not applicable
1,625 Views
4 Replies
Message 1 of 5

Iterate Through Raster Images/Image Dictionary

Anonymous
Not applicable

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

 

0 Likes
Accepted solutions (2)
1,626 Views
4 Replies
Replies (4)
Message 2 of 5

fieldguy
Advisor
Advisor
Accepted solution

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 

0 Likes
Message 3 of 5

Anonymous
Not applicable

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)

 

0 Likes
Message 4 of 5

Anonymous
Not applicable

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)

 

0 Likes
Message 5 of 5

Anonymous
Not applicable
Accepted solution

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)

 

0 Likes