Всем привет. Имеется вот такое свойство (ну можно сказать - метод):
public static List<string> Layers
{
get
{
var layers = new List<string>();
using (Document.LockDocument())
{
using (OpenCloseTransaction tr = Database.TransactionManager.StartOpenCloseTransaction())
{
LayerTable lt = tr.GetObject(Database.LayerTableId, OpenMode.ForRead) as LayerTable;
if (lt != null)
{
foreach (ObjectId layerId in lt)
{
var layer = tr.GetObject(layerId, OpenMode.ForRead) as LayerTableRecord;
if (layer != null)
layers.Add(layer.Name);
}
}
}
}
return layers;
}
}
Этот метод выдает иногда ошибку
ePermanentlyErased. Переводится вроде как "Стерт навсегда".
У меня два вопроса:
1. Что это за условие такое, при котором может быть такая ошибка? Я сам не сталкивался (только по отчетам) и никак не могу понять какие условия возникновения такой ошибки могут быть
2. Достаточно ли будет добавить такую проверку:
if (layer != null && !layer.IsErased && !layer.IsEraseStatusToggled)
layers.Add(layer.Name);
?