Skip to content
RevitBootcamp2027 edition
Day 53–4 hrs5 min readDocumentationTeam fluencyAutomation

Day 5 — Rooms, schedules, and model data

GoalGet real information out of the model, and use schedules as your primary quality-control tool.

Yesterday you put data into the model. Today you get it out. And more importantly: today you learn that schedules are the best model-auditing tool Revit has, which is a use case almost no tutorial mentions.

Rooms are volumes, not labels

A Room is a bounded 3D volume that carries name, number, area, volume, perimeter, finishes, occupancy, and whatever else you add. It is not a text label.

Rooms are bounded by anything with Room Bounding checked — walls, floors, ceilings, roofs, columns — plus room separation lines for open spaces where there's no physical divider.

Place with RM. Revit shows a fill and a tag as you hover each enclosed space.

Three things that will happen to you:

  • "Room is not in a properly enclosed region." There's a gap in the boundary, or a wall has Room Bounding unchecked (it's an instance parameter). The area reads Not Enclosed and the room is useless until you fix it. Zoom into corners.
  • Deleting a room from a plan doesn't delete the room. It becomes an unplaced room, still in your room schedule with no area. Find them by scheduling rooms and looking for blank areas, then delete them from the schedule row.
  • Volume computation is off by default. Architecture → Room & Area → Area and Volume Computations → Areas and Volumes. Turn it on only if you need volumes; it costs performance.

Areas are a separate system with their own boundaries and schemes (gross, rentable/BOMA). They exist because leasable area is measured differently from room area. Don't mix them up.

Schedules are queries with an editable result set

View → Schedules → Schedule/Quantities. Pick a category, then:

  • Fields — the columns. Includes parameters, plus fields from the element's type, plus Count, plus fields from a linked room ("Room: Name" on a door).
  • Filter — up to several rules; this is your WHERE clause.
  • Sorting/Grouping — sort keys, headers, footers, and blank lines. Uncheck Itemize every instance to collapse to one row per unique combination — that's your GROUP BY.
  • Formatting — per-column alignment, heading text, and Calculate totals.
  • Appearance — fonts and grid lines, which only matter once it's on a sheet.

The important thing: a schedule is bidirectional. Type a new value into a cell and the model changes. Rename a room in the schedule and the tag on the plan updates. This makes bulk data entry vastly faster than clicking elements one at a time.

Calculated values

In the Fields tab, Calculated Value adds a column computed from other fields without adding a parameter to the model:

Name:    Area per Occupant
Type:    Number
Formula: Area / Occupancy

Units bite here exactly as they do in family formulas — an area divided by a number is an area, and if you declared the result as a Number, Revit rejects it. The workaround for unitless results is dividing by 1 SF (or 1 m²) to cancel the unit:

Formula: Area / Occupancy / 1 SF

That trick is ugly and it's the standard answer.

Key schedules

A key schedule is a schedule of presets. Create one with New Schedule → Schedule keys, name the key (e.g. Room Style), and define rows: Office, Corridor, Restroom. Each row holds values for floor finish, wall finish, ceiling finish, ceiling height.

Then on any room, set Room Style = Office and every parameter in that key fills in automatically and becomes read-only.

This is the correct way to manage finishes across 200 rooms. Change the Office row once and every office updates. If you're typing "Carpet" into 40 rows by hand, you want a key schedule.

Schedules as a QC tool

This is the part to actually remember. Make schedules you never intend to print:

  • Find unenclosed rooms — room schedule sorted by Area ascending. Zeros and blanks float to the top.
  • Find wrong-category elements — schedule Generic Models. If real building content shows up there, someone modeled a door as a generic model.
  • Find missing data — schedule your key parameters and filter to is blank. Every blank is a to-do.
  • Find duplicate or nonsense types — schedule walls, uncheck Itemize, and look at the type list. Generic - 8", Generic - 8" (2), and Generic - 8 inch in the same project is a standards problem you just found.
  • Sanity-check quantities — a wall schedule with Area totals tells you immediately if a wall is 300 storeys tall because of a bad top constraint.
  • Audit warnings by element — pair with Manage → Warnings, which reports Element IDs you can chase with Manage → Select by ID.

Ten minutes of scheduling finds problems that hours of visual inspection misses.

Getting data out

Three levels, and you should reach for the simplest one that works:

  1. Export a scheduleFile → Export → Reports → Schedule. Gives you a delimited text file. Crude, effective, and nine times out of ten it's what somebody actually wanted when they asked for "the model data".
  2. Dynamo — good when you need to combine data across categories, do arithmetic Revit's schedules can't, or push values back in bulk. Day 8.
  3. The API / pyRevit — when it needs to be repeatable, scheduled, or part of a tool. Day 8.

There's also ODBC export for a full relational dump, and cloud-side APIs (Autodesk Platform Services, the AEC Data Model) if the data needs to live outside Revit entirely. Know they exist; don't start there.

Today's exercise

  1. Place rooms in every enclosed space on both levels. Name them properly: Office, Corridor, Restroom, Open Office, Stair. Number them 101, 102… on Level 1 and 201… on Level 2.
  2. Use room separation lines to split your open area into Open Office and Reception with no physical wall between them.
  3. Deliberately delete a bounding wall segment, see the room go Not Enclosed, then undo. You want to recognize that state instantly.
  4. Room schedule: Number, Name, Area, Level. Sort by Level then Number, group with a header per level, and turn on grand total for Area.
  5. Add an Occupancy value to a few rooms and a calculated value for Area per Occupant. Get the units right; expect to fight it once.
  6. Key schedule Room Style with rows Office, Corridor, Restroom, each setting floor/wall/ceiling finish. Apply to your rooms and confirm the finish fields populate and lock.
  7. Door schedule: Mark, Type, Width, Height, Level, Room: Name (the room the door leads to), Fire Rating, Comments. Sort by Level then Mark. This is close to a real door schedule.
  8. Rename a room in the schedule and go look at the plan tag. Watch it update.
  9. Audit: create a wall schedule, uncheck Itemize, and look at your type list. Then create a Generic Model schedule and confirm it's empty (or find out what's hiding there).
  10. Export the room schedule to CSV and open it.

Save. Tomorrow this data becomes a drawing set.

Checkpoints

0 / 8 done

Don't move on until you can do all of these without looking them up.

Go deeper