获得当前视图的所有过滤器
ICollection collection = doc.ActiveView.GetFilters();
获得每个过滤器的名字
for (int i = 0; i < collection.Count; i++)
{
FilterElement filter = doc.GetElement(collection.ElementAt(i)) as FilterElement;
MessageBox.Show(filter.Name);
}
当前视图添加过滤器
doc.ActiveView.AddFilter(filter.Id);
当前视图删除过滤器
doc.ActiveView.RemoveFilter(filter.Id);
当前视图隐藏或显示过滤器
doc.ActiveView.SetFilterVisibility(filter.Id,false);
doc.ActiveView.SetFilterVisibility(filter.Id,true);
当前视图创建一个新的过滤器 "门集合"
UIDocument uidoc = commandData.Application.ActiveUIDocument;
Document doc = uidoc.Document;
Autodesk.Revit.DB.View view = doc.ActiveView;
using (Transaction t = new Transaction(doc, "Create Door Filter"))
{
t.Start();
IList tagIds = new FilteredElementCollector(doc).OfClass(typeof(FamilyInstance)).OfCategory(BuiltInCategory.OST_Doors).ToElementIds().ToList();
SelectionFilterElement filterElement = SelectionFilterElement.Create(doc, "门集合");
filterElement.SetElementIds(tagIds);
ElementId filterId = filterElement.Id;
view.AddFilter(filterId);
doc.Regenerate();
OverrideGraphicSettings overrideSettings = view.GetFilterOverrides(filterId);
overrideSettings.SetProjectionLineColor(new Autodesk.Revit.DB.Color(255, 0, 0));
view.SetFilterOverrides(filterId, overrideSettings);
t.Commit();
}
return Result.Succeeded;