Пример #1
0
        private static FilterRule CreateRule(ElementId ParameterId, string Function, string Value)
        {
            switch (Function)
            {
            case "Равно":
                return(ParameterFilterRuleFactory.CreateEqualsRule(ParameterId, Value, true));

            case "Не равно":
                return(ParameterFilterRuleFactory.CreateNotEqualsRule(ParameterId, Value, true));

            case "Больше":
                return(ParameterFilterRuleFactory.CreateGreaterRule(ParameterId, Value, true));

            case "Больше или равно":
                return(ParameterFilterRuleFactory.CreateLessOrEqualRule(ParameterId, Value, true));

            case "Меньше":
                return(ParameterFilterRuleFactory.CreateLessRule(ParameterId, Value, true));

            case "Меньше или равно":
                return(ParameterFilterRuleFactory.CreateLessOrEqualRule(ParameterId, Value, true));

            case "Содержит":
                return(ParameterFilterRuleFactory.CreateContainsRule(ParameterId, Value, true));

            case "Не содержит":
                return(ParameterFilterRuleFactory.CreateNotContainsRule(ParameterId, Value, true));

            case "Начинается с":
                return(ParameterFilterRuleFactory.CreateBeginsWithRule(ParameterId, Value, true));

            case "Не начинается с":
                return(ParameterFilterRuleFactory.CreateNotBeginsWithRule(ParameterId, Value, true));

            case "Заканчивается на":
                return(ParameterFilterRuleFactory.CreateEndsWithRule(ParameterId, Value, true));

            case "Не заканчивается на":
                return(ParameterFilterRuleFactory.CreateNotEndsWithRule(ParameterId, Value, true));

            case "Поддерживает":
                return(ParameterFilterRuleFactory.CreateSharedParameterApplicableRule(Value));

            default:
                return(null);
            }
        }
Пример #2
0
        public static Autodesk.Revit.DB.FilterRule GetStringRule(ElementId paramId, CriteriaName selectedCriteria, string ruleValue)
        {
            Autodesk.Revit.DB.FilterRule rule = null;
            try
            {
                switch (selectedCriteria)
                {
                case CriteriaName.beginswith:
                    rule = ParameterFilterRuleFactory.CreateBeginsWithRule(paramId, ruleValue, false);
                    break;

                case CriteriaName.contains:
                    rule = ParameterFilterRuleFactory.CreateContainsRule(paramId, ruleValue, false);
                    break;

                case CriteriaName.endswith:
                    rule = ParameterFilterRuleFactory.CreateEndsWithRule(paramId, ruleValue, false);
                    break;

                case CriteriaName.equals:
                    rule = ParameterFilterRuleFactory.CreateEqualsRule(paramId, ruleValue, false);
                    break;

                case CriteriaName.isgreaterthan:
                    rule = ParameterFilterRuleFactory.CreateGreaterRule(paramId, ruleValue, false);
                    break;

                case CriteriaName.isgreaterthanorequalto:
                    rule = ParameterFilterRuleFactory.CreateGreaterOrEqualRule(paramId, ruleValue, false);
                    break;

                case CriteriaName.islessthan:
                    rule = ParameterFilterRuleFactory.CreateLessRule(paramId, ruleValue, false);
                    break;

                case CriteriaName.islessthanorequalto:
                    rule = ParameterFilterRuleFactory.CreateLessOrEqualRule(paramId, ruleValue, false);
                    break;

                case CriteriaName.doesnotbeginwith:
                    rule = ParameterFilterRuleFactory.CreateNotBeginsWithRule(paramId, ruleValue, false);
                    break;

                case CriteriaName.doesnotcontain:
                    rule = ParameterFilterRuleFactory.CreateNotContainsRule(paramId, ruleValue, false);
                    break;

                case CriteriaName.doesnotendwith:
                    rule = ParameterFilterRuleFactory.CreateNotEndsWithRule(paramId, ruleValue, false);
                    break;

                case CriteriaName.doesnotequal:
                    rule = ParameterFilterRuleFactory.CreateNotEqualsRule(paramId, ruleValue, false);
                    break;
                }
            }
            catch (Exception ex)
            {
                System.Windows.MessageBox.Show("Failed to get string filter rule.\n" + ex.Message, "Get String Filter Rule", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
            return(rule);
        }
Пример #3
0
        public static String LinkLevelGrid(Boolean Hide = true)
        {
            String  ifilter    = "LinkLevelGrid_QuasarPackage";
            var     doc        = DocumentManager.Instance.CurrentDBDocument;
            var     activeView = doc.ActiveView;
            Boolean found      = false;
            Boolean hide       = Hide == true ? false : true;

            TransactionManager.Instance.EnsureInTransaction(doc);

            var allFilters = new FilteredElementCollector(doc).OfClass(typeof(FilterElement)).ToElements();

            var           viewFilters     = activeView.GetFilters();
            List <String> viewFiltersName = new List <String>();

            foreach (var v in viewFilters)
            {
                viewFiltersName.Add(doc.GetElement(v).Name.ToString());
            }

            foreach (var fter in allFilters)
            {
                if (ifilter == fter.Name.ToString() && !viewFiltersName.Contains(ifilter))
                {
                    activeView.AddFilter(fter.Id);
                    activeView.SetFilterVisibility(fter.Id, hide);
                    found = true;
                }
                if (ifilter == fter.Name.ToString() && viewFiltersName.Contains(ifilter))
                {
                    activeView.SetFilterVisibility(fter.Id, hide);
                    found = true;
                }
            }

            if (!found)
            {
                var grids   = new FilteredElementCollector(doc).OfClass(typeof(Autodesk.Revit.DB.Grid)).ToElements();
                var levels  = new FilteredElementCollector(doc).OfClass(typeof(Autodesk.Revit.DB.Level)).ToElements();
                var cateIds = new List <ElementId> {
                    grids.First().Category.Id, levels.First().Category.Id
                };
                var gridTypeIds  = new HashSet <ElementId>();
                var levelTypeIds = new HashSet <ElementId>();
                foreach (var i in grids.Zip(levels, Tuple.Create))
                {
                    gridTypeIds.Add(i.Item1.GetTypeId()); levelTypeIds.Add(i.Item2.GetTypeId());
                }

                var gtypeElements = new List <Autodesk.Revit.DB.Element>();
                var ltypeElements = new List <Autodesk.Revit.DB.Element>();
                foreach (var i in gridTypeIds.Zip(levelTypeIds, Tuple.Create))
                {
                    gtypeElements.Add(doc.GetElement(i.Item1)); ltypeElements.Add(doc.GetElement(i.Item2));
                }
                gtypeElements.AddRange(ltypeElements);

                foreach (var e in gtypeElements)
                {
                    if (!e.LookupParameter("Type Name").AsString().Contains("_quasar"))
                    {
                        e.Name = e.LookupParameter("Type Name").AsString() + "_quasar";
                    }
                }
                var paramId     = gtypeElements.First().LookupParameter("Type Name").Id;
                var ruleSet     = new List <FilterRule>();
                var notEndsWith = ParameterFilterRuleFactory.CreateNotEndsWithRule(paramId, "_quasar", false);
                ruleSet.Add(notEndsWith);
                var paramFilterElem = ParameterFilterElement.Create(doc, ifilter, cateIds, ruleSet);
                var ogs             = new OverrideGraphicSettings();
                activeView.SetFilterOverrides(paramFilterElem.Id, ogs);
                activeView.SetFilterVisibility(paramFilterElem.Id, hide);
            }
            TransactionManager.Instance.TransactionTaskDone();

            return("DONE!");
        }