Counting instances of an image

Counting instances of an image

btmsoftware
Advocate Advocate
1,190 Views
4 Replies
Message 1 of 5

Counting instances of an image

btmsoftware
Advocate
Advocate

Hi there,

 

I can find which images are attached to my current drawing with the following code. However, I don't know how to find out how many times they are attached.

 

Anybody ?

 

Using tr As Transaction = db.TransactionManager.StartTransaction
	Try

		Dim nod As DBDictionary
		Dim imageDict As DBDictionary

		Console.WriteLine("Getting ACAD_IMAGE_DICT DB dictionary")
		nod = CType(tr.GetObject(db.NamedObjectsDictionaryId, OpenMode.ForRead, False), DBDictionary)
		imageDict = CType(tr.GetObject(nod.GetAt("ACAD_IMAGE_DICT"), OpenMode.ForRead, False), DBDictionary)

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

			If myRasterImgDef.IsLoaded Then
				Console.WriteLine("Found: " & myRasterImgDef.ActiveFileName)

				' NEED TO COUNT INSTANCES HERE
								
			Else
				Console.WriteLine("Not found: " & myRasterImgDef.SourceFileName)
			End If
		Next

		tr.Commit()

	Catch ex As Exception
		System.Windows.Forms.MessageBox.Show(ex.ToString, "Configurator", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Stop)
	End Try

End Using

 Thanx in advance

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

Anonymous
Not applicable
You need to search for raster reference entities of type RasterImage. There are two options I know for this, depending on your requirements: 1. Use Editor.SelectAll(), passing in a SelectionFilter with the appropriate dxf code. This is easiest but will only work in the current layout. Note: You might also need to zoom extents for this to work, i can't remember if you need to. 2. Iterate your block table records looking for RasterImage entities, using a counter. Advantage with this approach is that you can iterate your model space as well as all of your paper space block table records - i.e. you will get all of them.
0 Likes
Message 3 of 5

btmsoftware
Advocate
Advocate

Will give option 2 a shot, seems the most appropriate indeed.

 

If you happen to have an example for this iteration ,great, if not, I'll figure it out by myself 😉

 

0 Likes
Message 4 of 5

Virupaksha_aithal
Autodesk Support
Autodesk Support
Accepted solution

Hi

 

Can you try DevBlog solution "Identifying number times a Raster Image is used in a drawing"

http://adndevblog.typepad.com/autocad/2012/05/identifying-number-times-a-raster-images-is-used-in-a-...?

 

Thanks

Virupaksha aithal

Autodesk Devloper Network



Virupaksha Aithal KM
Developer Technical Services
Autodesk Developer Network

Message 5 of 5

btmsoftware
Advocate
Advocate

Exactly what I needed, thanx a lot

0 Likes