Chèn bản vẽ DXF/DWG vào bên trong DXF

Cách chèn bản vẽ DXF/DWG vào bên trong DXF

Vấn đề: Cách chèn bản vẽ DXF/DWG vào bên trong DXF.

Mẹo: Để làm điều này, trước tiên bạn phải tạo một CadInsertObject với các giá trị cần thiết, sau đó lấy tất cả các khối trong CadBlockDictionary, tạo một khối CadBlockEntity mới và thêm nó vào CadBlockDictionary, thêm CadBlockDictionary vào BlockEntities của bản vẽ, thêm một CadInsertObject vào các thực thể của bản vẽ cho mảng.

Ví dụ:

/ this part is not required but detects the first available free ID for handle as each object should have unique one
// assuming that we only make export, but not saving to dxf/dwg, you may assign any unique value
string newObjectID = "FFFFFF";
if (cadImage.Header.HeaderProperties.ContainsKey(CadHeaderAttribute.HANDSEED))
{
newObjectID = ((CadStringParameter)cadImage.Header.HeaderProperties[CadHeaderAttribute.HANDSEED][0]).Value;
int nextAvailableID = int.Parse(newObjectID, System.Globalization.NumberStyles.HexNumber) + 1;
((CadStringParameter)cadImage.Header.HeaderProperties[CadHeaderAttribute.HANDSEED][0]).Value = nextAvailableID.ToString("X");
}
CadInsertObject newInsert = new CadInsertObject();
newInsert.Name = "foreground";
newInsert.SoftOwner.Value = cadImage.Layouts["Model"].BlockTableRecordHandle;
newInsert.ObjectHandle = newObjectID;
newInsert.LayerName = "0";
newInsert.InsertionPoint.X = 200;
newInsert.InsertionPoint.Y = -1300;
CadBlockDictionary allBlocks = cadImage.BlockEntities;
CadBlockEntity newBlock = new CadBlockEntity();
newBlock.XRefPathName.Value = "foreground.dwg";
allBlocks.Add(newInsert.Name, newBlock);
cadImage.BlockEntities = allBlocks;
List entities = new List(cadImage.Entities);
entities.Add(newInsert);
cadImage.Entities = entities.ToArray();
cadImage.Save(...)