Automatically creates new railings with the specified railing type on all sides of a stairs or ramp element.
Namespace: Autodesk.Revit.DB.Architecture
Assembly: RevitAPI (in RevitAPI.dll) Version: 26.1.0.0 (26.1.0.34)
Syntax
C#
public static ICollection<ElementId> Create( Document document, ElementId stairsOrRampId, ElementId railingTypeId, RailingPlacementPosition placePosition )
Parameters
- document Document
- The document.
- stairsOrRampId 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 ElementId
- The railing type of the new railing to be created.
- placePosition RailingPlacementPosition
- The placement position of the new railing.
Return Value
ICollection<ElementId>The new railing instances successfully created on the stairs.
Exceptions
Exception | Condition |
---|---|
ArgumentException | The stairsOrRampId is not a stairs or ramp element. -or- The railingTypeId is not a railing type. |
ArgumentNullException | A non-optional argument was null |
ArgumentOutOfRangeException | A value passed for an enumeration argument is not a member of that enumeration |
InvalidOperationException | The stairsOrRampId already has associated railings or is in editing mode so association of railings is not permitted. |
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. |
ModificationOutsideTransactionException | The document has no open transaction. |
Example
C#
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(); } }
VB
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