View filters are divided into rule filters and selection filters:
Selection filter: Need to pass in elementId list to operate on specified Element
Rule filter: Through rule description of specified parameters, pass in categories Id for operation
Specifics can refer to API

—update—
2019 API deleted SET* command and model color specification method. Color attachment not tested, need to verify by yourself

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#if Revit2016
var filterElement = ParameterFilterElement.Create(document, name, categeorys);
filterElement.SetRules(filterRules);
view.AddFilter(filterElement.Id);
document.Regenerate();
var overrideSettings = view.GetFilterOverrides(filterElement.Id);
//Join break node, judge net height value and perform color attachment
overrideSettings.SetProjectionFillColor(GetDBColorFromMediaColor(dictionary.Values.ElementAt(i)));
overrideSettings.SetProjectionFillPatternId(PatternId(document));
view.SetFilterOverrides(filterElement.Id, overrideSettings);
view.SetFilterVisibility(filterElement.Id, true);
filterRules.Clear();
#elif Revit2019
var elemParamFilter = new ElementParameterFilter(filterRules);
var parameterFilter = ParameterFilterElement.Create(document, name, categeorys);
parameterFilter.SetElementFilter(elemParamFilter);
view.AddFilter(parameterFilter.Id);
document.Regenerate();
var overrideSettings = view.GetFilterOverrides(parameterFilter.Id);
//Join break node, judge net height value and perform color attachment
overrideSettings.SetSurfaceForegroundPatternColor(GetDBColorFromMediaColor(dictionary.Values.ElementAt(i)));
overrideSettings.SetSurfaceForegroundPatternId(PatternId(document));
view.SetFilterOverrides(parameterFilter.Id, overrideSettings);
view.SetFilterVisibility(parameterFilter.Id, true);
filterRules.Clear();
#endif

In general projects, if adding filter only need to use SelectionFilterElement command can add successfully. When we operate on linked model, because the extracted List values are ID values in the linked model, it has no effect on main project document. At this time we need to use rule filter ParameterFilterElement to add, by attaching filters through rule description of parameters.

The following example is a case where custom value in linked model is >=Value&&<Value

if (!maxValue.Equals(minValue))
                    {
                        filterRules.Add(
                            ParameterFilterRuleFactory.CreateGreaterOrEqualRule(id, minValue, false));
                        filterRules.Add(ParameterFilterRuleFactory.CreateLessRule(id, maxValue, false));
                    }
                    else
                    {
                        filterRules.Add(
                            ParameterFilterRuleFactory.CreateEqualsRule(id, maxValue, false));
                    }
                    ParameterFilterElement filterElement = ParameterFilterElement.Create(document, name, categeorys);
                    filterElement.SetRules(filterRules);
                    view.AddFilter(filterElement.Id);
                    document.Regenerate();
                    OverrideGraphicSettings overrideSettings = view.GetFilterOverrides(filterElement.Id);
                    overrideSettings.SetProjectionFillColor(GetDBColorFromMediaColor(dictionary.Values.ElementAt(i)));
                    overrideSettings.SetProjectionFillPatternId(PatternId(document));
                    view.SetFilterOverrides(filterElement.Id, overrideSettings);
                    view.SetFilterVisibility(filterElement.Id, true);
                    filterRules.Clear();

In this way we can perform attach filter operation on linked model.

Reprint please indicate address: https://mp.csdn.net/mdeditor/89888384#