using System;
using System.Linq;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.EditorInput;
[assembly: CommandClass(typeof(DeleteLayouts.MyCommands))]
namespace DeleteLayouts
{
public class MyCommands
{
[CommandMethod("TestDelLayout")]
public void TestDelLayout()
{
Document doc = null;
Database db = null;
Editor ed = null;
try
{
doc = Application.DocumentManager.MdiActiveDocument;
db = doc.Database;
ed = doc.Editor;
var layoutManager = LayoutManager.Current;
foreach (string layoutName in GetTabOrderedLayoutNames(db))
{
if (Regex.IsMatch(layoutName, "^Лист[0-9]+", RegexOptions.IgnoreCase) ||
Regex.IsMatch(layoutName, "^Layout[0-9]+", RegexOptions.IgnoreCase))
layoutManager.DeleteLayout(layoutName);
}
ed.Regen();
}
catch (System.Exception ex)
{
if (ed != null)
ed.WriteMessage("\n Error: " + ex.Message);
}
}
public static List<string> GetTabOrderedLayoutNames(Database db)
{
if (db == null)
return null;
var tabOrderedLayouts = new Dictionary<int, string>();
using (Transaction tr = db.TransactionManager.StartTransaction())
{
DBDictionary layoutDict = (DBDictionary)tr.GetObject(db.LayoutDictionaryId, OpenMode.ForRead);
foreach (DBDictionaryEntry layoutEntry in layoutDict)
{
Layout layout = (Layout)tr.GetObject(layoutEntry.Value, OpenMode.ForRead);
if (!layout.ModelType)
tabOrderedLayouts[layout.TabOrder] = layout.LayoutName;
}
tr.Commit();
}
return tabOrderedLayouts.OrderBy(n => n.Key).Select(n => n.Value).ToList();
}
}
}