Inserir desenho DXF/DWG dentro do DXF
Como inserir desenho DXF/DWG dentro do DXF
Problema: Como inserir desenho DXF/DWG dentro do DXF.
Dicas: Para fazer isso, você deve primeiro criar um CadInsertObject com os valores necessários, depois obter todos os blocos no CadBlockDictionary, criar um novo bloco CadBlockEntity e adicioná-lo ao CadBlockDictionary, adicionar o CadBlockDictionary às BlockEntities do desenho, adicionar um CadInsertObject às entidades do desenho para o array.
Exemplo:
/ 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(...) |