
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
I am trying to add filter to views. After I create the filter and add it to one view, I don't know how to add it
to the other views.
I tried to isolate the Creation in a try Catch but I still need "parameterFilterElement" to use.
How can I add the same filter to other views?
Thanks
private void CreateViewFilter( View view,string property, string filterName, string value, Color colo)
{
var col = new FilteredElementCollector(doc);
var elems = col.OfClass(typeof(FillPatternElement));
string dx = "";
ElementId xx = null;
foreach(Element i in elems)
{
dx += i.Name+" "+i.Id+"\n";
if (i.Name == "Solid fill")
xx = i.Id;
}
// TaskDialog.Show("pattern", dx);
List<ElementId> categories = new List<ElementId>();
categories.Add(new ElementId(BuiltInCategory.OST_Walls));
Transaction colorIt = new Transaction(doc, "the elements");
ParameterFilterElement parameterFilterElement=null;
colorIt.Start();
try
{
parameterFilterElement = ParameterFilterElement.Create(doc, filterName, categories);
}
catch(Exception ex)
{
TaskDialog.Show("Info", "Filter is already created ");
}
FilteredElementCollector parameterCollector = new FilteredElementCollector(doc);
Parameter parameter = parameterCollector.OfClass(typeof(Wall)).FirstElement().LookupParameter(property);
List<FilterRule> filterRules = new List<FilterRule>();
filterRules.Add(ParameterFilterRuleFactory.CreateEqualsRule(parameter.Id, value, true));
parameterFilterElement.SetRules(filterRules);
OverrideGraphicSettings filterSettings = new OverrideGraphicSettings();
filterSettings.SetCutFillColor(colo);
filterSettings.SetCutFillPatternId(xx);
view.SetFilterOverrides(parameterFilterElement.Id, filterSettings);
//
colorIt.Commit();
}
Solved! Go to Solution.