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); }
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!"); }