Procedural layout · not generative

A commercial gym floor,
laid out by rules you can read.

PC Fitness solves egress before it places a single machine, then lays equipment into banks at the clearances its rule pack requires. You see the result in 2D and in 3D, and you leave with a floor plan, a priced equipment schedule and a rendered walkthrough — all built from the same integer-millimetre geometry.

Runs in your browser. No account needed to use it, and it keeps working with the wifi off.

80′-0″ × 120′-0″ · 15 s · 2560 × 1440 render
A 15-second walkthrough of a solved 80 × 120 ft layout. Rendered offline, frame by frame, from the same geometry that prints on the drawing — not a screen recording of a viewport.
Solve time, 80 × 120 ft shell
2.8 s

3 ranked scenarios, 75 machines placed, zero error-severity clearance issues.

Floor grid resolution
50 mm

The whole floor is rasterised before anything is placed on it.

Equipment in an egress path
0

Not a check that runs afterwards. Those cells are removed from the grid first.

Same project, same seed
Identical

Re-solving does not quietly move a rack. Reproducible, every run.

It is procedural. No model invents your gym.

There is no prompt, no diffusion, no hallucinated equipment, and nothing is “in the style of” anything. A treadmill has 2000 mm of clear floor behind it because a line in the rule pack says 2000 mm — and you can open that line, read the standard it cites, and change it.

The rules live in a JSON file, not buried in code. Each value carries the section it came from and a flag saying whether a human has checked it against the published document. When you swap a rule, every layout that depends on it changes for a reason you can point at.

The same is true of the picture. Every pixel in the 3D view and in the rendered walkthrough is the actual geometry at actual size — the same integers in millimetres that dimension the drawing. If a machine appears in a frame, it is on the equipment schedule.

Circulation is not what is left over.

Occupant load, the number of required exits, exit widths, travel distance and a main circulation spine from the entry to the exits are all computed before any equipment exists. Those cells are then carved permanently out of the floor grid.

01  SHELL N ENTRY 02  EGRESS CARVED EXIT 1 EXIT 2 1524 mm CLEAR ENTRY 03  EQUIPMENT NONE IN THE SPINE

Cardio Selectorized Free weight Support Egress

The order is the product. Reverse the first two panels and you get the plan every other tool produces.

Nothing is ever placed in them. Not by the solver, not by a repair pass, and not by you dragging a machine across the canvas — the space is simply gone from the set of places a machine can go.

Most layout tools do the opposite: land the equipment, then draw aisles through whatever gaps survive. That is why those plans come back from plan check with the circulation redlined, and why the fix is always to remove equipment the client had already been sold.

To be explicit: solving in this order does not make a drawing compliant, and we make no such claim. It means circulation is never the thing that gets sacrificed to fit one more machine. The honest limits are below.

Six passes, in this order, every time.

The solver runs in a Web Worker as pure functions — no DOM, no randomness that is not seeded, no clock. That is what makes a run reproducible rather than merely repeatable.

  1. 01

    Grid it

    The floor plate is rasterised into 50 mm cells. Everything after this point is a question about cells, which is why “does it fit” has an exact answer instead of a tolerance.

  2. 02

    Solve egress

    Occupant load, required exit count, exit widths, travel and common-path distances, and a circulation spine from entry to exits. Those cells are removed from the grid permanently.

  3. 03

    Zone it

    What remains is split into cardio, selectorized, free weight, functional and support by target share. Cardio prefers windows. Free weights want acoustic separation from reception and studios.

  4. 04

    Row it

    Equipment goes into banks tagged A, B, C at rule-pack spacing, so the plan reads the way a floor is actually walked. Cardio faces the view or the TV wall; racks face mirrors.

  5. 05

    Check and repair

    Every piece carries a safety envelope from its SKU record. Overlaps are illegal, so when something cannot fit you get a sentence in plain English saying what and why — never silently overlapping geometry.

  6. 06

    Score it

    Three scenarios come back ranked on adjacency, daylight and budget, from one seed. You compare them side by side instead of arguing about a single take-it-or-leave-it plan.

Three deliverables that agree with each other.

PDF

Floor plan sheet

Walls, equipment tagged with its row letter, key clearance dimensions, the egress paths, a title block and a code summary of the assumptions the layout was solved under. Metric or imperial, your choice per project.

Every sheet prints NOT FOR CONSTRUCTION — REQUIRES REVIEW AND SEAL BY A LICENSED ARCHITECT OR ENGINEER. That line is not removable.

CSV

Priced equipment schedule

Every line: quantity, manufacturer, model, plan tag, footprint, electrical requirement, unit price and extended price. Running total in the app against your budget as you work.

One function computes the schedule, the sheet's schedule block and the on-screen budget, so the three cannot drift apart by a cent.

MP4

Rendered walkthrough

A 15-second 2560 × 1440 clip, rendered offline frame by frame: 32 accumulated samples per frame, 8 camera sub-positions inside a 180° shutter for real motion blur, rendered at 1.5× and downsampled. Never a screen recording of a viewport.

Today the video renders on a local GPU worker, not in the browser. See honest limits.

DETERMINISM

Same project, same seed, identical plan — byte for byte, on every run. Change the seed and you get a genuinely different arrangement, not a jittered version of the same one. It means a layout you approved on Tuesday is still that layout on Friday, and that a bug can be reproduced from the project file alone.

What this does not do yet.

This section exists because the alternative is letting you find out later. The product is built to be checkable, so here is what is currently unchecked.

  • We do not claim code compliance, and you should not rely on it for that.

    The US rule pack holds 30 values. Seven are marked verified — and every one of those seven is our own design target or trade practice, such as a 1524 mm circulation spine, not a code minimum. The other 23 are placeholders. They each name the section a human still has to open (IBC 2021 Table 1004.5, ADA 2010 403.5.1, and so on), and not one of them has been checked against the published standard yet. The file says so in its own header.

  • 7 of 26 catalog SKUs are verified against manufacturer sources.

    A record only counts as verified when all four numbers — length, width, height and weight — come from a document on the manufacturer's own domain for a currently published model. Seven clear that bar. Others carry dimensions corrected from a manufacturer document but with an unresolved identification, and some are still estimates. Each record's status is visible in the app, because a wrong footprint silently corrupts every layout that uses it.

  • Every drawing is preliminary and needs a licensed professional.

    The output is a design study for scoping, budgeting and client conversation. It is not a permit set, it is not sealed, and it does not replace an architect or engineer. Occupant load, exit capacity and travel distance in particular must be confirmed against the code edition your jurisdiction actually enforces.

  • Video export is local-only for now.

    The 3D viewport runs in your browser on WebGPU, falling back to WebGL2. The offline frame-by-frame MP4 render runs on a local GPU worker and is not part of the hosted app yet. Everything else — planning, 3D, PDF, schedule — works in the browser.

  • One rule pack, one building, one storey.

    United States rules today; the pack is a data file, so a second jurisdiction is a file rather than a rewrite. No IFC or DWG export, no MEP beyond the lighting layout, no multi-storey egress, no shop drawings.

  • Your project stays in your browser unless you choose otherwise.

    Signed out, the planner keeps projects in browser-local storage and works entirely offline — the whole tool, with the wifi off. Signing in is additive, for syncing your own projects across machines. It is not a wall in front of the product.

Draw a shell. Press Auto-Layout.

An 80 × 120 ft rectangle and one click gets you three ranked scenarios in a few seconds. Nothing to install, nothing to sign up for.

app.pcfitness.app · works signed-out · works offline