Share

ViewSchedule.GroupHeaders Method

Groups schedule header cells.


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

Syntax

C#

public void GroupHeaders(
	int top,
	int left,
	int bottom,
	int right,
	string caption
)

Parameters

top  Int32
The index of the top row of the selected headers.
left  Int32
The index of the left column of the selected headers.
bottom  Int32
The index of the bottom row of the selected headers.
right  Int32
The index of the right column of the selected headers.
caption  String
The header caption.

Exceptions

ExceptionCondition
ArgumentException Headers could not be grouped.
ArgumentNullException A non-optional argument was null

Example

C#

public static void CreateSingleCategoryScheduleWithGroupedColumnHeaders(Document doc)
{
    using (Transaction t = new Transaction(doc, "Create single-category with grouped column headers"))
    {
        // Build the schedule
        t.Start();
        ViewSchedule vs = ViewSchedule.CreateSchedule(doc, new ElementId(BuiltInCategory.OST_Windows));

        AddRegularFieldToSchedule(vs, new ElementId(BuiltInParameter.WINDOW_HEIGHT));
        AddRegularFieldToSchedule(vs, new ElementId(BuiltInParameter.WINDOW_WIDTH));
        AddRegularFieldToSchedule(vs, new ElementId(BuiltInParameter.ALL_MODEL_MARK));
        AddRegularFieldToSchedule(vs, new ElementId(BuiltInParameter.ALL_MODEL_COST));

        doc.Regenerate();

        // Group the headers in the body section using ViewSchedule methods
        vs.GroupHeaders(0, 0, 0, 1, "Size");
        vs.GroupHeaders(0, 2, 0, 3, "Other");
        vs.GroupHeaders(0, 0, 0, 3, "All");

        t.Commit();
    }
}

/// <summary>
/// Adds a single parameter field to the schedule
/// </summary>
public static void AddRegularFieldToSchedule(ViewSchedule schedule, ElementId paramId)
{
    ScheduleDefinition definition = schedule.Definition;

    // Find a matching SchedulableField
    SchedulableField schedulableField =
        definition.GetSchedulableFields().FirstOrDefault<SchedulableField>(sf => sf.ParameterId == paramId);

    if (schedulableField != null)
    {
        // Add the found field
        definition.AddField(schedulableField);
    }
}

VB

Public Shared Sub CreateSingleCategoryScheduleWithGroupedColumnHeaders(doc As Document)
    Using t As New Transaction(doc, "Create single-category with grouped column headers")
        ' Build the schedule
        t.Start()
        Dim vs As ViewSchedule = ViewSchedule.CreateSchedule(doc, New ElementId(BuiltInCategory.OST_Windows))

        AddRegularFieldToSchedule(vs, New ElementId(BuiltInParameter.WINDOW_HEIGHT))
        AddRegularFieldToSchedule(vs, New ElementId(BuiltInParameter.WINDOW_WIDTH))
        AddRegularFieldToSchedule(vs, New ElementId(BuiltInParameter.ALL_MODEL_MARK))
        AddRegularFieldToSchedule(vs, New ElementId(BuiltInParameter.ALL_MODEL_COST))

        doc.Regenerate()

        ' Group the headers in the body section using ViewSchedule methods
        vs.GroupHeaders(0, 0, 0, 1, "Size")
        vs.GroupHeaders(0, 2, 0, 3, "Other")
        vs.GroupHeaders(0, 0, 0, 3, "All")

        t.Commit()
    End Using
End Sub

' <summary>
' Adds a single parameter field to the schedule
' </summary>
Public Shared Sub AddRegularFieldToSchedule(schedule As ViewSchedule, paramId As ElementId)
    Dim definition As ScheduleDefinition = schedule.Definition

    ' Find a matching SchedulableField
    Dim schedulableField As SchedulableField = definition.GetSchedulableFields().FirstOrDefault(Function(sf) sf.ParameterId = paramId)

    If schedulableField IsNot Nothing Then
        ' Add the found field
        definition.AddField(schedulableField)
    End If
End Sub

See Also

Reference

Was this information helpful?