Adds a new filter at the end of the list.
Namespace: Autodesk.Revit.DB
Assembly: RevitAPI (in RevitAPI.dll) Version: 26.4.0.0 (26.4.0.0)
Syntax
C#
public void AddFilter( ScheduleFilter filter )
Parameters
- filter ScheduleFilter
- The filter to add.
Exceptions
| Exception | Condition |
|---|---|
| ArgumentException | The field ID is not the ID of a field in this ScheduleDefinition. -or- The field and filter type cannot be used to filter this ScheduleDefinition. -or- The filter value is not valid for the field and filter type. |
| ArgumentNullException | A non-optional argument was null |
| InvalidOperationException | This ScheduleDefinition does not support filters. -or- The resulting filter count would be greater than 8. |
Example
C#
public static void AddFilterToSchedule(ViewSchedule schedule, ElementId levelId) { // Find level field ScheduleDefinition definition = schedule.Definition; ScheduleField levelField = FindField(schedule, BuiltInParameter.ROOM_LEVEL_ID); // Add filter using (Transaction t = new Transaction(schedule.Document, "Add filter")) { t.Start(); // If field not present, add it if (levelField == null) { levelField = definition.AddField(ScheduleFieldType.Instance, new ElementId(BuiltInParameter.ROOM_LEVEL_ID)); } // Set field to hidden levelField.IsHidden = true; ScheduleFilter filter = new ScheduleFilter(levelField.FieldId, ScheduleFilterType.Equal, levelId); definition.AddFilter(filter); t.Commit(); } } /// <summary> /// Finds an existing ScheduleField matching the given parameter /// </summary> /// <param name="schedule"></param> /// <param name="paramEnum"></param> /// <returns></returns> public static ScheduleField FindField(ViewSchedule schedule, BuiltInParameter paramEnum) { ScheduleDefinition definition = schedule.Definition; ScheduleField foundField = null; ElementId paramId = new ElementId(paramEnum); foreach (ScheduleFieldId fieldId in definition.GetFieldOrder()) { foundField = definition.GetField(fieldId); if (foundField.ParameterId == paramId) { return foundField; } } return null; }
VB
Public Shared Sub AddFilterToSchedule(schedule As ViewSchedule, levelId As ElementId) ' Find level field Dim definition As ScheduleDefinition = schedule.Definition Dim levelField As ScheduleField = FindField(schedule, BuiltInParameter.ROOM_LEVEL_ID) ' Add filter Using t As New Transaction(schedule.Document, "Add filter") t.Start() ' If field not present, add it If levelField Is Nothing Then levelField = definition.AddField(ScheduleFieldType.Instance, New ElementId(BuiltInParameter.ROOM_LEVEL_ID)) End If ' Set field to hidden levelField.IsHidden = True Dim filter As New ScheduleFilter(levelField.FieldId, ScheduleFilterType.Equal, levelId) definition.AddFilter(filter) t.Commit() End Using End Sub ' <summary> ' Finds an existing ScheduleField matching the given parameter ' </summary> ' <param name="schedule"></param> ' <param name="paramEnum"></param> ' <returns></returns> Public Shared Function FindField(schedule As ViewSchedule, paramEnum As BuiltInParameter) As ScheduleField Dim definition As ScheduleDefinition = schedule.Definition Dim foundField As ScheduleField = Nothing Dim paramId As New ElementId(paramEnum) For Each fieldId As ScheduleFieldId In definition.GetFieldOrder() foundField = definition.GetField(fieldId) If foundField.ParameterId = paramId Then Return foundField End If Next Return Nothing End Function
