Есть вот такой код, который клонирует все слои в активный документ из какого-то файла.
[CommandMethod("ImportLaers")]
static public void ImportLaers()
{
string sourceFile = "D:\\Temp\\Styles.dwg";
Document doc = Application.DocumentManager.MdiActiveDocument;
Database targetDb = doc.Database;
using (Database sourceDb = new Database())
{
sourceDb.ReadDwgFile(sourceFile, FileOpenMode.OpenForReadAndAllShare, false, null);
sourceDb.CloseInput(true);
ObjectId sourceTableId = sourceDb.LayerTableId;
ObjectId targetTableId = targetDb.LayerTableId;
using (IdMapping idMap = new IdMapping())
{
ObjectIdCollection idCol;
using (Transaction tr = sourceDb.TransactionManager.StartTransaction())
{
using (LayerTable sourceTable = (LayerTable)tr.GetObject(sourceTableId, OpenMode.ForRead, false, true))
{
idCol = new ObjectIdCollection(sourceTable.Cast<ObjectId>().
Where(id => id.IsValid && !id.IsErased && !id.IsEffectivelyErased).
Select(id => id).ToArray());
//sourceDb.WblockCloneObjects(idCol, targetTableId, idMap, DuplicateRecordCloning.Ignore, false);
}
tr.Commit();
}
sourceDb.WblockCloneObjects(idCol, targetTableId, idMap, DuplicateRecordCloning.Ignore, false);
}
}
}
При выполнении выдается ошибка ePermanentlyErased. Аналогичный код нормально работает для других символьных таблиц (текстовые и размерные стили, типы линии etc) В чём засада-то? Для слоёв нужно ещё какие-то "телодвижения"?
Да. AutoCAD 2018 и 2021