Validation

Find and fix geometry problems before you export — the checks, the on-canvas cues, and the issues sheet.

Before you export or hand a drawing to an engine, it’s worth checking the geometry is sound. The app validates rooms continuously and shows you exactly what’s wrong and where.

What it checks

Each room is checked for:

CheckMeaning
Degenerate wallsZero-length walls (start and end coincide).
Floating wallsA wall with an endpoint not shared by any other wall.
Disconnected componentsDetached islands of walls within one room.
Simple closed loopEvery corner has exactly two walls — the room actually encloses.
Polygon matchThe stored boundary matches the walls.
Orphaned referencesDoors, windows, lights or radiators pointing at a missing wall.

On-canvas cues

Two complementary cues appear when a room is invalid:

  • A dashed amber outline around the room — it shows where the problem is.
  • A bottom-centre orange pill — “Issue with Room”, or “N rooms have issues” — it shows what and how to fix it. Tap it to open the issues sheet.

Both cues are suppressed mid-drag so a deliberate edit doesn’t flash warnings at you every frame.

The issues sheet

Tapping the pill opens a sheet that updates live as you fix things:

  • A tappable room header that switches to and jumps to the affected geometry.
  • A Delete button for each floating wall.
  • A Try to solve action per room.
  • A Disconnect group action where a connected shared wall has drifted.
  • An Empty rooms section with a one-tap Delete empty room.

Try to solve

“Try to solve” applies the safe automatic fixes:

  1. Snaps near-coincident endpoints together so the loop closes.
  2. Drops zero-length walls.
  3. Recovers the boundary from the wall cycle.

Detached islands and self-crossing loops can’t be solved automatically — fix those by hand with Wall Edit Mode.

Why it matters

Several features assume valid, closed rooms:

Empty rooms (no walls yet) are allowed and won’t block saving — they’re flagged so you remember to draw into them or delete them.

Next