Dodawanie obrazu jako tła do DWG
Contents
[
Hide
]Jak dodać obraz jako tło w DWG
Problem: Jak dodać obraz jako tło w DWG.
Porady: Aby to zrobić, utwórz obiekt CadRasterImageDef dla obrazu tła, utwórz obiekt CadRasterImage, aby wstawić tło do rysunku, dodaj obiekt CadRasterImage do obiektów rysunku, utwórz CadBaseObject i dodaj go do cadImage.Objects, przetwarzaj wszystko za pomocą CadBlockTableObject.
Przykład:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); |