Adds a new filter at the end of the list.
Namespace: Autodesk.Revit.DBAssembly: 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)
{
ScheduleDefinition definition = schedule.Definition;
ScheduleField levelField = FindField(schedule, BuiltInParameter.ROOM_LEVEL_ID);
using (Transaction t = new Transaction(schedule.Document, "Add filter"))
{
t.Start();
if (levelField == null)
{
levelField = definition.AddField(ScheduleFieldType.Instance, new ElementId(BuiltInParameter.ROOM_LEVEL_ID));
}
levelField.IsHidden = true;
ScheduleFilter filter = new ScheduleFilter(levelField.FieldId, ScheduleFilterType.Equal, levelId);
definition.AddFilter(filter);
t.Commit();
}
}
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)
Dim definition As ScheduleDefinition = schedule.Definition
Dim levelField As ScheduleField = FindField(schedule, BuiltInParameter.ROOM_LEVEL_ID)
Using t As New Transaction(schedule.Document, "Add filter")
t.Start()
If levelField Is Nothing Then
levelField = definition.AddField(ScheduleFieldType.Instance, New ElementId(BuiltInParameter.ROOM_LEVEL_ID))
End If
levelField.IsHidden = True
Dim filter As New ScheduleFilter(levelField.FieldId, ScheduleFilterType.Equal, levelId)
definition.AddFilter(filter)
t.Commit()
End Using
End Sub
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
See Also
Reference