Hi all,
I need to get the bounding box of a image loaded on AutoCAD in VB.NET.
Can you help me?
Regards
Matteo
Solved! Go to Solution.
Solved by SENL1362. Go to Solution.
Solved by _gile. Go to Solution.
This might help you to get what you need.
[CommandMethod("TestRasterInfo")] public void TestRasterInfo() { Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; Editor ed = doc.Editor; try { using (Transaction tr = db.TransactionManager.StartTransaction()) { ed.WriteMessage("\n Start TestRasterInfo"); TypedValue[] rasterItem = new TypedValue[] { new TypedValue(0, "IMAGE") }; SelectionFilter rasterSelecFilter = new SelectionFilter(rasterItem); PromptSelectionResult selectResult = ed.SelectAll(rasterSelecFilter); var usedImageDefs = new Dictionary<ObjectId, RasterImage>(); if (selectResult.Status == PromptStatus.OK) { SelectionSet rasterSelSet = selectResult.Value; ed.WriteMessage("\n Number of raster images in use: {0}", rasterSelSet.Count); for (int i = 0; i < rasterSelSet.Count; i++) { RasterImage rasterImage; rasterImage = (RasterImage)tr.GetObject(rasterSelSet[i].ObjectId, OpenMode.ForRead); BlockTableRecord rasterBtr = (BlockTableRecord)tr.GetObject(rasterImage.BlockId, OpenMode.ForRead); RasterImageDef rasterDef = (RasterImageDef)tr.GetObject(rasterImage.ImageDefId, OpenMode.ForRead); usedImageDefs[rasterImage.ImageDefId] = rasterImage; ed.WriteMessage("\n Name: {0}", rasterImage.Name); if (rasterBtr.IsLayout) { Layout layout = (Layout)tr.GetObject(rasterBtr.LayoutId, OpenMode.ForRead); ed.WriteMessage("\n Layout: {0}", layout.LayoutName); } ed.WriteMessage("\n Raster image definition: {0}", rasterDef.ActiveFileName); } } ObjectId imageDictId = RasterImageDef.GetImageDictionary(db); if (!imageDictId.IsNull) { DBDictionary imageDict = (DBDictionary)tr.GetObject(imageDictId, OpenMode.ForRead); ed.WriteMessage("\n Raster Definitions:"); foreach (DBDictionaryEntry imageDefEntry in imageDict) { ed.WriteMessage("\n Name: {0}", imageDefEntry.Key); RasterImageDef imageDef = (RasterImageDef)tr.GetObject(imageDefEntry.Value, OpenMode.ForWrite); ed.WriteMessage("\n Type: {0}", imageDef.FileType); ed.WriteMessage("\n Embedded: {0}", imageDef.IsEmbedded ? "Yes" : "No"); ed.WriteMessage("\n Loaded:{0}", imageDef.IsLoaded ? "Yes" : "No"); ed.WriteMessage("\n InUse: {0}", usedImageDefs.ContainsKey(imageDef.ObjectId) ? "Yes" : "No"); ed.WriteMessage("\n Proxy: {0}", imageDef.IsAProxy ? "Yes" : "No"); ed.WriteMessage("\n Size: {0}, {1}", imageDef.Size.X, imageDef.Size.Y); ed.WriteMessage("\n Units: {0}", imageDef.ResolutionUnits.ToString()); ed.WriteMessage("\n Saved Path: {0}", imageDef.SourceFileName); ed.WriteMessage("\n Found Path: {0}", imageDef.ActiveFileName); } } ed.WriteMessage("\n Block definitions:"); BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead); foreach (ObjectId btrId in bt) { BlockTableRecord btr = (BlockTableRecord)tr.GetObject(btrId, OpenMode.ForWrite); ed.WriteMessage("\n Block: {0}", btr.Name); } tr.Commit(); } } catch (System.Exception ex) { ed.WriteMessage("\n {0}", ex.Message); } }