public static CreateFilterRuleBuilder ( BuiltInParameter param, FilterRule rule ) : |
||
param | BuiltInParameter | Parameter to which the FilterRule is applied. |
rule | FilterRule | FilterRule to be converted. |
리턴 |
/// <summary> /// Initialize filter data with existing view filters /// </summary> void InitializeFilterData() { // Get all existing filters ICollection <ParameterFilterElement> filters = FiltersUtil.GetViewFilters(m_doc); foreach (ParameterFilterElement filter in filters) { // Get all data of the current filter and create my FilterData ICollection <ElementId> catIds = filter.GetCategories(); // Get the ElementFilter representing the set of FilterRules. ElementFilter elemFilter = filter.GetElementFilter(); // Check that the ElementFilter represents a conjunction of ElementFilters. // We will then check that each child ElementFilter contains just one FilterRule. IList <FilterRule> filterRules = FiltersUtil.GetConjunctionOfFilterRulesFromElementFilter(elemFilter); int numFilterRules = filterRules.Count; if (0 == numFilterRules) { return; // Error } // Create filter rule data now List <FilterRuleBuilder> ruleDataSet = new List <FilterRuleBuilder>(); foreach (FilterRule filterRule in filterRules) { ElementId paramId = filterRule.GetRuleParameter(); int parameterIdAsInt = paramId.IntegerValue; BuiltInParameter bip = (BuiltInParameter)parameterIdAsInt; FilterRuleBuilder ruleData = FiltersUtil.CreateFilterRuleBuilder(bip, filterRule); ruleDataSet.Add(ruleData); } // // Create Filter data FilterData filterData = new FilterData(m_doc, catIds, ruleDataSet); m_dictFilters.Add(filter.Name, filterData); // // also add to control filtersListBox.Items.Add(filter.Name); } }
/// <summary> /// Initialize filter data with existing view filters /// </summary> void InitializeFilterData() { // Get all existing filters ICollection <ParameterFilterElement> filters = FiltersUtil.GetViewFilters(m_doc); foreach (ParameterFilterElement filter in filters) { // get all data of current filter and create my FilterData ICollection <ElementId> catIds = filter.GetCategories(); ICollection <ElementId> paramIds = filter.GetRuleParameters(); ICollection <FilterRule> rules = filter.GetRules(); if (paramIds.Count != rules.Count) { return; } // // create filter rule data now List <FilterRuleBuilder> ruleDataSet = new List <FilterRuleBuilder>(); IEnumerator <ElementId> paramIter = paramIds.GetEnumerator(); paramIter.Reset(); foreach (FilterRule rule in rules) { paramIter.MoveNext(); FilterRuleBuilder ruleData = FiltersUtil.CreateFilterRuleBuilder( (BuiltInParameter)paramIter.Current.IntegerValue, rule); ruleDataSet.Add(ruleData); } // // Create Filter data FilterData filterData = new FilterData(m_doc, catIds, ruleDataSet); m_dictFilters.Add(filter.Name, filterData); // // also add to control filtersListBox.Items.Add(filter.Name); } }