23/06/2014
					Поиск удаленных примитивов
Чтобы получить запись таблицы блоков, в которой имеются удаленные примитивы, можно воспользоваться методом BlockTableRecord.IncludingErased. Например таким образом можно восстановить удаленные примитивы в блоке, как показано ниже.
Код - C#: [Выделить]
- [CommandMethod("GetErasedEntities")]
 - public void GetErasedEntities()
 - {
 - Document doc = Application.DocumentManager.MdiActiveDocument;
 - Editor ed = doc.Editor;
 - Database db = doc.Database;
 - ObjectId ModelSpaceId = SymbolUtilityServices.GetBlockModelSpaceId(db);
 - using (Transaction tr = db.TransactionManager.StartTransaction())
 - {
 - BlockTableRecord record = tr.GetObject(ModelSpaceId, OpenMode.ForRead) as BlockTableRecord;
 - BlockTableRecord withErasedBTR = record.IncludingErased;
 - foreach (ObjectId Id in withErasedBTR)
 - {
 - if (!Id.IsErased)
 - continue;
 - // Восстанавливаем примитив...
 - // У метода GetObject третий параметр указывает
 - // на возможность открытия удаленного примитива
 - Entity ent = (Entity)tr.GetObject(Id,
 - OpenMode.ForWrite, true);
 - ent.Erase(false); // Восстанавливаем
 - }
 - tr.Commit();
 - }
 - }
 
Источник: http://adndevblog.typepad.com/autocad/2012/07/indentifying-erased-entities.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=817
Опубликовано 23.06.2014