• Industries
  • Products
  • Buy
  • Services & Support
  • Communities
  • Discussion Groups

    .NET

    Reply
    Distinguished Contributor
    VB_Autocad_guy
    Posts: 136
    Registered: ‎07-24-2009
    Accepted Solution

    Iterate Through Raster Images/Image Dictionary

    184 Views, 4 Replies
    02-28-2012 11:44 AM

    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

     

    Please use plain text.
    Valued Mentor
    Posts: 297
    Registered: ‎03-31-2005

    Re: Iterate Through Raster Images/Image Dictionary

    02-28-2012 12:21 PM 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 

    Please use plain text.
    Distinguished Contributor
    VB_Autocad_guy
    Posts: 136
    Registered: ‎07-24-2009

    Re: Iterate Through Raster Images/Image Dictionary

    02-28-2012 01:31 PM 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)

     

    Please use plain text.
    Distinguished Contributor
    VB_Autocad_guy
    Posts: 136
    Registered: ‎07-24-2009

    Re: Iterate Through Raster Images/Image Dictionary

    02-28-2012 01:36 PM in reply to: VB_Autocad_guy

    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)

     

    Please use plain text.
    Distinguished Contributor
    VB_Autocad_guy
    Posts: 136
    Registered: ‎07-24-2009

    Re: Iterate Through Raster Images/Image Dictionary

    02-28-2012 01:46 PM in reply to: VB_Autocad_guy

    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)

     

    Please use plain text.