ScheduleDefinitionAddFilter Method |
Adds a new filter at the end of the list.
Namespace: Autodesk.Revit.DBAssembly: RevitAPI (in RevitAPI.dll) Version: 25.0.0.0 (25.0.0.0)
Syntaxpublic 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.
ExceptionsException | 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.
|
Examplepublic 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;
}
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
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