Exemplo n.º 1
0
        private void CreateFilterForPipeSystem(Document doc, Element sysNameParam, string systemName)
        {
            using var tr = new Transaction(doc, "Создание фильтра для: " + systemName);
            tr.Start();
            var view       = _uiDoc.ActiveView;
            var categories = new List <ElementId>
            {
                new ElementId(BuiltInCategory.OST_PipeAccessory),
                new ElementId(BuiltInCategory.OST_PipeCurves),
                new ElementId(BuiltInCategory.OST_PipeFitting),
                new ElementId(BuiltInCategory.OST_PipeInsulations),
                new ElementId(BuiltInCategory.OST_PlumbingFixtures),
                new ElementId(BuiltInCategory.OST_FlexPipeCurves),
                new ElementId(BuiltInCategory.OST_PlaceHolderPipes),
                new ElementId(BuiltInCategory.OST_GenericModel),
                new ElementId(BuiltInCategory.OST_MechanicalEquipment),
                new ElementId(BuiltInCategory.OST_Sprinklers)
            };
            var rule = ParameterFilterRuleFactory.CreateNotContainsRule(sysNameParam.Id, systemName, true);
            var epf  = new ElementParameterFilter(rule);
            var ef   = (ElementFilter)epf;
            ParameterFilterElement filter;

            try
            {
                filter = ParameterFilterElement.Create(doc, "ADSK_Трубопровод_" + systemName, categories, ef);
            }
            catch (ArgumentException)
            {
                var filter1 = new FilteredElementCollector(doc)
                              .OfClass(typeof(ParameterFilterElement))
                              .FirstOrDefault(f => f.Name == "ADSK_Трубопровод_" + systemName);
                filter = filter1 as ParameterFilterElement;
                filter?.SetElementFilter(ef);
            }

            var eView = new FilteredElementCollector(doc)
                        .OfClass(typeof(View))
                        .WhereElementIsNotElementType()
                        .FirstOrDefault(v => v.Name == $"{view.Name}_{systemName}");

            if (null == eView)
            {
                var copyViewId = view.Duplicate(ViewDuplicateOption.Duplicate);
                if (doc.GetElement(copyViewId) is View copiedView)
                {
                    copiedView.Name = $"{view.Name}_{systemName}";
                    if (filter != null)
                    {
                        copiedView.AddFilter(filter.Id);
                        copiedView.SetFilterVisibility(filter.Id, false);
                    }
                }
            }

            tr.Commit();
        }
Exemplo n.º 2
0
        private static IList <ViewSchedule> GetAllSchedules(Document doc)
        {
            ElementParameterFilter elemNameFilter =
                new ElementParameterFilter(ParameterFilterRuleFactory
                                           .CreateNotContainsRule(new ElementId(BuiltInParameter.VIEW_NAME),
                                                                  "<Revision Schedule>", false));

            return(new FilteredElementCollector(doc)
                   .OfClass(typeof(ViewSchedule))
                   .WhereElementIsNotElementType()
                   .WherePasses(elemNameFilter)
                   .Cast <ViewSchedule>()
                   .ToList()
                   .OrderBy(s => s.Name)
                   .ToList());
        }
Exemplo n.º 3
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);
            }
        }
Exemplo n.º 4
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);
        }