DWG Arka Planına Görüntü Ekleme
DWG’ye arka plan olarak bir görüntü nasıl eklenir
Sorun: DWG’ye arka plan olarak bir görüntü nasıl eklenir.
İpuçları: Bunu yapmak için, arka plan görüntüsü için bir CadRasterImageDef nesnesi oluşturun, çizim için arka planı eklemek üzere bir CadRasterImage nesnesi oluşturun, bir CadRasterImage nesnesini çizim nesnelerine ekleyin, bir CadBaseObject CadBaseObject oluşturun ve bunu cadImage.Objects’a ekleyin, her şeyi CadBlockTableObject aracılığıyla işleyin.
Örnek:
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(); |