DWGに画像を背景として追加する方法
Contents
[
Hide
]DWGに画像を背景として追加する方法
問題: DWGに画像を背景として追加する方法。
ヒント: これを行うには、背景画像のためにCadRasterImageDefオブジェクトを作成し、描画用に背景を挿入するためにCadRasterImageオブジェクトを作成し、描画オブジェクトにCadRasterImageオブジェクトを追加し、CadBaseObject CadBaseObjectを作成してcadImage.Objectsに追加し、すべてをCadBlockTableObjectを介して処理します。
例:
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(); |