> For the complete documentation index, see [llms.txt](https://help.laiout.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.laiout.co/sharing-and-exporting/laiout-for-revit.md).

# laiout for Revit

{% hint style="info" %}
Looking to export a finished plan as a Revit file instead? See [Revit Export](/sharing-and-exporting/revit-export.md).
{% endhint %}

laiout for Revit is a panel that lives inside Revit on its own laiout ribbon tab. It sends the flat 2D outline of your floor to the laiout web app, where AI generates furniture layouts in seconds, then places a layout you choose back into your Revit model. Your .rvt file never leaves your machine, only the 2D outline is uploaded.

## Getting Started

<details>

<summary>What is laiout for Revit?</summary>

A panel that lives inside Revit on its own laiout ribbon tab. It sends the flat 2D outline of your floor to the laiout web app, where AI generates furniture layouts in seconds, then places a layout you choose back into your Revit model. The .rvt file never leaves your machine, only the flat 2D outline is uploaded.

</details>

<details>

<summary>Which Revit versions are supported?</summary>

Revit 2024, 2025, and 2026.

</details>

<details>

<summary>Where do I download laiout for Revit?</summary>

Download the installer from [laiout.app/plugin\_download](https://laiout.app/plugin_download). You will need an active laiout account. Once downloaded, follow the install steps below. The plugin works with Revit 2024, 2025, and 2026.

</details>

<details>

<summary>How do I install it?</summary>

It is a standard Windows installer, so you double-click and follow the prompts. It installs per-user, into your own Windows profile, so no admin rights are needed to install it or to run it. You can normally install it yourself without involving IT.

</details>

<details>

<summary>How do I open the plugin?</summary>

After installing, open Revit and click the new laiout tab on the ribbon, then the Connect button. This shows or hides the dockable laiout panel, which opens on the right by default.

</details>

<details>

<summary>How do I sign in?</summary>

With your normal laiout web account, the same email and password you use on the website. There is no separate account or licence key. Enter your email and password in the panel and click Log In.

</details>

<details>

<summary>Do I have to sign in every time?</summary>

No. Your session is stored encrypted on your machine (Windows DPAPI, per Windows user). The next time you open Revit you are signed in automatically until the session expires. Click Logout at the top-right of the panel to sign out, which clears the stored session.

</details>

<details>

<summary>What are the three steps?</summary>

Export, generate, import.

First, export. Open the floor plan view you want, navigate to the right project in the panel, and click Export. laiout reads the floor and creates it in the web app.

Second, generate. In the web app, draw circulation and generate layout options. Mark the ones you like as favourites. The Revit panel notifies you when they are ready.

Third, import. Pick a favourite in the panel and click Import Layout. The layout is placed back into your model.

The panel is organised as a navigation tree: Organisation, then Project, then Floor, then Layout Options. You drill down to find the floor you are working on, and the Export and Import sections appear as you go.

</details>

<details>

<summary>Do I need a laiout subscription, and is the plugin a paid add-on?</summary>

You need an active laiout subscription, since all layout generation happens in the web app. The plugin itself is included at no extra charge for laiout subscribers, with no separate fee or add-on cost. You sign in with your normal laiout account.

</details>

<details>

<summary>How does laiout for Revit relate to the existing Revit Export feature?</summary>

laiout for Revit extends the existing Revit Export in three ways. First, it runs inside Revit rather than from an uploaded file, so you export the live floor straight from the model and your .rvt never leaves the machine. Second, it is two-way: the layout you generate comes back into Revit as real placed elements, whereas the file-based export had no return path. Third, it keeps your model clean and native, preserving your existing shell as real Revit elements and adding only the generated layout on top. See [Revit Export](/sharing-and-exporting/revit-export.md) for the file-based export path.

</details>

<details>

<summary>Who is laiout for Revit built for?</summary>

Existing Revit users doing architectural, interior, or workplace space planning: architects, interior designers, and space planners who also use laiout. It is not aimed at MEP or structural engineers, since the plugin reads and creates no MEP, lighting, or structural content.

</details>

## Exporting a Floor

<details>

<summary>Do I need to create the project in laiout first, or does exporting create it?</summary>

You set up the organisation and project in the laiout web app first. The plugin does not create them. Its navigation tree only lists the organisations and projects you already have, so a brand-new project has to be made on the website before it shows up here. Hit Refresh if you just made it.

What exporting creates is a floor inside the project you have navigated to, not the project itself. If a floor with the same name already exists in that project, the export updates that floor in place rather than creating a duplicate. If the name clashes with another existing floor, you are prompted to give the export a different name, or to cancel.

</details>

<details>

<summary>What does the export read from my model?</summary>

laiout reads the 2D footprint of: walls (walls whose type name contains "glass", "glaze", or "glazing" are treated as glass), curtain walls (decomposed into glass panels, solid/spandrel panels, and mullions), architectural and structural columns, doors, floor slabs, shaft openings (treated as unavailable space, for example lift shafts), stairs, railings (slab-edge railings, while railings hosted on stairs or ramps are skipped), and Rooms and Areas (used as zones, and as a perimeter fallback).

</details>

<details>

<summary>What does the export NOT read?</summary>

Furniture, FF\&E (furniture, fixtures and equipment), casework, and generic family instances are ignored entirely. The export never looks at them, so you can safely export a model that is already fully furnished: none of that furniture is sent, becomes an obstacle, or affects the result. The export is purely a 2D floor footprint, so ceilings, lighting fixtures, and MEP are also not read. Reflected ceiling plans are not even offered in the view picker, since they mirror the ceiling, not the floor.

</details>

<details>

<summary>How is the building outline determined?</summary>

By the Perimeter setting in the Export section:

Auto (recommended) uses floor slabs first. If there are none, it falls back to placed Areas, then placed Rooms.

Floor slabs, Areas, or Rooms forces that one source. If the view cannot provide it, the export is blocked (no silent fallback) and the readiness check tells you what to add.

You need at least one of: a floor slab, placed Rooms, or placed Areas. With none of these, there is nothing to define the outline and export is blocked.

</details>

<details>

<summary>Do crop regions or hidden elements matter?</summary>

Yes. The export respects the selected view's crop region, view filters, and hidden elements. What you see is what gets read. The panel reminds you of this under the view selector.

</details>

<details>

<summary>What are the export settings?</summary>

Floor Plan View: pick which floor-plan view to export, shown as ViewName (LevelName). The currently active view is pre-selected.

Include linked Revit models (default off): also read walls, slabs, and columns from loaded Revit links visible in the view. Turn this on when the building geometry lives in a linked model rather than the current file.

Perimeter: the outline source described above.

Export as New Floor: tick to create a separate new floor instead of updating the floor you exported before.

DWG layers: map CAD underlay layers to obstacle roles.

</details>

<details>

<summary>I'm working from a DWG underlay, not Revit elements. Can laiout use it?</summary>

Partially, via DWG layers. You tag each CAD layer as Columns, Walls, Glass, or Ignore, and laiout extracts closed shapes on those layers as obstacles. The mapping is saved per project. Note the limits: columns as closed polylines or circles extract reliably; walls and glass are best-effort, and walls drawn as two open parallel lines will NOT extract. Only closed shapes work.

</details>

<details>

<summary>How can I check exactly what the export read?</summary>

The floor in the web app is the ground truth. It shows the geometry precisely as laiout received it, so open it and compare against your model. The panel's post-export summary lists what was counted, and the plugin keeps a technical log at %APPDATA%\Laiout\plugin.log that records per-export detail. If a result looks wrong, send that log to the laiout team and we can see exactly what was read.

</details>

<details>

<summary>What happens after a successful export?</summary>

The panel shows a summary (wall, glass, door and column counts, GEA and NIA areas, zone breakdown), your browser opens to the floor's options page in laiout, and the plugin starts watching that floor for layouts.

</details>

## Naming Rooms & Areas

<details>

<summary>How does laiout classify my Rooms and Areas?</summary>

When you export, laiout classifies each placed Room (and Area) by its name, case-insensitive, matching whole words. The first match wins. Name your spaces using these keywords to have them recognised:

| If the name contains                                                                                                                                                                                                                                                                                                | laiout treats it as |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- |
| toilet, wc, restroom, bathroom, washroom, lavatory, men, women                                                                                                                                                                                                                                                      | Bathroom            |
| stair, stairs, staircase, stairwell                                                                                                                                                                                                                                                                                 | Stairwell           |
| elevator, lift, elev                                                                                                                                                                                                                                                                                                | Elevator shaft      |
| kitchen, kitchenette, pantry                                                                                                                                                                                                                                                                                        | Kitchen             |
| balcony, terrace, patio                                                                                                                                                                                                                                                                                             | Balcony             |
| mechanical, electrical, server, IT room, storage, store, janitor, core, MEP, riser, plenum, closet, utility, boiler, shaft, duct, comms, telecom, sprinkler, AHU, HVAC, equipment, plant, generator, transformer, switch room, MDF, IDF, loading, BOH / back of house, refuse / garbage, and similar service spaces | Core / service room |

For Rooms, if the name does not match, laiout also checks the Department, Occupancy, then Comments fields before giving up. For Areas, only the name is checked. A trailing number is ignored, so Stair 01 still reads as a stairwell. A thin sliver space classified as Core / service room (smaller than 5 m2 and narrower than about 0.6 m) is dropped, to avoid tiny auto-generated rooms in column strips becoming zones.

</details>

<details>

<summary>What if a Room's name matches nothing?</summary>

It becomes a Custom zone. The AI layout step skips Custom zones and will not place furniture there. The space still shows in the web app with its Revit name, and you can reassign it there. If a Room was actually meant to be designed by the AI, mark it as open shell instead.

Heads-up: if your unclassified Custom Rooms cover 20% or more of the slab, the plugin warns you before export. You can Continue anyway or Cancel to fix the model.

</details>

<details>

<summary>How do I tell laiout to design a space for me?</summary>

Mark a Room as open shell to tell laiout to treat it as empty space for the AI to fill, instead of a fixed room. Two ways:

Shared parameter (preferred): add a Laiout\_OpenShell parameter to the Rooms category and set it to Yes (or 1, true, yes, or y if it is a text parameter).

Comments tag (no parameter needed): put \[LAIOUT:OPEN\_SHELL] anywhere in the Room's Comments field.

Either way, that Room's area becomes AI Generated open shell. This applies to Rooms only, since Areas have no open-shell opt-out.

</details>

## Generating Layouts & Notifications

<details>

<summary>Where do I generate layouts?</summary>

In the laiout web app. Draw circulation, generate options, and mark the ones you like as favourites. Favourites are what the Revit panel imports.

</details>

<details>

<summary>How does the plugin know when a layout is ready?</summary>

It polls the floor you exported every 20 seconds while you are signed in. The floor it watches is remembered across Revit restarts, so it resumes watching automatically next time you open Revit.

</details>

<details>

<summary>How am I notified?</summary>

Two surfaces, in amber: an inline banner at the top of the panel, and a floating pop-up at the bottom-right of the screen that auto-dismisses after 8 seconds, shown when the panel is not visible, Revit is minimised, or another app is in focus. The Revit taskbar button also flashes until you focus Revit.

</details>

<details>

<summary>What is the difference between a new and an updated layout?</summary>

"New layout ready" is a favourite that did not exist when you exported. "Layout updated" is a favourite you had already seen that was changed in the web app, for example renamed or regenerated. Favourites that already existed at export time are adopted silently as a baseline, so you are only notified about genuine changes after that. Clicking View jumps straight to that layout with Import armed. Dismiss mutes that specific state, and a future genuine edit will notify you again.

</details>

## Importing & Round-Trip Editing

<details>

<summary>How do I import?</summary>

Navigate to the floor's Layout Options, click a layout to select it (or use View from a notification), then click Import Layout. The button is enabled only once both a floor and a layout are selected.

</details>

<details>

<summary>What gets created in my model?</summary>

The plugin places real Revit elements: Rooms (one per zone) with room tags, partition walls (and glass partitions), doors, floor finish slabs, and furniture as family instances. Furniture families are pulled from a bundled template as needed. If a specific piece cannot be matched, it is skipped and counted in the import summary. The imported elements are ordinary Revit elements, so you can move, rename, schedule, tag, or delete them like anything else.

</details>

<details>

<summary>Will importing recreate or duplicate the walls, columns and doors I already modelled?</summary>

No, and this is by design. The import only adds what the laiout layout generated: interior partition walls, interior doors, furniture, floor finishes, and Rooms plus tags. It deliberately skips your building shell, so your existing exterior and interior walls, curtain walls, columns and exterior doors are recognised as already present and are not recreated. You never get duplicate walls stacked on top of your originals.

Because of this, a layout is meant to be imported back into the model you exported from, where that shell already exists. Your own elements are never modified or deleted. The only things cleared out on a re-import are elements from a previous laiout import (identified by the Laiout.FloorId / Laiout.OptionId stamp).

One exception: a floor that was created directly in the web app, never exported from Revit, has no shell in your model, so importing it generates the full shell too (exterior walls, curtain walls and columns included). The plugin warns you and asks you to confirm before doing this.

</details>

<details>

<summary>Does the import create ceilings, lighting or MEP?</summary>

No. The import builds the floor-level layout only: Rooms, partitions, doors, floor finishes and furniture. It does not create ceilings, light fixtures, or any MEP or services. The floor-to-ceiling height carried in the layout is used only to set how tall the partition walls rise; no ceiling element is placed to cap them, so you are free to model your own ceilings and reflected ceiling plans on top of the imported layout.

</details>

<details>

<summary>Which furniture families does the import use? Can it use the families I uploaded to laiout?</summary>

Not in this version. The import furnishes the layout from the families bundled with the plugin (laiout\_families), a curated set of generic desks, chairs, tables, sofas and similar office pieces. For each piece in your layout the plugin picks the closest bundled family, first by exact name, then by a looser partial name match. If nothing matches, that piece is skipped, the rest of the layout still imports, and the import summary shows how many pieces could not be matched.

Any custom families, furniture or FF\&E products you uploaded to the laiout web app are not pulled into Revit by this version. Mapping your own office-standard or manufacturer families onto imported furniture is planned for version 2. Until then you can swap the placed generics in bulk with Revit's Select All Instances, then change type, since every imported piece is an ordinary family instance.

</details>

<details>

<summary>What happens if I import a different option onto the same floor?</summary>

It is clean. Before placing the new layout, the plugin deletes everything it previously imported for that floor and then places the new option. No duplicates, no clutter. Importing replaces any laiout layout previously imported on this level, and your own Revit elements are untouched.

</details>

<details>

<summary>How does it know what to delete?</summary>

Every element the plugin places is stamped with Laiout.FloorId / Laiout.OptionId shared parameters, which you can see in element properties. Only elements carrying that stamp are ever removed. Your own Revit elements are never touched.

</details>

<details>

<summary>Where do imported elements land?</summary>

On the level captured at export, using the exported coordinate transform. The import keeps a record in the panel's Import History (layout name, time, and element count).

</details>

<details>

<summary>Can I go Revit to laiout to Revit, make changes, and go back?</summary>

Yes, and you can feed a model that is already fully designed or furnished, since furniture is ignored on export either way. Two things are handled automatically to keep the loop stable. Rooms that laiout itself placed are skipped on re-export (they are tagged as laiout-authored), so a previously imported layout does not get re-read as a wall-to-wall blanket of zones. And re-importing replaces the prior import for that floor.

Important caveat: partition walls and doors from an import are NOT skipped on re-export. Only laiout-placed Rooms are auto-skipped. The partition walls and doors that an import created are read back as real walls and doors if you re-export that floor while the layout is still in the model. Tweaking your base building (move a real wall, add or rename a Room) and re-exporting works as expected. But re-exporting a floor that still contains an imported layout means the AI's own partitions come back as fixed walls. Re-export from the base model unless you specifically want those partitions frozen as input.

</details>

<details>

<summary>Will furniture changes I make in Revit go back to laiout?</summary>

No. Furniture is one-way, laiout to Revit only. The export never reads furniture of any kind, yours or laiout's, so rearranging furniture in Revit will not appear in the web app. If you want different furniture, change the layout in laiout and re-import.

</details>

## Privacy, Security & IT

<details>

<summary>Does my Revit model leave my computer?</summary>

No. Your .rvt file never leaves the machine. Only a small 2D outline of the floor (geometry as JSON/SVG) is uploaded. The plugin does not store your password, only an encrypted session token, on your machine.

</details>

<details>

<summary>What does IT need to allow?</summary>

Outbound HTTPS from the workstation to the laiout web app (laiout.app), the laiout processing service, and Amazon S3 for file transfer. No server, VPN, or on-prem component is required, since it talks to the same service the website does. Ask the laiout team for the exact domain list for your account.

</details>

<details>

<summary>Where does the plugin store things locally?</summary>

Encrypted session at %APPDATA%\Laiout\credentials.dat. Settings (perimeter source, linked-models toggle, DWG mappings) at %APPDATA%\Laiout\settings.json. Technical log at %APPDATA%\Laiout\plugin.log.

</details>

## Troubleshooting

<details>

<summary>What are the most common mistakes to avoid?</summary>

DWG walls drawn as two thin parallel lines. Only closed shapes on mapped DWG layers extract, so two open lines will not be picked up. Model real Revit walls, or draw DWG walls as closed polylines. Columns as closed polylines or circles extract reliably.

Nothing defines the outline. No floor slab and no Rooms and no Areas means export is blocked. Add a floor slab, or place Rooms or Areas.

Geometry is in a linked Revit model, but "Include linked Revit models" is off, so the host looks empty. Tick the checkbox in the Export section.

Unclassified Custom Rooms over a big area. Rooms whose names do not match a known type are skipped by the AI. Rename them to a recognised keyword or mark them open shell. The plugin warns when these cover 20% or more of the floor.

Re-exporting on top of an imported layout. The AI's partition walls and doors get read back as real walls. Re-export from the base model.

Expecting furniture edits to sync back to the web app. They will not, since furniture is Revit-only output.

Forcing a Perimeter source that is not in the view, for example "Areas" with no Areas placed. Set Perimeter back to Auto, or model the missing source.

No walls modelled. You will get a warning that the layout will not respect partitions. A curtain-wall-only facade still counts as having walls.

</details>

<details>

<summary>The Export button is blocked or a readiness dialog appeared.</summary>

Read the checklist, which names exactly what is missing (perimeter source, walls, and so on). Fix those items and export again. A blocked export cannot proceed until the outline source exists. Warnings let you Continue anyway or Cancel.

</details>

<details>

<summary>The result doesn't match what I expected.</summary>

Open the floor in the web app and compare it with your model, since it shows the geometry exactly as laiout read it. The panel's export summary lists the counts and areas. If something is clearly missing or wrong, send the technical log (%APPDATA%\Laiout\plugin.log) to the laiout team, as it records what was read on each export.

</details>

<details>

<summary>I'm not getting notified about new layouts.</summary>

Make sure you are signed in (polling stops when signed out) and that you marked the layout as a favourite in the web app. Polling runs every 20 seconds on the floor you exported.

</details>

<details>

<summary>No layouts show for a floor.</summary>

You will see "No saved layouts for this floor. Generate layouts in the web app first." Mark favourites in the web app, then refresh.

</details>

<details>

<summary>Imported geometry landed in the wrong place.</summary>

This usually means you imported into a different document than you exported from, so the cached coordinate transform did not match and was reconstructed from the project base point. Re-export once from the correct document and re-import.

</details>

<details>

<summary>Imported layout is on the wrong level in a multi-storey model.</summary>

The import matches the export's level by name, then by elevation (about 6 inch tolerance), then falls back to the nearest level to 0. Confirm your level names match between export and import.

</details>

<details>

<summary>Export and Import are unavailable and a family-document banner shows.</summary>

The plugin works in project documents only. Open a project (.rvt), since export and import are disabled while a family (.rfa) document is active.

</details>

<details>

<summary>"Plugin update required."</summary>

Export is disabled until you install the latest version. Click Update now to open the download page for the current installer.

</details>

## Limitations & Roadmap

<details>

<summary>What are the known limitations today?</summary>

Furniture is one-way (laiout to Revit) and is not read on export. Imported furniture uses the bundled laiout\_families set, so your own custom families and the FF\&E products you uploaded to the web app are not mapped into Revit yet (planned for version 2), and unmatched pieces are skipped and reported. There are no ceilings, lighting or MEP, since the plugin works at the floor-plan level only, on both export and import. DWG walls are best-effort and need closed shapes. Curtain walls in linked models come through simplified. Multi-storey level matching on import relies on consistent level names.

</details>

<details>

<summary>What's coming next (version 2)?</summary>

Map your own families onto imported furniture: match each laiout piece type to a Revit family and type from your office library once, and from then on every import uses your furniture instead of the bundled generics.

Pull through the FF\&E products you added in the web app, so the matching manufacturer family lands in Revit rather than a generic stand-in.

Layout statistics written into Revit: usable area, workstation count, area per person, occupancy and, where available, cost and carbon stamped onto the imported Rooms as schedulable shared parameters.

Automatic furniture and FF\&E schedule: a ready-made Revit schedule of every placed piece, populated from the mapped families.

Richer "updated layout" notifications, adding a thumbnail and a deep-link that jumps to the exact option with Import already armed.

</details>

<details>

<summary>What's being explored after version 2?</summary>

Ceilings and reflected ceiling plans, generating a ceiling per zone at the floor-to-ceiling height already carried in the layout, and creating the RCP view.

Lighting layouts, placing luminaires on a grid or from a laiout-generated lighting plan inside each zone.

Whole-building batch export, queueing every floor-plan view in a model and exporting them in a single pass.

Selective or partial import, bringing in only the zones, only the partitions, or only the furniture.

Non-destructive re-import, previewing exactly what will be added, removed or changed before re-importing, and optionally keeping local tweaks.

Live two-way sync, so edits made in the web app flow into Revit automatically without a manual re-import.

</details>

<details>

<summary>How do I get the firewall domains, an installer, or a team walkthrough?</summary>

You can download the installer yourself at [laiout.app/plugin\_download](https://laiout.app/plugin_download). For the exact firewall domain list for your account, or a walkthrough for your team, contact the laiout team and we will get you set up.

</details>

***

## Video Guides

### Revit Plugin Overview - Demo Video

{% embed url="<https://youtu.be/yQjZIOYxinE>" %}

### Download & Install - Demo Video

{% embed url="<https://youtu.be/uS-sP2BOwq0>" %}

### Import Existing Floor Plans - Demo Video

{% embed url="<https://youtu.be/uyLVh_WWvG0>" %}

### Export and Import Between Floors - Demo Video

{% embed url="<https://youtu.be/xrS-TJNhOVA>" %}

### Working with Linked Revit Models - Demo Video

{% embed url="<https://youtu.be/N2MrZYNBTR8>" %}
