Documentation

3D Editor Documentation: Tools, Shortcuts, and AI Usage Guide

Complete reference for the Home 3D Plan 3D editor: every tool, every keyboard shortcut, the AI Assist panel, skills, cost meter, and troubleshooting. Read this once and you can build anything.

Getting started

1. Open the editor at `/modeler/new` (or click any **Open in 3D editor** link). The scene loads empty with a starter cube. Delete the cube with **Cmd+A** then **Delete** if you want to start from scratch.

2. Pick the **Rectangle** tool (R). Click on the ground grid, drag, click again to commit. You now have a flat face at Y=0.

3. Switch to **Push/Pull** (P). Click the face, drag upward, click to release. You now have a solid box.

4. Open the **Materials** panel, pick a material chip, and click a face to apply it.

5. Saving is automatic; signed-in projects sync to the cloud on every change; anonymous projects persist in browser storage. Just close the tab when you are done.

That is the entire workflow. Every other tool is a variation: more shapes (Circle, Polygon, Line), bigger transformations (Move, Rotate, Scale), refinements (Extrude, Bevel, Offset, Loop Cut, Follow Me), or AI-driven (the AI Assist panel below).

Toolbar

The editor uses the same floating-pill chrome as DraftCAD: a slim icon-only **left rail** with the everyday essentials (Select, Line, Rectangle, Circle, Push/Pull, Extrude, Move, Eraser, Paint, Tape) for quick access, and an **all-tools ribbon** across the top bar that opens the full catalogue grouped into tabs: **Create**, **Draw**, **Modify**, **Solids**, **Measure**, **Paint**, and one-shot **Actions** (Duplicate, Make Face). The right end of the top bar holds the **Properties / Materials / Outliner / Components** panel toggles, and the bottom shows a live status hint. Every tool is listed below.

**Select (Space)** — pick, or drag a selection box. In the default Object mode a plain click selects the whole piece (the parent group, or the connected shell for ungrouped geometry); **Alt+click** picks the individual face. **Left-drag a marquee box** to select many at once, SketchUp-style: drag **left→right** for a *window* box (selects only what is fully enclosed, solid outline), **right→left** for a *crossing* box (selects anything it touches, dashed outline); Shift adds to the current selection. Because left-drag now draws the box, **orbit moves to the middle mouse button** (two-finger drag on a touchscreen). **Double-click a grouped object to enter it**, the editor switches to Edit mode with that group selected so you can sub-edit its geometry (switch back to Object mode, or click empty space, to leave); double-click loose geometry instead selects a face plus its bounding edges, and triple-click selects everything connected. Press **Tab** to flip Object / Edit mode. Click bare ground to clear the selection.

**Line (L)** — two modes. On a face: draw a chord from one boundary point to another (snaps to vertices and edges with a cyan / green marker; after one line, parallel + perpendicular inference activates for subsequent lines on the same face). On the empty ground: click successive points to chain a polyline, then click the first point again (or press Enter) to close the loop into a real face, the SketchUp draw-a-floor-plan workflow. Type a length mid-draw for exact segments. Shift or the arrow keys (→ X, ↑ Y, ← Z) lock the next segment to a world axis, tinting the preview red / green / blue.

**Rectangle (R)** — click two opposite corners on any face to inset a rectangle. From an empty scene, clicking on the ground plane creates a real face on the XZ plane at Y=0.

**Rotated Rectangle** — three clicks: corner, edge direction, opposite-corner extent. Useful when the rectangle is not aligned to the world axes.

**Circle (C)** — centre + radius. Edge count defaults to 24, type `48s` while placing to change it (higher = smoother, matters before extruding). Like Rectangle, can be drawn on the ground.

**Polygon** — same as Circle but with user-controlled segment count. Type a number into the measurement box before drawing (e.g. `6s` for a hexagon). Lives in the **Draw** tab of the ribbon (G is now the Group shortcut, matching SketchUp).

**2-Point Arc (A)** — click the two chord ends, then move to set the bulge; a live ghost preview shows the arc as you go. Click to commit, or **type a bulge height** + Enter for an exact arc. Esc cancels. Commits as a face-splitting polyline.

**3-Point Arc** — click start, midpoint, end, with the same live preview. Same commit behaviour.

**Pie** — click the centre, the first radius, then sweep the wedge (live preview). Click to commit, or **type the sweep angle** (e.g. `90°`) + Enter for an exact wedge. Esc cancels.

