An opening in an Autodesk Revit project or family document.
Namespace: Autodesk.Revit.DB
Assembly: RevitAPI (in RevitAPI.dll) Version: 17.0.0.0 (17.0.484.0)
Syntax
Remarks
The object represents a variety of different types of openings:
- A rectangular opening in a wall created by two boundary points in a revit project.
- An opening created by a set of curves applied to a roof, floor, ceiling, beam, brace or column.
- A vertical shaft opening extending one or more levels.
- A simple opening created on a wall or ceiling in a family document.
Remarks
This object derived from the Element base object and such supports all the
methods of that object such as the ability to retrieve the parameters of that object. This
object also supports access to a structural analytical model but this feature is only
available with Autodesk Revit Structure.
Examples

private void Getinfo_Opening(Opening opening) { string message = "Opening:"; //get the host element of this opening message += "\nThe id of the opening's host element is : " + opening.Host.Id.IntegerValue; //get the information whether the opening has a rect boundary //If the opening has a rect boundary, we can get the geometry information from BoundaryRect property. //Otherwise we should get the geometry information from BoundaryCurves property if (opening.IsRectBoundary) { message += "\nThe opening has a rectangular boundary."; //array contains two XYZ objects: the max and min coords of boundary IList<XYZ> boundaryRect = opening.BoundaryRect; //get the coordinate value of the min coordinate point XYZ point = opening.BoundaryRect[0]; message += "\nMin coordinate point:(" + point.X + ", " + point.Y + ", " + point.Z + ")"; //get the coordinate value of the Max coordinate point point = opening.BoundaryRect[1]; message += "\nMax coordinate point: (" + point.X + ", " + point.Y + ", " + point.Z + ")"; } else { message += "\nThe opening doesn't have a rectangular boundary."; // Get curve number int curves = opening.BoundaryCurves.Size; message += "\nNumber of curves is : " + curves; for (int i = 0; i < curves; i++) { Autodesk.Revit.DB.Curve curve = opening.BoundaryCurves.get_Item(i); // Get curve start point message += "\nCurve start point: " + XYZToString(curve.GetEndPoint(0)); // Get curve end point message += "; Curve end point: " + XYZToString(curve.GetEndPoint(1)); } } TaskDialog.Show("Revit",message); } // output the point's three coordinates string XYZToString(XYZ point) { return "(" + point.X + ", " + point.Y + ", " + point.Z + ")"; }

Private Sub Getinfo_Opening(opening As Opening) Dim message As String = "Opening:" 'get the host element of this opening message += vbLf & "The id of the opening's host element is : " & Convert.ToString(opening.Host.Id.IntegerValue) 'get the information whether the opening has a rect boundary 'If the opening has a rect boundary, we can get the geometry information from BoundaryRect property. 'Otherwise we should get the geometry information from BoundaryCurves property If opening.IsRectBoundary Then message += vbLf & "The opening has a rectangular boundary." 'array contains two XYZ objects: the max and min coords of boundary Dim boundaryRect As IList(Of XYZ) = opening.BoundaryRect 'get the coordinate value of the min coordinate point Dim point As XYZ = opening.BoundaryRect(0) message += ((vbLf & "Min coordinate point:(" + point.X & ", ") + point.Y & ", ") + point.Z & ")" 'get the coordinate value of the Max coordinate point point = opening.BoundaryRect(1) message += ((vbLf & "Max coordinate point: (" + point.X & ", ") + point.Y & ", ") + point.Z & ")" Else message += vbLf & "The opening doesn't have a rectangular boundary." ' Get curve number Dim curves As Integer = opening.BoundaryCurves.Size message += vbLf & "Number of curves is : " & curves For i As Integer = 0 To curves - 1 Dim curve As Autodesk.Revit.DB.Curve = opening.BoundaryCurves.Item(i) ' Get curve start point message += vbLf & "Curve start point: " & XYZToString(curve.GetEndPoint(0)) ' Get curve end point message += "; Curve end point: " & XYZToString(curve.GetEndPoint(1)) Next End If TaskDialog.Show("Revit", message) End Sub ' output the point's three coordinates Private Function XYZToString(point As XYZ) As String Return "(" & Convert.ToString(point.X) & ", " & Convert.ToString(point.Y) & ", " & Convert.ToString(point.Z) & ")" End Function