Sample Code Revit Batch Processor 1.1.16 documentation

Contents:

This Page

Ceilings By Room

Panel: Ceilings | Button: Ceilings By Room

button icon

Creates a ceiling matching the boundary of each selected room.

What it does

  1. Lists every room in the model and asks you to select the rooms to model ceilings for. List entries are shown as number-name_phase_level.

  2. For each selected room, in a cancellable progress bar:

    • resolves the ceiling type to use (see below);

    • takes the room’s boundary at the finish face and converts it to closed curve loops;

    • creates a ceiling on the room’s level from those loops.

How the ceiling type is chosen

  1. The room’s Ceiling Finish parameter is read.

  2. Its value is matched against the type mark of the ceiling types in the model.

  3. If there is no value, or no type matches it, the tool falls back to a default type — which is whichever ceiling type happens to be second in the collector. This is arbitrary, so check the result when the fallback is used; the type actually used is reported per room in the output window.

Hard-coded values

Two values are fixed in Extensions/duHast-2025.extension/duHast.tab/lib/rooms/ceilings_create.py and are not exposed in the UI:

Constant

Purpose

Current value

PHASE_NAME

Phase the ceilings are created in

"Project Scope"

(elevation argument)

Height offset from the room’s level

2700

The parameter the ceiling type code is read from is also fixed: ROOM_CEILING_TYPE_PARAMETER_NAME = "Ceiling Finish".

Edit these to suit the project before first use.

When to use this

Use it at the start of a ceiling design phase to get a base set of ceilings matching the room layout, rather than tracing each boundary by hand.

Requirements

  • Rooms must be placed and bounded so Revit returns closed boundary loops.

  • At least one ceiling type must exist in the project.

  • A phase named as per PHASE_NAME must exist, otherwise the ceiling is created without a phase set.

Notes

  • Rooms whose boundary cannot be converted to a closed loop are reported and skipped.

  • All ceilings are created at the same offset; adjust individual heights afterwards.

  • Run after the room layout is settled — the ceilings are not associative, so later room boundary changes will not update them.