Community
Before (in AutoCAD MAP 2014):
[CommandMethod("TestDelLayout")] public void TestDelLayout() { Document doc = null; Database db = null; Editor ed = null; try { doc = AcadApp.DocumentManager.MdiActiveDocument; db = doc.Database; ed = doc.Editor; var layoutManager=LayoutManager.Current; //Get the Layouts in the order visible to the user; //Delete the default Layers, Layout* foreach (string layoutName in GetTabOrderedLayoutNames(db)) { if (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); else MessageBox.Show("Error: " + ex.Message, "TestDelLayout", MessageBoxButtons.OK, MessageBoxIcon.Error); } } 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(); }
After:
No Commit in the "Delete" procedure only ed.Regen();