CreateSchedule Method (Document, ElementId, ElementId)


Creates a regular schedule that can relate to a specific area scheme.

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

Syntax

C#
public static ViewSchedule CreateSchedule(
	Document document,
	ElementId categoryId,
	ElementId areaSchemeId
)
Visual Basic
Public Shared Function CreateSchedule ( _
	document As Document, _
	categoryId As ElementId, _
	areaSchemeId As ElementId _
) As ViewSchedule
Visual C++
public:
static ViewSchedule^ CreateSchedule(
	Document^ document, 
	ElementId^ categoryId, 
	ElementId^ areaSchemeId
)

Parameters

document
Type: Autodesk.Revit.DB Document
The document to which the new schedule will be added.
categoryId
Type: Autodesk.Revit.DB ElementId
The ID of the category whose elements will be included in the schedule, or InvalidElementId for a multi-category schedule.
areaSchemeId
Type: Autodesk.Revit.DB ElementId
The ID of an area scheme in an area schedule, InvalidElementId otherwise.

Return Value

The newly created schedule.

Examples

Copy C#
ViewSchedule areaSchedule = null;

using (Transaction transaction = new Transaction(doc, "Creating Schedule"))
{
    transaction.Start();

    FilteredElementCollector collector = new FilteredElementCollector(doc);
    collector.OfCategory(BuiltInCategory.OST_AreaSchemes);
    //Get first ElementId of AreaScheme.
    ElementId areaSchemeId = collector.FirstElementId();
    if (areaSchemeId != null && areaSchemeId != ElementId.InvalidElementId)
    {
        // If you want to create an area schedule, you must use CreateSchedule method with three arguments. 
        // The value of the second argument must be ElementId of BuiltInCategory.OST_Areas category
        // and the value of third argument must be ElementId of an AreaScheme.
        areaSchedule = Autodesk.Revit.DB.ViewSchedule.CreateSchedule(doc, new ElementId(BuiltInCategory.OST_Areas), areaSchemeId);
    }
    if (null != areaSchedule)
    {
        transaction.Commit();
    }
    else
    {
        transaction.RollBack();
    }
}
Copy VB.NET
Dim areaSchedule As ViewSchedule = Nothing

Using transaction As New Transaction(doc, "Creating Schedule")
    transaction.Start()

    Dim collector As New FilteredElementCollector(doc)
    collector.OfCategory(BuiltInCategory.OST_AreaSchemes)
    'Get first ElementId of AreaScheme.
    Dim areaSchemeId As ElementId = collector.FirstElementId()
    If areaSchemeId IsNot Nothing AndAlso areaSchemeId <> ElementId.InvalidElementId Then
        ' If you want to create an area schedule, you must use CreateSchedule method with three arguments. 
        ' The value of the second argument must be ElementId of BuiltInCategory.OST_Areas category
        ' and the value of third argument must be ElementId of an AreaScheme.
        areaSchedule = Autodesk.Revit.DB.ViewSchedule.CreateSchedule(doc, New ElementId(BuiltInCategory.OST_Areas), areaSchemeId)
    End If
    If areaSchedule IsNot Nothing Then
        transaction.Commit()
    Else
        transaction.RollBack()
    End If
End Using

Exceptions

Exception Condition
Autodesk.Revit.Exceptions ArgumentException document is not a project document. -or- categoryId is not a valid category for a regular schedule. -or- In a non-area schedule, areaSchemeId is not InvalidElementId. -or- In an area schedule, areaSchemeId is not the ID of an area scheme.
Autodesk.Revit.Exceptions ArgumentNullException A non-optional argument was NULL
Autodesk.Revit.Exceptions ModificationForbiddenException The document is in failure mode: an operation has failed, and Revit requires the user to either cancel the operation or fix the problem (usually by deleting certain elements). -or- The document is being loaded, or is in the midst of another sensitive process.
Autodesk.Revit.Exceptions ModificationOutsideTransactionException The document has no open transaction.

See Also

ArchiLabs

Stop fighting Revit automation.

Build repeatable BIM design and documentation workflows with scripts, data, and AI in one place, without wrestling brittle one-off automations.

Try ArchiLabs →