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)

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