Aggiunta di un'immagine come sfondo in DWG
Come aggiungere un’immagine come sfondo in DWG
Problema: Come aggiungere un’immagine come sfondo in DWG.
Suggerimenti: Per farlo, crea un oggetto CadRasterImageDef per l’immagine di sfondo, crea un oggetto CadRasterImage per inserire lo sfondo per il disegno, aggiungi un oggetto CadRasterImage agli oggetti del disegno, crea un CadBaseObject e aggiungilo a cadImage.Objects, elabora tutto tramite CadBlockTableObject.
Esempio:
CadRasterImageDef rasterImageDef = new CadRasterImageDef("background.jpg", 0, 0); | |
rasterImageDef.ObjectHandle = "RefID"; | |
rasterImageDef.SoftOwner = cadImage.Layouts["Model"].BlockTableRecordHandle; | |
rasterImageDef.FileName = "background.jpg"; | |
// inserts RasterImage inside DWG, requires fixes for CadBlockEntity.cs | |
CadRasterImage rasterImage = new CadRasterImage(rasterImageDef, | |
new Cad3DPoint(2700, 1300, 0), new Cad3DPoint(0.5, 0, 0), new Cad3DPoint(0, 0.5, 0)); | |
rasterImage.ObjectHandle = newObjectID; | |
rasterImage.LayerName = "0"; | |
rasterImage.ImageDefReference = "RefID"; | |
rasterImage.DisplayFlags = 1; | |
rasterImage.InsertionPoint.X = 2700; | |
rasterImage.InsertionPoint.Y = 1300; | |
rasterImage.UVector.X = 0.5; | |
rasterImage.VVector.Y = 0.5; | |
List<CadBaseEntity> entities = new List<CadBaseEntity>(cadImage.Entities); | |
// order doesn't matter but it is good idea to make is synchronized with below | |
// entities.Insert(0, rasterImage); // add to the beginning to fill image with background, entities will be above | |
entities.Add(rasterImage); | |
cadImage.Entities = entities.ToArray(); | |
List<CadBaseObject> objects = new List<CadBaseObject>(cadImage.Objects); | |
objects.Add(rasterImageDef); | |
cadImage.Objects = objects.ToArray(); | |
CadBlockTableObject blockTableObjectReference = null; | |
CadBlockEntity cadBlockEntity = null; | |
foreach (CadBlockTableObject tableObject in cadImage.BlocksTables) | |
{ | |
if (string.Equals(tableObject.HardPointerToLayout, cadImage.Layouts["Model"].ObjectHandle)) | |
{ | |
blockTableObjectReference = tableObject; | |
break; | |
} | |
} | |
if (blockTableObjectReference != null && cadImage.BlockEntities.ContainsKey(blockTableObjectReference.BlockName)) | |
{ | |
cadBlockEntity = cadImage.BlockEntities[blockTableObjectReference.BlockName]; | |
} | |
List<CadBaseEntity> blockEntities = new List<CadBaseEntity>(cadBlockEntity.Entities); | |
blockEntities.Insert(0, rasterImage); // add to the beginning to fill image with background, entities will be above | |
cadBlockEntity.Entities = blockEntities.ToArray(); |