CreateFilterRuleBuilder() 공개 정적인 메소드

Convert FilterRule to our custom FilterRuleBuilder which will be displayed in form controls
public static CreateFilterRuleBuilder ( BuiltInParameter param, FilterRule rule ) : FilterRuleBuilder
param BuiltInParameter Parameter to which the FilterRule is applied.
rule FilterRule FilterRule to be converted.
리턴 FilterRuleBuilder
        /// <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);
            }
        }
예제 #2
0
        /// <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);
            }
        }