Share

ScheduleDefinition.AddField(SchedulableField) Method

Adds a regular field at the end of the list.


Namespace: Autodesk.Revit.DB
Assembly: RevitAPI (in RevitAPI.dll) Version: 26.3.0.0 (26.3.0.0)

Syntax

C#

public ScheduleField AddField(
	SchedulableField schedulableField
)

Parameters

schedulableField  SchedulableField
A SchedulableField object representing the field.

Return Value

ScheduleField
The new field.

Exceptions

ExceptionCondition
ArgumentException The field specified by schedulableField may not included in this ScheduleDefinition. -or- The field specified by schedulableField is already included in this ScheduleDefinition.
ArgumentNullException A non-optional argument was null

Example

C#

/// <summary>
/// Add fields to view schedule.
/// </summary>
/// <param name="schedules">List of view schedule.</param>
public void AddFieldToSchedule(Document document, List<ViewSchedule> schedules)
{
    using (Transaction transaction = new Transaction(document, "Adding fields to schedule"))
    {
        transaction.Start();

        foreach (ViewSchedule vs in schedules)
        {
           //Get all schedulable fields from view schedule definition.
           IList<SchedulableField> schedulableFields = vs.Definition.GetSchedulableFields();

           foreach (SchedulableField sf in schedulableFields)
           {
               bool fieldAlreadyAdded = false;
               //Get all schedule field ids
               IList<ScheduleFieldId> ids = vs.Definition.GetFieldOrder();
               foreach (ScheduleFieldId id in ids)
               {
                   // If the GetSchedulableField() method of gotten schedule field returns same
                   // schedulable field, it means the field is already added to the view schedule.
                   if (vs.Definition.GetField(id).GetSchedulableField() == sf)
                   {
                       fieldAlreadyAdded = true;
                       break;
                   }
               }

               //If schedulable field doesn't exist in view schedule, add it.
               if (fieldAlreadyAdded == false)
               {
                   vs.Definition.AddField(sf);
               }
           }
        }

        transaction.Commit();
    }   
}

VB

' <summary>
' Add fields to view schedule.
' </summary>
' <param name="schedules">List of view schedule.</param>
Public Sub AddFieldToSchedule(document As Document, schedules As List(Of ViewSchedule))
    Using transaction As New Transaction(document, "Adding fields to schedule")
        transaction.Start()

        For Each vs As ViewSchedule In schedules
            'Get all schedulable fields from view schedule definition.
            Dim schedulableFields As IList(Of SchedulableField) = vs.Definition.GetSchedulableFields()

            For Each sf As SchedulableField In schedulableFields
                Dim fieldAlreadyAdded As Boolean = False
                'Get all schedule field ids
                Dim ids As IList(Of ScheduleFieldId) = vs.Definition.GetFieldOrder()
                For Each id As ScheduleFieldId In ids
                    ' If the GetSchedulableField() method of gotten schedule field returns same
                    ' schedulable field, it means the field is already added to the view schedule.
                    If vs.Definition.GetField(id).GetSchedulableField() = sf Then
                        fieldAlreadyAdded = True
                        Exit For
                    End If
                Next

                'If schedulable field doesn't exist in view schedule, add it.
                If fieldAlreadyAdded = False Then
                    vs.Definition.AddField(sf)
                End If
            Next
        Next

        transaction.Commit()
    End Using
End Sub

See Also

Reference

Was this information helpful?