public static Element FindPanelSchedule(Document doc, string fieldName, string value) { var rule = ParameterFilterRuleFactory.CreateContainsRule(new ElementId(BuiltInParameter.PANEL_SCHEDULE_NAME), value, false); var filter = new ElementParameterFilter(rule); var items = new FilteredElementCollector(doc) .OfCategory(BuiltInCategory.OST_ElectricalEquipment) .ToElements() .Where(e => e.Name.ToLower().Equals(value.ToLower())) .ToArray(); //foreach (var e in items) //{ // var name = e.LookupParameter("Panel Schedule Name"); // var panelNameParameter = e.GetOrderedParameters().FirstOrDefault(p => p.Definition.Name.Equals("Panel Schedule Name")); //} //var items = new FilteredElementCollector(doc) // .OfCategory(BuiltInCategory.OST_ElectricalEquipment) // .WherePasses(filter) // .ToElements(); return(FilterElements(items, value, fieldName)); }
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { // get UIdocument UIDocument uidoc = commandData.Application.ActiveUIDocument; //get document Document doc = uidoc.Document; //create filter List <ElementId> cats = new List <ElementId>(); cats.Add(new ElementId(BuiltInCategory.OST_Sections)); ElementParameterFilter filter = new ElementParameterFilter(ParameterFilterRuleFactory.CreateContainsRule(new ElementId(BuiltInParameter.VIEW_NAME), "wip", false)); try { using (Transaction trans = new Transaction(doc, "create plan view")) { trans.Start(); //apply filter ParameterFilterElement filterElement = ParameterFilterElement.Create(doc, "My First Filter", cats, filter); doc.ActiveView.AddFilter(filterElement.Id); doc.ActiveView.SetFilterVisibility(filterElement.Id, false); trans.Commit(); } return(Result.Succeeded); } catch (Exception e) { message = e.Message; return(Result.Failed); } }
public void CreateFilterRule3dGrid(Document doc, out ParameterFilterElement parameterFilterElement) { if (CheckFilter(doc, out parameterFilterElement)) { } else { List <ElementId> categories = new List <ElementId>(); categories.Add(new ElementId(BuiltInCategory.OST_GenericModel)); List <FilterRule> filterRules = new List <FilterRule>(); // Create filter element assocated to the input categories parameterFilterElement = ParameterFilterElement.Create(doc, "Grid 3D", categories); var collector = (from x in new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_GenericModel).OfClass(typeof(FamilyInstance)).Cast <FamilyInstance>() where x.Name.Contains("650mm Bubble - Single") select x).ToList(); FamilyInstance familyInstance = collector.First(); if (familyInstance != null) { ElementId sharedParamId = familyInstance.get_Parameter(BuiltInParameter.ALL_MODEL_FAMILY_NAME).Id; filterRules.Add(ParameterFilterRuleFactory.CreateContainsRule(sharedParamId, "3D Grid", true)); } parameterFilterElement.SetRules(filterRules); // Apply filter to view //doc.ActiveView.AddFilter(parameterFilterElement.Id); //doc.ActiveView.SetFilterVisibility(parameterFilterElement.Id, false); } }
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); } }
protected override Result ProcessCommand(ExternalCommandData commandData, ref string message, ElementSet elements) { // Create Category var cats = new List <ElementId>(); cats.Add(new ElementId(BuiltInCategory.OST_Sections)); var sectionFilter = ParameterFilterRuleFactory.CreateContainsRule(new ElementId(BuiltInParameter.VIEW_NAME), "Section 1", false); var elementFilter = new ElementParameterFilter(sectionFilter); using (Transaction trans = new Transaction(_activeDocument, "Create Filter")) { trans.Start(); var filter = ParameterFilterElement.Create(_activeDocument, "Wall Filter", cats, elementFilter); _activeDocument.ActiveView.AddFilter(filter.Id); _activeDocument.ActiveView.SetFilterVisibility(filter.Id, false); trans.Commit(); } return(Result.Succeeded); }
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); }