将 DXF/DWG 图纸插入到 DXF 中

如何将 DXF/DWG 图纸插入到 DXF 中

问题: 如何将 DXF/DWG 图纸插入到 DXF 中。

提示: 要做到这一点,您必须首先创建一个具有必要值的 CadInsertObject,然后在 CadBlockDictionary 中获取所有块,创建一个新的 CadBlockEntity 块并将其添加到 CadBlockDictionary 中,将 CadBlockDictionary 添加到图纸的 BlockEntities 中,为数组向图纸的实体添加一个 CadInsertObject。

示例:

/ 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(...)