DWGに画像を背景として追加する方法

DWGに画像を背景として追加する方法

問題: DWGに画像を背景として追加する方法。

ヒント: これを行うには、背景画像のためにCadRasterImageDefオブジェクトを作成し、描画用に背景を挿入するためにCadRasterImageオブジェクトを作成し、描画オブジェクトにCadRasterImageオブジェクトを追加し、CadBaseObject CadBaseObjectを作成してcadImage.Objectsに追加し、すべてをCadBlockTableObjectを介して処理します。

例:

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();