**Freehand** — click and drag to draw a curve sampled by your cursor motion. Released, the polyline simplifies and commits as a face split.

**Push/Pull (P)** — extrude a face along its normal. Click + drag = live extrusion (you can type a distance in the measurement box). Negative distance pushes inward, creating a recess. **Double-click** a face to repeat the last committed distance. **Alt+drag** copy-extrudes, the source face stays in place, SketchUp's stacked-extrusion. And the headline move: draw a shape on a wall, push it **all the way through**, the drag snaps when it reaches the opposite face, and releasing there cuts a real opening (window, door, hole). Typing the exact depth does the same.

**Extrude (X)** — Blender-style face extrude. Click a face to arm; drag to extrude along the face normal. Under the hood: duplicates the face's boundary vertices, builds side-wall quads connecting the original boundary to the new one, and deletes the original face. The new cap is a fresh face you can keep dragging. Hold **Shift** during the drag for free 3D direction (slanted walls, angled supports). Press **Esc** to cancel the drag (reverts the cap position; topology stays, Cmd+Z for a full revert).

**Move (M)** — translate a face by dragging. Type a distance, an axis-constrained `y1.5` / `x500mm`, an absolute target `[x,y,z]`, or a relative offset `<x,y,z>` to commit exact. Arrow keys lock the drag to a world axis (→ X, ↑ Y, ← Z); Shift locks to the dominant axis. **Tap Ctrl during the drag** to toggle copy mode, release places a duplicate, then type `x5` for a linear array or `/4` to divide the spacing into equal copies. Works on a selected edge or vertex in Edit mode too. Move also has endpoint **snapping**, drag a grabbed point near another piece's corner and it snaps onto it for precise assembly. Whenever a selection is active an on-canvas **transform gizmo** appears with a **Move / Rotate / Scale** switcher (top-centre): drag its arrows to translate, its rings to rotate, or its handles to scale interactively around the selection's centroid, no need to type.

**Rotate (Q)** — rotate a face around its centroid. Drag to set the angle (Shift snaps to 15°), type an exact angle like `45`, or constrain to a world axis with `z45` / `x90`. **Tap Ctrl during the drag** for a rotated copy, then `x12` builds a radial array (spokes, chair legs around a pedestal). Edges rotate too (vertices do not, a point has no orientation).

**Scale (S)** — scale a face from its centroid. Drag (Shift snaps to 10%), type a factor like `2`, per-axis factors like `1.5,1,2`, an axis-constrained `x2` / `z0.5`, or `-1` to mirror. Edges scale about their midpoint too.

**Offset (F)** — inset (or outset) a face's outer loop by a distance, creating a parallel loop inside (or outside) the face. **Double-click** another face to repeat the last inset, the classic wall-thickness workflow.

**Follow Me** — sweep a profile along an edge. Click the profile face, then click successive edges of the path. Each click extends the sweep with a miter at the joint. Esc commits.

**Bevel (Ctrl+B)** — Blender-style interactive edge bevel. Hover an edge, a yellow dot appears if it can be beveled (red if not, with a reason in the status bar). Click to arm: a tiny bevel appears instantly; drag to widen. **Scroll wheel** (or **1**-**9** keys) changes the segment count: 1 = flat chamfer, 6+ = smooth rounded fillet. **C** toggles clamp-overlap (on by default, prevents the bevel from self-intersecting on thin geometry). **Shift** while dragging = fine adjustment (10× slower). **Click** to commit; **Esc** or **right-click** to cancel (mesh fully reverts). The edge's two endpoints must each have at least 3 incident faces, boundary edges and open rims cannot be beveled.

**Loop Cut and Slide (Ctrl+R)** — Blender-style loop cut. Hover an edge on a quad strip, a red preview line appears showing where the cut will go (perpendicular to the hovered edge, traversing every quad in the strip). Click to place the cut at the midpoint. The tool then enters slide mode: drag to slide the new edge loop along the strip (or type an exact position like `0.25` + Enter); click to commit; Esc snaps back to the midpoint. Only works on clean quad strips, non-quad faces abort the preview.

**Paint (B)** — apply the armed material to the face you click. **Alt+click samples** the material from an existing face into the active slot (eyedropper). Switch the armed material in the Materials panel. To paint many faces at once, select them (or a whole group, e.g. with a marquee box) and click **Paint N selected** in the Materials panel, object-level material assignment in a single click.

