Automatically creates new railings with the specified railing type on all sides of a stairs or ramp element.
Namespace: Autodesk.Revit.DB.ArchitectureAssembly: RevitAPI (in RevitAPI.dll) Version: 21.0.0.0 (21.1.1.109)
Since: 2013
Syntax
C# |
---|
public static ICollection<ElementId> Create( Document document, ElementId stairsOrRampId, ElementId railingTypeId, RailingPlacementPosition placePosition ) |
Visual Basic |
---|
Public Shared Function Create ( _ document As Document, _ stairsOrRampId As ElementId, _ railingTypeId As ElementId, _ placePosition As RailingPlacementPosition _ ) As ICollection(Of ElementId) |
Visual C++ |
---|
public: static ICollection<ElementId^>^ Create( Document^ document, ElementId^ stairsOrRampId, ElementId^ railingTypeId, RailingPlacementPosition placePosition ) |
Parameters
- document
- Type: Autodesk.Revit.DB..::..Document
The document.
- stairsOrRampId
- Type: Autodesk.Revit.DB..::..ElementId
The stairs or ramp to which the new railing will host. The stairs or ramp should have no associated railings yet. If the stairs are a part of MultistoryStairs element railings will be populated on all levels.
- railingTypeId
- Type: Autodesk.Revit.DB..::..ElementId
The railing type of the new railing to be created.
- placePosition
- Type: Autodesk.Revit.DB.Architecture..::..RailingPlacementPosition
The placement position of the new railing.
Return Value
The new railing instances successfully created on the stairs.
Examples

private void CreateRailing(Document document, Stairs stairs) { using (Transaction trans = new Transaction(document, "Create Railings")) { trans.Start(); // Delete existing railings ICollection<ElementId> railingIds = stairs.GetAssociatedRailings(); foreach (ElementId railingId in railingIds) { document.Delete(railingId); } // Find RailingType FilteredElementCollector collector = new FilteredElementCollector(document); ICollection<ElementId> RailingTypeIds = collector.OfClass(typeof(RailingType)).ToElementIds(); Railing.Create(document, stairs.Id, RailingTypeIds.First(), RailingPlacementPosition.Treads); trans.Commit(); } }

Private Sub CreateRailing(document As Document, stairs As Stairs) Using trans As New Transaction(document, "Create Railings") trans.Start() ' Delete existing railings Dim railingIds As ICollection(Of ElementId) = stairs.GetAssociatedRailings() For Each railingId As ElementId In railingIds document.Delete(railingId) Next ' Find RailingType Dim collector As New FilteredElementCollector(document) Dim RailingTypeIds As ICollection(Of ElementId) = collector.OfClass(GetType(RailingType)).ToElementIds() Railing.Create(document, stairs.Id, RailingTypeIds.First(), RailingPlacementPosition.Treads) trans.Commit() End Using End Sub
Exceptions
Exception | Condition |
---|---|
Autodesk.Revit.Exceptions..::..ArgumentException | The stairsOrRampId is not a stairs or ramp element. -or- The railingTypeId is not a railing type. |
Autodesk.Revit.Exceptions..::..ArgumentNullException | A non-optional argument was NULL |
Autodesk.Revit.Exceptions..::..ArgumentOutOfRangeException | A value passed for an enumeration argument is not a member of that enumeration |
Autodesk.Revit.Exceptions..::..InvalidOperationException | The stairsOrRampId already has associated railings or is in editing mode so association of railings is not permitted. |
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. |