# Room Studio — professional editor

This independent workspace draws rooms and builds kitchen units. All measurements are in centimetres. The starting 400 × 360 × 260 cm room is an editable example. Scenes from the assisted kitchen, bedroom and general workspace use separate storage.

## Room and openings

Choose Room to edit the outline and ceiling height. Draw an outline by selecting corners in order, then Finish drawing. A counterclockwise outline is reversed; self-intersections are rejected. Replacing an outline asks for confirmation before removing its openings. Existing units keep their positions.

Select a wall and choose Edit to change its length, direction or endpoint coordinates, insert a midpoint corner or add an opening. Adjacent walls share their corners and follow a moved vertex. Opening distances start at the numbered first corner of the wall and follow the outline direction.

Choose + Door or + Window, then tap a wall to attach a green preview overlay. Tapping another wall changes the target without placing the opening. Drag to adjust its position. Tap the same wall again, or choose Place, to confirm. On mobile, dragging only adjusts: a separate brief tap confirms. A cancelled gesture or second finger does not confirm placement. The position slider and width field are available without entering angles.

Corners limit placement to the wall. A wall that is too short blocks placement until the width is reduced or another wall is chosen. Overlaps are flagged in the preview. Door buttons switch the hinge side and inward/outward swing, with the hinge, leaf and arc updating immediately.

Cancel or Escape removes the preview without saving a change. With the keyboard, Enter first selects a wall if needed; arrows move by 1 cm, Shift by 10 cm, and Enter places the opening. To move an existing opening, select it, choose Edit, then Reposition on plan. Cancel restores its original geometry; confirmation creates one undoable operation. Only confirmed openings enter saves and exports.

## Units, catalogue and measurements

Use + Unit to choose Base, Suspended wall unit, Tall unit or Extractor hood, then the usage and starting width. Edit opens contextual settings for the selected unit. Precise settings & options contains the detailed controls. The minus/plus button collapses or expands the panel without losing selection; the panel moves below the plan on mobile.

The catalogue includes standard cabinets, L-shaped and blind corners, oven and hob combinations, sink units, washing-machine niches, fillers, refrigerator units, oven towers and oven/microwave towers. Available widths depend on family and usage. These are project suggestions rather than universal manufacturing standards.

Fronts include open niches, one or two doors, transparent doors, lift-up fronts and drawers. Interiors can be empty or contain shelves. Five finishes are retained. Fronts, compartments and opening states are simplified visual representations. They do not validate hinges, clearances, hardware or a manufacturing method.

Carcass dimensions are separate from overall dimensions. Front and handle geometry can add depth. The parametric project preserves editable cabinet parameters; a geometric object export preserves generated volumes. Imported objects retain their prepared geometry instead of receiving invented cabinet parameters.

Height references default to a 90 cm worktop and a 222 cm top line for wall/tall units. The standard base assembly is a 72 cm carcass + 15 cm plinth + 3 cm worktop. Tall units can use a 207 cm carcass + 15 cm plinth. Wall carcasses remain separate from their elevation. Existing older scenes retain their stored settings. Align heights asks before changing base/tall heights and aligning wall-unit tops. Positions, angles and imported objects stay unchanged, and the action is undoable. Freestanding appliances, fillers and wall units have their own plinth rules.

Appliance recesses, ventilation and connections must be checked against actual models. A sink reserves space below its bowl; an oven uses an open appliance niche. Some front/interior/appliance combinations require removing another feature, with consequences shown before confirmation. Blind-corner doors remain on the accessible side. A corner uses its actual L-shaped footprint internally, while exported geometric collision envelopes remain conservative rectangles.

## Moving, viewing and saving

Drag units on the 2D plan. Use the round handle to rotate or enter X/Y/angle precisely. Arrow keys move 1 cm; Shift + arrows moves 10 cm. Snapping aligns angles within 3° of a right angle, walls within 10 cm and nearby objects within 8 cm. Guides indicate contacts. Snapped dragging checks the path to avoid passing through walls or units. Disable snapping for free placement with warnings; numeric fields also allow intentional conflicts.

Object elevation is independent of Day/Night mode. Collision warnings use rotated rectangular footprints and height intervals, without using gaps between legs. Elevation is a visual setting, without load or fixing calculations. In 3D, drag to orbit and scroll/pinch to zoom; two-finger camera gestures follow OrbitControls. Tap a volume to select it. Walls in front of the camera can be hidden. Fit to view restores framing.

Duplicate creates a distinct instance. Delete is undoable. Undo/Redo retains up to 50 operations during the session; that history does not survive a reload. The current scene is saved locally. Export a JSON copy for another browser/device or a durable backup. There is no server synchronization.

## Files and compatibility

Open and Export use `.json`. Scene format identifiers and field names remain unchanged:

```json
{"format":"atelier-piece-scene","version":1,"mode":"day","room":{"height":260,"points":[[0,0],[400,0],[400,360],[0,360]]},"openings":[],"objects":[]}
```

Each instance contains `id`, `kind` (`cabinet` or `import`), `label`, `placement:{x,y,angle}`, `elevation` and `choices:{day,night}`. Cabinets contain `params`; imported objects contain their normalized `definition`. Cabinet projects use `atelier-cabinet-project`, version 1. Object imports keep the existing `atelier-chambre-object` v1/v2/v3 contract; consult the [object format](../ma-chambre/FORMAT-OBJET.md). An existing definition is not silently imported twice; use Duplicate.

Scene storage is `atelier-piece-cuisine-v1`; an initial previous copy may be kept under `:previous`. Unreadable saves remain protected until explicitly replaced with a valid scene. Recovery offers a raw backup download. Opening a customer project asks before replacing the professional scene and allows Undo.

Plan coordinates increase rightwards (X) and downwards (Y); 3D uses Y vertically and Z for depth. A positive plan angle is clockwise. Visual cabinet panels are 1.8 cm and backs 0.6 cm, without structural or cutting-list validation.

Limits include 3–24 corners, walls at least 20 cm, a simple clockwise outline of at least 0.25 m², outline coordinates within ±2000 cm, room height 100–600 cm, 30 openings, 100 instances and a 16 MiB scene. Cabinet and special-unit limits are enforced by each field. Prepared object definitions remain limited to 256 KiB and 64 components per state. Unknown fields and non-finite numbers are rejected before replacement.

## Scope

This is a preliminary visual design tool. It does not produce quotes, orders, CNC files, load calculations or certified manufacturing drawings. Room outlines are simple polygons without curved walls, holes or multiple storeys. Door swings and overlaps are flagged; full window-reveal collisions and detailed hardware motion are not simulated. WebGL is needed for 3D; the 2D plan and files remain usable without it.
