private void DeleteViewsNotOnSheets(Document doc) { var sheets = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Sheets).ToElementIds(); List <ElementId> viewsONsheets = new List <ElementId>(); //get views on sheets if (sheets.Count != 0) { foreach (ElementId id in sheets) { ViewSheet sheet = doc.GetElement(id) as ViewSheet; viewsONsheets.AddRange(sheet.GetAllPlacedViews()); } } List <ElementId> usedtemplates = new List <ElementId>(); //get used templates foreach (ElementId id in viewsONsheets) { Autodesk.Revit.DB.View view = doc.GetElement(id) as Autodesk.Revit.DB.View; if (view.ViewTemplateId != ElementId.InvalidElementId) { if (!usedtemplates.Contains(id)) { usedtemplates.Add(view.ViewTemplateId); } } } ICollection <ElementId> viewsNOTsheets = null; //if no views on sheets collect differently if (viewsONsheets.Count != 0) { viewsNOTsheets = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Views).Excluding(viewsONsheets).ToElementIds(); } else { viewsNOTsheets = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Views).ToElementIds(); } //if no views not on sheets return if (viewsNOTsheets.Count == 0) { return; } //delete views not on sheets and unused templates skip views with dependancy foreach (ElementId id in viewsNOTsheets) { Autodesk.Revit.DB.View view = doc.GetElement(id) as Autodesk.Revit.DB.View; if (!view.IsTemplate && view.GetDependentViewIds().Count == 0) { try { doc.Delete(id); } catch { } } else if (view.IsTemplate && !usedtemplates.Contains(id)) { try { doc.Delete(id); } catch { } } } //get remaining views ICollection <ElementId> remainingviews; if (viewsONsheets.Count != 0) { remainingviews = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Views).Excluding(viewsONsheets).ToElementIds(); } else { remainingviews = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Views).ToElementIds(); } //delete views without dependent views foreach (ElementId id in remainingviews) { Autodesk.Revit.DB.View view = doc.GetElement(id) as Autodesk.Revit.DB.View; if (!view.IsTemplate && view.GetDependentViewIds().Count == 0) { try { doc.Delete(id); } catch { } } } }