Здравствуйте.
Столкнулся с проблемой - обрабатываю несколько dxf файлов, нужно добавить из чертежа источника несколько блоков в каждый из dxf и сохранить их. Добавление нужных блоков и их вставка в dxf происходит только в первом dxf, во все остальные добавление не происходит. Не могу понять - почему?
Вдобавок в sourceDb.WblockCloneObjects выскакивает ошибка eHandleExists, но в dxf гарантированно нет тех блоков что я пытаюсь добавить из источника. Я в тупике, как это понимать.
Мой код вставки определений блоков в dxf
public void InsertBlockDefinitions(Database destDb)
{
try
{
foreach (Database sourceDb in TitleRepoDatabases)//Здесь один файл источник с двумя блоками внутри, в пространстве модели
{
ObjectIdCollection blockIds = new ObjectIdCollection();
using (Transaction tr = sourceDb.TransactionManager.StartTransaction()) // Транзакция в sourceDb
{
// Открываем таблицу блоков sourceDb
BlockTable bt = (BlockTable)tr.GetObject(sourceDb.BlockTableId, OpenMode.ForRead);
foreach (ObjectId btrId in bt)
{
BlockTableRecord btr = (BlockTableRecord)tr.GetObject(btrId, OpenMode.ForRead);
if (!btr.IsAnonymous && !btr.IsLayout)
{
blockIds.Add(btrId);
}
}
List<string> q1 = new List<string>();
tr.Commit(); // Завершаем транзакцию перед копированием
}
if (blockIds.Count > 0) // Проверяем, есть ли что копировать
{
IdMapping mapping = new IdMapping();
// Копируем блоки из sourceDb в destDb
sourceDb.WblockCloneObjects(blockIds, destDb.BlockTableId, mapping, DuplicateRecordCloning.Replace, false);
}
}
}
catch (Exception e)
{
Application.ShowAlertDialog("Problem in " + e.Message);
}
}
