В общем нашел как добавить все что мне необходимо в список удаления, но появилась следующая проблема, вылетает ошибка InvalidOperationExteption. По описанию вроде выходит что итератор не может приводить к изменению базы данных Ревита
и поясняется что это бывает при удалении элементов. Может кто подсказать как все таки удалить все, ну и может кто знает как более красиво решить проблему с фильтрацией нужных объектов?
//Находим нужный вид
var sheet = new FilteredElementCollector(doc).OfClass(typeof(View)).Where(a=>a.Name=="Ведомость деталей").First();
//Делаем его активным
uidoc.ActiveView=sheet as View;
ICollection<ElementId> na = new List<ElementId>();
na.Add(sheet.Id);
//Создаем фильтр по виду
ElementOwnerViewFilter bbf = new ElementOwnerViewFilter(sheet.Id);
//Создаем фильтр исключения чтобы в набор удаления не попал сам вид
ExclusionFilter noView= new ExclusionFilter(na);
LogicalAndFilter summFilter = new LogicalAndFilter(bbf,noView);
//Фильтры исключения не сработали поэтому я вручную прописал что название вида не должно быть таким, и некий элемент ExtentElem тоже мне не нужен, не зая правда что это
IEnumerable<Element> elem=new FilteredElementCollector(doc).WherePasses(summFilter).Where(a=>a.Name!="Ведомость деталей").Where(a=>a.Name!="ExtentElem");
using (Transaction t = new Transaction(doc, "Delete element"))
{
t.Start();
foreach (Element e in elem) {
ElementId id = e.Id;
//Собственно сама ошибка вылезает тут
doc.Delete(id);
}
t.Commit();
}