AddField Method (SchedulableField)


Adds a regular field at the end of the list.

Namespace: Autodesk.Revit.DB
Assembly: RevitAPI (in RevitAPI.dll) Version: 2015.0.0.0 (2015.0.0.0)
Since: 2013

Syntax

C#
public ScheduleField AddField(
	SchedulableField schedulableField
)
Visual Basic
Public Function AddField ( _
	schedulableField As SchedulableField _
) As ScheduleField
Visual C++
public:
ScheduleField^ AddField(
	SchedulableField^ schedulableField
)

Parameters

schedulableField
Type: Autodesk.Revit.DB SchedulableField
A SchedulableField object representing the field.

Return Value

The new field.

Examples

Copy 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();
    }   
}
Copy VB.NET
' <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

Exceptions

Exception Condition
Autodesk.Revit.Exceptions ArgumentException The field specified by schedulableField may not included in this ScheduleDefinition. -or- The field specified by schedulableField is already included in this ScheduleDefinition.
Autodesk.Revit.Exceptions ArgumentNullException A non-optional argument was NULL

See Also