Revit 2025 API
Schedule |
Adds a new filter at the end of the list.
Namespace: Autodesk.Revit.DB
Assembly: RevitAPI (in RevitAPI.dll) Version: 25.0.0.0 (25.0.0.0)
Syntax
public void AddFilter( ScheduleFilter filter )
Public Sub AddFilter ( filter As ScheduleFilter )
public: void AddFilter( ScheduleFilter^ filter )
member AddFilter : filter : ScheduleFilter -> unit
Parameters
- filter ScheduleFilter
- The filter to add.
| 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. |
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; }
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
No code example is currently available or this language may not be supported.
No code example is currently available or this language may not be supported.
See Also