Room Class


Provides access to the room topology in Autodesk Revit.

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

Syntax

C#
public class Room : SpatialElement
Visual Basic
Public Class Room _
	Inherits SpatialElement
Visual C++
public ref class Room : public SpatialElement

Remarks

The room object can be queried for its boundary for use in space planning tools.

Examples

CopyC#
private void Getinfo_Room(Room room)
{
    string message = "Room: ";

    //get the name of the room
    message += "\nRoom Name: " + room.Name;

    //get the room position
    LocationPoint location = room.Location as LocationPoint;
    XYZ point = location.Point;
    message += "\nRoom position: " + XYZToString(point);

    //get the room number
    message += "\nRoom number: " + room.Number;

    IList<IList<Autodesk.Revit.DB.BoundarySegment>> segments = room.GetBoundarySegments(new SpatialElementBoundaryOptions());
    if (null != segments)  //the room may not be bound
    {
        foreach (IList<Autodesk.Revit.DB.BoundarySegment> segmentList in segments)
        {
            message += "\nBoundarySegment of the room: ";
            foreach (Autodesk.Revit.DB.BoundarySegment boundarySegment in segmentList)
            {
                // Get curve start point
                XYZ start = boundarySegment.GetCurve().GetEndPoint(0);
                message += "\nCurve start point: " + XYZToString(start);
                // Get curve end point
                XYZ end = boundarySegment.GetCurve().GetEndPoint(1);
                message += " Curve end point: " + XYZToString(end);

                // Show the boundary elements
                message += "\nBoundary element id: " + boundarySegment.ElementId.ToString();
            }
        }
    }

    TaskDialog.Show("Revit",message);
}

// output the point's three coordinates
string XYZToString(XYZ point)
{
    return "(" + point.X + ", " + point.Y + ", " + point.Z + ")";
}
CopyVB.NET
Private Sub Getinfo_Room(room As Room)
    Dim message As String = "Room: "

    'get the name of the room
    message += vbLf & "Room Name: " & Convert.ToString(room.Name)

    'get the room position
    Dim location As LocationPoint = TryCast(room.Location, LocationPoint)
    Dim point As XYZ = location.Point
    message += vbLf & "Room position: " & XYZToString(point)

    'get the room number
    message += vbLf & "Room number: " & Convert.ToString(room.Number)

    Dim segments As IList(Of IList(Of Autodesk.Revit.DB.BoundarySegment)) = room.GetBoundarySegments(New SpatialElementBoundaryOptions())
    If segments IsNot Nothing Then
        'the room may not be bound
        For Each segmentList As IList(Of Autodesk.Revit.DB.BoundarySegment) In segments
            message += vbLf & "BoundarySegment of the room: "
            For Each boundarySegment As Autodesk.Revit.DB.BoundarySegment In segmentList
                ' Get curve start point
          Dim start As XYZ = boundarySegment.GetCurve().GetEndPoint(0)
                message += vbLf & "Curve start point: " & XYZToString(start)
                ' Get curve end point
          Dim [end] As XYZ = boundarySegment.GetCurve().GetEndPoint(1)
                message += " Curve end point: " & XYZToString([end])

                ' Show the boundary elements
          message += vbLf & "Boundary element id: " + boundarySegment.ElementId.ToString()
            Next
        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

Inheritance Hierarchy

SystemObject
  Autodesk.Revit.DBElement
    Autodesk.Revit.DBSpatialElement
      Autodesk.Revit.DB.ArchitectureRoom

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 →