Adds a new filter at the end of the list.
Namespace: Autodesk.Revit.DBAssembly: RevitAPI (in RevitAPI.dll) Version: 21.0.0.0 (21.1.1.109)
Since:
2013
Syntax
Examples
CopyC#
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;
}
CopyVB.NET
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
Exceptions
See Also