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
Solved! Go to Solution.
Solved by VB_Autocad_guy. Go to Solution.
Solved by fieldguy. Go to 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
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)
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)
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)