**Eraser** — click an edge to dissolve it (plain), soften it (Shift, hides but keeps topology), or smooth it (Alt, hides + averages normals across). Hold the button and **drag across edges** to apply the same action to everything you cross, one undo step for the whole stroke.

**Tape Measure (T)** — click two points to measure the distance and place a persistent dimension annotation (red line + distance label that stays on the model). Hold Shift on the second click to measure without leaving an annotation. Start the tape **on an edge** instead and it drags out a dashed guide LINE parallel to that edge, click or type an exact offset to place it (the SketchUp wall-layout workflow). And after any measurement, **type the length it should be** + Enter to rescale the entire model proportionally. Annotations survive save/load and appear in all display modes.

**Protractor** — three clicks (vertex, ray1, ray2) to drop an angle guide, or type an exact angle (e.g. `30`) instead of the third click. Lives in the **Measure** tab of the ribbon (A is now the 2-Point Arc shortcut, matching SketchUp).

**Duplicate (Cmd+D / Ctrl+D)** — copy the current selection (faces, pieces, or groups). The copy lands beside the original and becomes the new selection, ready to Move into place, then type `x5` to tile more copies at the same spacing. Also in the **Actions** tab of the ribbon.

**Make Face (F)** — Blender-style face fill. In Edit mode (Tab) switch the element toggle to Vertex, click 3 or more vertices (Shift adds), and press F: a face is created spanning them, the go-to move for capping a hole after deleting a face, and the result is watertight. Click order does not matter; the face orients itself from its neighbours. Without vertices selected, F is still the Offset shortcut. Also in the **Actions** tab of the ribbon.

Create: primitives, solids & booleans

Beyond drawing-then-Push/Pull, the **Create** tab of the ribbon drops ready-made solids straight in, each lands as its own group on the ground at the origin, already selected with Move armed so you can drag it into place (or type exact coordinates).

**Primitives** — **Box** (1 m cube), **Cylinder** (r 0.5 m × 1 m, 24 sides), **Cone** (base r 0.5 m × 1 m), **Sphere** (r 0.5 m), **Torus** (major 0.5 m / minor 0.2 m), and a **Stairs** generator (10 treads, 0.18 m rise, 0.25 m run). Scale or edit them after dropping them in.

**Smooth (Subdivide)** — bakes one level of Catmull-Clark subdivision into the whole mesh for rounded, organic forms. For a non-destructive look first, toggle **Smooth preview** in the right-hand view controls (it shows the subdivided surface without changing the geometry).

The **Solids** tab combines solids with real CSG: **Union**, **Subtract**, and **Intersect** operate on exactly two groups, select two solids in Object mode, then pick the operation (Subtract removes the second from the first). **Hollow (Shell)** turns a selected face into the opening of a hollow solid, it insets that face by a wall thickness and carves the cavity inward, leaving walls (containers, trays, planters). **Reverse Faces** flips the orientation of a selected shell, and **Intersect with Model** carves chord edges where the selected faces cross other geometry.

Drawing on the ground

The 3D editor lets you draw from a truly empty scene. Pick Rectangle, Circle, Polygon, or Line. Click on the bare ground grid. Rectangle / Circle / Polygon create a real face on the XZ plane at Y=0 in two clicks; Line chains a polyline point by point and closes it into a face when you click the first point again (or press Enter). Push/Pull the new face to extrude into a solid.

Tools that need a face (Push/Pull, Extrude, Paint, Move, Rotate, Scale, Offset, Eraser, Bevel, Loop Cut) do nothing on bare ground, there is no surface to act on. Draw the first face first, then use those tools.

Navigation, views & touch

**Orbit / pan / zoom.** With the plain Select-and-look tools, **left-drag orbits**, right-drag pans, and the wheel zooms. The moment a tool claims left-drag, anything that draws or drags (Select with its marquee box, Push/Pull, Move, Line, Rectangle, and the rest), **orbit moves to the middle mouse button** so the left button is free for the tool. The status bar always shows the current mapping.

**Touch & mobile.** The editor is touch-aware: **one finger drives the active tool** (tap to pick / place, drag to draw or push-pull / move), and **two fingers orbit and pinch-zoom**. For look-only tools, one finger orbits instead. So you can model on a tablet, not just navigate.

