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(); }
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()); }
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); } }
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); }