22/11/2013
Удаление неиспользуемых слоёв из чертежа
Метод Database.Purge можно использовать для идентификации неиспользованных слоёв. Если установлено что слой неиспользованный, то его можно безопасно удалять из базы при помощи метода “erase”.Заметим, что логика очень похожа на логику удаления неиспользованных зарегистрированных приложений из чертежа.
Код - C#: [Выделить]
- [CommandMethod("PurgeLayers")]
- public static void PurgeLayers()
- {
- Document doc = Application.DocumentManager.MdiActiveDocument;
- Database db = doc.Database;
- Editor ed = doc.Editor;
- using (Transaction Tx =
- db.TransactionManager.StartTransaction())
- {
- LayerTable table = Tx.GetObject(db.LayerTableId,
- OpenMode.ForRead) as LayerTable;
- ObjectIdCollection layIds = new ObjectIdCollection();
- foreach (ObjectId id in table)
- {
- layIds.Add(id);
- }
- // этот метод позволяет идентифицировать
- // слои, которые не использовались в файле чертежа
- db.Purge(layIds);
- foreach (ObjectId id in layIds)
- {
- DBObject obj = Tx.GetObject(id, OpenMode.ForWrite);
- obj.Erase();
- }
- Tx.Commit();
- }
- }
Источник: http://adndevblog.typepad.com/autocad/2012/05/delete-un-used-layers-from-database.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=336
Опубликовано 22.11.2013