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