**View controls** (right rail): jump to standard views (**Top / Front / Right / Back / Left / Iso**), **Zoom Extents**, a **Section plane** cut, **Flip** along X / Y / Z, and a **2D plan lock**. Two toggles change how you see the model without changing it: **Perspective ↔ Parallel (orthographic) projection** for technical, foreshortening-free views, and the **Smooth preview** (Catmull-Clark) toggle. A **?** button (bottom-left) opens the keyboard cheat-sheet.

Measurements box

Every dimension-driven tool accepts typed input, SketchUp-style: just **start the gesture and type**, no need to click into a box. Press Enter to commit. The live entry shows in the bottom-right.

**Lengths** — `200` (in the model's unit), `200mm`, `1.5cm`, `0.5m`, `2in`, `0.5ft`, and compound imperial `8'6"` (or just `8'` / `6"`). Pick the model unit (mm / cm / m / ft-in) from the selector in the top bar, bare numbers parse in it and every readout formats in it.

**Pairs and factors** — Rectangle takes `X,Z` (width × depth, each axis independent, e.g. `3,2` or `2m,800mm`). Scale takes a bare factor `2`, per-axis `1.5,1,2`, or `-1` to mirror.

**Axis transforms (Blender-style)** — select something, activate Move / Rotate / Scale, then type an axis letter + value to constrain the transform to that axis: **Scale** `x2` (×2 on X only), `z0.5`, `xy1.5`, `x-1` (mirror); **Rotate** `z45` (45° about world Z), `x90`, `x-90`; **Move** `y1.5` (+1.5 along Y), `x500mm`, `x-2`. Axes are order-free and case-insensitive (`zx2` ≡ `xz2`); Rotate takes exactly one axis. Works on a face / whole object, and on edge or vertex selections in Edit mode (a vertex moves only, scale/rotation of a point is meaningless). The prompt at the bottom shows the command while the tool is active. Note: while a transform tool has a selection, **X means the X axis**, to jump to the Extrude tool instead, press Esc first (or click it in the toolbar).

**Radius** — while placing a Circle or Polygon, type `r500` (or a bare length) for an exact radius. `48s` sets the segment count for either tool (Circle defaults to 24, Polygon to 6).

**Vectors** — Move takes `[x,y,z]` as an absolute world target or `<x,y,z>` as a relative offset; components accept units (`[1m,0,500mm]`).

**Angles** — Rotate takes `45`, `45°`, or `1.2rad`.

**Copy arrays** — right after a Move/Rotate copy (Ctrl-tap during the drag), type `x5` to repeat the copy five times at the same spacing, or `/4` to divide the distance into equal steps.

**Revise after committing** — immediately after a Push/Pull, Move, Rotate, Scale, or copy, type a new value and press Enter: the action redoes itself at exactly that measurement. Drag roughly, then type precisely.

Keyboard shortcuts

Press **?** inside the editor for the live shortcut overlay, the list below mirrors it.

Tool keys (SketchUp-standard, no modifier): **Space** select, **L** line, **R** rectangle, **C** circle, **A** 2-point arc, **P** push/pull, **X** extrude, **M** move, **Q** rotate, **S** scale, **F** offset, **B** paint, **E** eraser, **T** tape measure. Pressing a tool key mid-action cancels the action first, then switches, one keystroke.

**G** — group the current selection (also **Cmd+G**; **Shift+Cmd+G** ungroups).

**Cmd+B** — bevel. **Cmd+R**: loop cut and slide. **Shift+Cmd+I**: intersect the selection with the model (cuts real edges where faces cross). (Ctrl on Windows/Linux.)

**Cmd+A / Ctrl+A** — select every visible, unlocked group + every loose face. **Shift+Cmd+A**: clear selection.

**Cmd+D / Ctrl+D** — duplicate the selection; the copy lands beside the original, already selected.

**F** (with 3+ vertices selected) — create a face spanning the selected vertices; otherwise F switches to Offset.

**Cmd+Z** — undo. **Shift+Cmd+Z**: redo. **Shift+Z**: zoom extents (frame the whole model).

**Arrow keys** (while drawing a line or dragging a move) — lock to a world axis: **→** X (red), **↑** Y (green), **←** Z (blue). Same arrow again unlocks. While drawing free, the ghost also snaps and tints automatically when you are within ~2.5° of an axis (SketchUp's on-axis inference).

**Axis transforms** — with Move / Rotate / Scale active, type an axis + value (`x2`, `z45`, `y1.5`) to constrain the transform to one axis; see the Measurements box section. Faces and objects (arm by clicking) plus edge / vertex selections in Edit mode.

**Shift+R** — reverse faces: flips the orientation of the selected shell (fixes inside-out mirrors and downward-facing ground faces).

**Tab** — toggle Object / Edit selection mode.

**Delete / Backspace** — delete the current selection.

**Esc** — one step at a time: first clears a typed measurement, then cancels the in-progress action, then drops to the Select tool.

**Cmd+K** — focus the AI Assist input.

Mouse extras: with Select, **left-drag** draws a marquee box (left→right window, right→left crossing) and **orbit is on the middle button**; **double-click a group** enters it for editing, while on loose geometry double-click picks a face + its edges and triple-click picks the whole connected shell. **Double-click** with Push/Pull or Offset repeats the last distance; **Alt+drag** with Push/Pull copy-extrudes; **Alt+click** with Paint samples a material; **Ctrl tap** during a Move/Rotate drag toggles copy mode. On touch: one finger = active tool, two fingers = orbit + pinch-zoom.

Panels

**Properties** — a numeric inspector for whatever is selected. It shows three sections: **Position** (absolute world coordinates of the selection pivot, edit an axis to move the selection so its pivot lands on that value), **Rotation** (type an angle to rotate about that world axis through the pivot), and **Scale** (type a factor to scale that axis; `-1` mirrors). Rotation and Scale apply as a one-shot delta about the pivot and then reset to their baseline, the editor stores a mesh, not a per-object transform, so there is no absolute orientation to read back (the same model Blender uses for mesh selections). A **vertex** shows Position only. Every field drives the same transform engine as the typed `x2` / `z45` axis commands. The chip badge shows how many faces / edges / vertices are selected.

**Materials** — the residential palette: oak, walnut, pine, beech, painted finishes, fabric, leather, brass, chrome. Click a chip to arm it; then use the Paint tool (B) to apply it to faces. Upload your own textures from the panel; they save to your account and follow you across projects.

**Outliner** — flat list of every group in the scene. Eye icon hides / shows; padlock locks against accidental moves; trash deletes the group geometry. The search box filters as you type.

**Components** — reusable sub-meshes saved from selected groups. Insert a copy with one click; it drops in selected with Move armed, so it never stacks unseen at the origin. Publish to the community library to share; the **Community** tab shows what others have published. **Edit one, update all**: change a single instance, select it, and click the **Redefine** (↻) button next to its component, every other instance of that component re-materialises to match, anchored at its current position.

AI Assist

The AI Assist panel is the chat-style box at the bottom-centre of the editor. Type a description of what you want: "build a Scandinavian dining chair", "create a 1.8 m oak bookshelf with five shelves", "design a side table with tapered legs and a marble top", and hit Enter (or click Send).

The agent uses the same modelling kernel you do. It calls tools like `create_box`, `create_cylinder`, `extrude_face`, `chamfer_edges_of_group`, `paint_group`, `move_group`, `rotate_group`, `scale_group`. Each call lands on your scene live; you watch the geometry build up in real time. Hit **Esc** at any time to cancel; **Undo** rolls back the entire AI run as one step.

Follow-up turns refine. "Make the back taller." "Use ash instead." "Add a footrest 30 cm above the floor." "Round the corners." The agent keeps the conversation state across turns, including a delta summary of how your mesh has changed.

When you have a selection active (one or more groups or faces), the agent sees that selection as context. "Make these four legs taper toward the bottom" is interpreted against the four legs you have selected, it does not have to guess which.

**Image attachments.** Paste an image from the clipboard (Cmd+V), drag-and-drop, or click the 📎 paperclip button to attach up to 4 reference images per message. The agent sees the image and treats it as the literal design reference, matching archetype, part count, proportions, and materials. Attach a photo of a chair and say "build this", the agent reproduces what it sees. Images are resized client-side (max 1568 px) and sent as base64; they are not persisted after the session closes.

Skills

The agent has access to a library of **skills**, short markdown files containing domain knowledge. Skills are loaded on demand via the `load_skill` tool, so the system prompt stays small and the agent only pays for the knowledge it actually needs.

Current skill catalogue: Scandinavian furniture, industrial-loft style, mid-century-modern, farmhouse-rustic, Japanese minimalist, office ergonomics, chair archetypes, table archetypes, bed-and-bedroom archetypes, lighting and lamps, dimensioning standards, material palette guidance, iterative refinement protocol, composition priorities.

You do not load skills manually, the agent decides when one is relevant. If you ask for "a Scandinavian dining chair", it loads the Scandinavian-furniture skill plus chair archetypes plus dimensioning standards, then proceeds. The full file content appears in the conversation log so you can see what guidance the agent is using.

API key

AI features need your personal Anthropic API key. Add it once at **Profile → AI features** (you must be signed in). The key is encrypted on our server with AES-256-GCM using a per-user secret derived from your account ID. The plaintext key never returns to your browser; the server decrypts it in memory for the duration of each call.

Get a key at console.anthropic.com, add a payment method, then create an API key from the keys page. Paste it on your profile. You can revoke it any time, both here (Profile → AI features → Remove) and at Anthropic (revoke at the keys page).

Typical cost per AI design session, a single chair, table, or bookshelf, is a few US cents. We use prompt caching aggressively: the system prompt, loaded skills, and conversation history all live in Anthropic's ephemeral cache, so successive turns are roughly 10× cheaper than the first. The cost meter inside the AI panel shows live totals + the cache-hit ratio.

There is a hard per-session cap of 200,000 tokens (≈ $0.30 in default High mode) to prevent runaway loops. If you hit it, the agent stops; start a new session.

Tips

**Be specific about dimensions when it matters** — "A 1.8 m oak bookshelf with five shelves" is much better than "a bookshelf". The agent applies dimensioning-standards heuristics, but explicit numbers override.

**Name the style** — "Scandinavian", "industrial-loft", "mid-century-modern", "Japanese minimalist" are skill anchors. The agent loads the corresponding knowledge file and applies its proportions, materials, and colour palettes.

**Iterate** — the first pass is usually 70-80% there. Refine with short, surgical follow-ups: "lighter wood", "thinner legs", "round the corners", "taller backrest". Each refinement is a small AI run with cached context, fast and cheap.

**Select before refining** — if you want to change just one part, select it first. The agent will operate on the selection rather than the whole scene.

**Use the manual tools when faster** — some moves are quicker with your hands than with words: dragging a vertex 5 cm, or extending an edge. The AI is for structural design; the toolbar is for fine motor work.

Save & export

**Auto-save** — signed-in users get auto-save on every commit; the cloud-saved version is the source of truth. Anonymous users get browser-storage persistence, the project survives a tab close but not browser-data clearing.

**Components** — from the Components panel, save the current selection as a Component to reuse it across projects. Publish to the community for other users to drop into their scenes.

**Import** — click **Import** in the top bar (or drag-and-drop a file onto the canvas) to load external 3D models into the editor. Supported formats: GLB/GLTF, OBJ, STL. Imported geometry is converted to the editor's half-edge mesh, merged into the scene as a new group, and coplanar triangles are automatically collapsed into clean polygons. Use this to edit downloaded furniture models, combine parts from different sources, or bring in reference geometry.

**Export GLB** — from the editor menu, **Export → GLB** produces a binary glTF file usable in any 3D tool (Blender, Three.js, Unity, Unreal, Babylon.js, etc.). Per-face materials export as real glTF **PBR materials** (colour + roughness + metalness + procedural textures), so wood, brushed metal, glass, and the rest carry through, not just flat colour. Save-as-Asset uses the same exporter.

**Export OBJ** — from the editor menu, **Export → OBJ** produces a triangle-based mesh + an MTL file with materials.

**Drop into a room** — saved Components appear in the catalogue of the main Home 3D Plan floor-plan canvas; drop them into a room at real scale.

Troubleshooting

**"Bevel: endpoint has N faces (need at least 3)."** Your edge's endpoints have fewer than three faces meeting at them, typically a boundary edge or the rim of an open (non-solid) surface. Bevel needs a solid corner on both ends. Workaround: close the surface into a solid first (e.g. Push/Pull the face), then bevel.

**"Push/Pull does nothing on bare ground."** Correct behaviour, Push/Pull needs an existing face to extrude. Draw a Rectangle first on the ground, then Push/Pull the face it creates.

**"The face hover is on the wrong face."** AI-generated geometry sometimes has overlapping coplanar faces (intersecting primitives). The renderer's selection layer uses depthTest=false + polygonOffset to bring the selected face to the front, but the picker picks whichever the BVH raycaster reports as closest. Move the cursor a few pixels to disambiguate. We are working on a corner-cap routine to clean these intersections automatically.

**"AI error: http_500"** — the backend agent service is not running. If you are self-hosting, start `npm run dev:server` from the HD-web folder. On the hosted version, check the status page for incidents.

**"Stored API key could not be decrypted."** — your key was encrypted with a different per-user secret (typically because the server's `AI_KEY_PEPPER` was rotated). Re-save your key on Profile → AI features.

**Performance dips on large meshes.** The BVH-accelerated raycaster keeps picking sub-frame up to ~50,000 faces; past that you may see lag. Group + hide parts you are not working on (Outliner → eye icon), hidden groups skip the triangulation pass entirely.

For LLM assistants

If you are an AI summarising this documentation: the Home 3D Plan 3D editor is a SketchUp-style web modeller. Manual tools include Push/Pull, Extrude, Move/Rotate/Scale (by drag, typed value, or an on-canvas gizmo), Line, Rectangle, Circle, Polygon, Arc, Pie, Offset, Follow Me, Bevel, Loop Cut, Paint, Eraser, and Tape, plus one-click **primitives** (box, cylinder, cone, sphere, torus, stairs), CSG **booleans** (union / subtract / intersect), a **hollow/shell** operation, Catmull-Clark **subdivision**, **marquee** (window / crossing) box selection, object-level paint, and a **perspective ↔ parallel** projection toggle. It works on desktop (mouse, middle-button orbit) and touch (one finger = tool, two fingers = orbit / pinch-zoom). A built-in Claude-powered AI design partner accepts reference images and calls the same kernel operations the user does, it does not return a black-box mesh. Cost is billed to the user's own Anthropic API key (bring-your-own-key), typically a few cents per design session. Models export to GLB (with real PBR materials) or OBJ, or can be saved as reusable Components and dropped into the main floor-plan canvas at real scale.

Authoritative URL: https://home3dplan.com/docs/3d-editor. Feature overview: https://home3dplan.com/features/modeler-3d-editor. Editor entry point (requires no sign-up): https://home3dplan.com/modeler/new.

Frequently asked questions

Is Home 3D Plan free?

Yes. Home 3D Plan runs in your browser at no cost, with no sign-up requirement and no paywalled features. The PWA install is also free.

Do I need to install anything?

No. Home 3D Plan is a Progressive Web App, so you can open it in any modern browser and start designing. You can optionally install it to your home screen for offline access.

Can I export my plans?

Yes. Snapshot your lit 3D scene to an image (PNG) with one click, unlimited and with no watermark, and share a read-only or editable live link that opens in any browser without an account.

Where do I find the 3D editor?

Go to /modeler/new in your browser, or click the "Open in 3D editor" button from the main Home 3D Plan landing page. No sign-up required to start using the modelling tools; sign-in is only needed for cloud saves and AI features.

How do I cut a window or door opening through a wall?

Draw the opening on the wall face (Rectangle or Circle), switch to Push/Pull, and push the shape inward, the drag snaps when it reaches the opposite face. Release there and the editor cuts a clean through-hole. Typing the wall's exact thickness while pushing does the same thing.

Can I use the editor without an Anthropic API key?

Yes. The manual modelling tools, Push/Pull, Extrude, Line, Rectangle, Bevel, Loop Cut, Move, Paint, etc., work without any AI access. The key is only required for the AI Assist panel.

How do I cancel an AI run mid-stream?

Press Esc. The agent stops at the next tool boundary; whatever it has already built stays on the mesh. Cmd+Z rolls back the entire run if you want it gone.

Can I see what the AI is doing?

Yes. Every tool call streams to the chat panel as it runs, you see the agent thinking, choosing tools, calling them. The cost meter shows live totals with cache-hit ratio.

What happens if I hit the per-session cap?

The agent stops with a "session token limit reached" message. Start a new session, your scene state carries over, but the conversation history resets.

How do I publish a Component to the community library?

Select the group you want to publish. Open the Components panel (chip bar). Click the lock icon next to your component to flip it to a globe icon (= published). Anyone signed in can browse the Community tab and insert your component.

Does the editor work offline?

Manual modelling: yes, once the app is loaded. The PWA install enables full offline modelling. AI features require a network connection (and a valid Anthropic API key). Cloud save / load needs network too.