Contact
Draftv0.5.0 · beta

Three dimensions

The 3D pane, the UCS, solids and booleans, and the projection back to 2D that makes the whole thing worth having — plus what Draft's 3D deliberately does not do.

What Draft's 3D is for#

The 2D tool is the product. The 3D pane exists to serve it, and the workflow it has to make possible, end to end, is this:

Draw a plan in 2D → extrude it into massing → orbit and check it → cut a section or project the model back to 2D linework → place that on a sheet → plot.

Everything in this chapter is judged against that loop, and the load-bearing step is the projection back to 2D. A 3D tool that cannot produce drawings is a viewer, and Draft is not competing for viewers.

Coordinate input in three dimensions#

FormExampleMeaning
Cartesian10,20,30X, Y, Z in the current UCS
Relative@5,5,2Offset from the previous point
Cylindrical@10<45,6Distance and angle in the XY plane, then Z
Spherical@10<45<30Distance, angle in XY, then angle up from XY

An omitted Z means the current elevation, not zero. That is the rule that makes 2D drafting on a raised construction plane work at all — a plan drawn at elevation 3000 stays at 3000 when you type 10,20.

The UCS#

The user coordinate system is the frame that coordinate input, ortho, the grid and the construction plane all resolve against.

CommandAliasDoes
UCSUCSSet the coordinate system — by origin, by three points, by an entity's plane, by view, or by rotating about an axis
UCS managerUCName, save and restore coordinate systems
PLANPLANLook straight down a UCS

Dynamic UCS (F6) temporarily aligns the construction plane to the face the cursor is over, so you can draw on the side of a box without setting a UCS first.

The current UCS and the named ones are saved with the drawing, because a coordinate frame is a fact about this model — "the plane of this sloping roof" means nothing in the next file.

The UCS icon shows where the origin is and which way the axes face. Paper space has its own distinct icon, so you never have to test which frame you are typing into.

Named views#

VIEW (V) saves a camera — position, target, projection, and the visual style in force — under a name and restores it later. Named views are stored with the drawing and can be assigned to a layout viewport, which is how a sheet gets a fixed isometric that does not drift.

The 3D pane and navigation#

The 3D pane is a dockable panel rendering the same drawing as the 2D canvas. There is one drawing, one entity store and one undo stack — two would disagree, and the disagreement always surfaces at plot time.

CommandAliasDoes
3D orbit3DO / ORBITOrbit the camera about the target
Visual styleVSSet the pane's display mode
HIDEHIHidden-line view

Panning, zooming and orbiting behave as they do in the 2D pane where the gesture has a meaning in both: the wheel zooms, the middle button pans.

VPORTS gives a four-up arrangement — plan, front, side and isometric — with the active viewport drawn with a border so it is never ambiguous which one a command will affect.

The four-up viewport configuration with a solid
Third-angle projection: Top above Front, Right beside it, and an SE isometric. The drawing pane is top-left — it is the Top view, and the only pane you can draw in. The isometric carries a view cube, a named-view list, and the visual-style control, here set to Shaded.

Picking and snapping in three dimensions#

Point picks in the 3D pane resolve as a ray against the current construction plane, so a click means a definite point rather than a direction.

Object snaps work in three dimensions with the same tiers as in 2D, plus Apparent Intersection, which returns where two entities cross in the view but not in space. It is meaningless while everything is coplanar, which is why it belongs here and defaults off.

Ortho in three dimensions locks to UCS X, Y or Z, judged by the axes' screen projections: the axis you are visibly dragging along is the one that wins, and an axis pointing at the camera is not offered.

Visual styles#

A visual style is a named display mode, current per pane and per viewport, and stored on named views and layout viewports.

StyleShows
2D wireframeEdges, no depth cueing
3D wireframeEdges with the 3D camera
HiddenEdges with hidden lines removed
ShadedFlat-shaded faces under one fixed light
Shaded with edgesThe same, with edges drawn over

Shading uses one fixed light. Materials, lights and ray tracing are deliberately out of scope — see the table at the end of this page.

Elevation and thickness#

ELEV sets the current elevation — the Z at which new 2D geometry is created — and the current thickness, which extrudes new 2D geometry into a vertical surface as it is drawn. This is the 2.5D layer, and it covers the simple cases that would otherwise need a solid.

Solids#

A solid is one entity type carrying two things: how it was made, and a mesh to draw.

"How it was made" is either a primitive with parameters — a box's length, width and height — or an operation with inputs: an extrusion of this profile by this height, a union of these two solids. The mesh is derived and can always be thrown away and rebuilt.

That matters for three reasons: editing a profile regenerates the solid that used it, undo needs no bookkeeping of its own because regeneration is a pure function of the inputs, and the same invalidation pass that serves dimensions and hatches serves solids too.

Curvature is faceted. A cylinder is a prism with many sides. The tessellation tolerance is a per-solid property with a drawing-wide default, so a solid can be regenerated finer later without loss as long as its history is intact. The honest consequences:

  • A shaded or hidden view shows facet edges on curved surfaces at high zoom.
  • Measuring across a tessellated cylinder returns the chord rather than the diameter, short by the sagitta. Object snaps do not have this problem — they resolve against the parametric definition, not the mesh.

Primitives#

Each is parametric: every prompt is a stored parameter, editable afterwards by grip or in the Properties palette. All are created on the construction plane, with height along UCS Z unless a prompt says otherwise.

CommandAliasFlow
BOXBOXFirst corner (or Center) → other corner (or Cube / Length) → height
CYLINDERCYLBase centre → radius (or Diameter, 3P, 2P, Ttr) → height (or Axis endpoint)
CONECONEAs CYLINDER, plus a Top radius keyword that makes it a frustum
SPHERESPHERECentre → radius (or Diameter)
TORUSTORCentre → overall radius → tube radius
WEDGEWEAs BOX; slopes down along its length from the first corner
PYRAMIDPYRBase centre → Sides (default 4) → base radius → height, with Top radius for a frustum

Each has a live preview that tracks the cursor. A zero or negative dimension is rejected with a reason — a degenerate solid is not a solid — and typed values use the full unit syntax.

Solids from profiles#

The four ways a 2D drawing becomes a 3D one.

CommandAliasDoes
EXTRUDEEXTSweep a closed profile along its normal, a Direction, or a Path, with an optional Taper
REVOLVEREVRevolve a profile about an axis through an angle
SWEEPSWSweep a profile along an arbitrary path
LOFTLOFTBlend between two or more profiles
PRESSPULLPPPush or pull a bounded region directly

The solid stays associative to its profile: editing the profile or the path regenerates the solid. The profile is kept as an editable source, hidden from view and selection and reached through the solid, so that deleting it does not throw away the thing you will want to edit and leaving it visible does not litter every extrusion with a duplicate outline at its base.

Closed profiles only. An open profile would extrude to a surface, and Draft has no surface body — it is refused with that reason rather than silently producing something booleans cannot use. A taper steep enough to close the section before the full height is reached is likewise rejected with the reason.

Booleans#

CommandAlias
UNIONUNI
SUBTRACTSU
INTERSECTIN

Booleans are mesh operations, and the result keeps its history — the inputs are retained so the operation can be re-evaluated.

Editing solids#

CommandAliasDoes
3DMOVE3MMove along a gizmo axis or plane
3DROTATE3RRotate about a gizmo axis
ALIGNALAlign by source and destination point pairs
SLICESLCut a solid with a plane, keeping one or both halves
SECTIONSECProduce a section region at a plane
SOLIDEDITSOLIDEDITEdit a sub-selected face, edge or vertex

The 3D pane uses a gizmo rather than grips, because a grip drag cannot express an axis constraint in a projected view without a UCS dance first. Grips remain the 2D mechanism. This is not a compromise between two habits — it is what each mechanism is actually good at.

Generating 2D from 3D#

FLATSHOT (FSHOT) projects the model into the current view as 2D linework — visible edges as one set, hidden edges as another, on layers you choose. That linework is ordinary drawing content: it can be trimmed, dimensioned, hatched and placed on a sheet like anything else.

This is the step the whole chapter exists for.

Files and interoperability#

Meshes exchange as OBJ and STL. 3DS, FBX and glTF carry meshes plus a scene graph and materials; the mesh half is possible and the rest is out of scope. STEP and IGES are B-rep interchange formats, and Draft has no B-rep to write — see below.

What Draft's 3D deliberately does not do#

Each of these is a decision with a reason, not a backlog entry, and each traces to the choice not to hand-write a B-rep or NURBS kernel.

Not doneWhy, and what Draft does instead
NURBS surface modellingA dedicated surface modeller's entire product — a decade of work, and attempting it badly is worse than not attempting it. Draft models with parametric solids and meshes
Precise B-rep solidsThe same. Curvature is faceted, and the consequences are stated out loud rather than hidden
Edge fillets and chamfers on solidsRequires B-rep. The most conspicuous absence, deliberately visible
Surface bodies (open, zero-thickness)No surface representation exists. Thickness covers the simple cases; open profiles are refused with the reason
Rendering: materials, lights, ray tracingA separate product with a separate audience. Shading uses one fixed light; anyone needing an image exports OBJ
Walk, fly and camera animationVisualization, not drafting. Nothing in the workflow above needs them
Point clouds and scan dataA large problem in its own right, with its own performance model and no overlap with the rest of the engine
STEP / IGESB-rep interchange formats with no B-rep to write
A separate 3D undo stack or entity storeOne drawing, one undo stack. Two would disagree, and the disagreement always surfaces at plot time

The familiarity test applies to this table as much as to the 2D one: a competent user encountering any of these should understand within ten seconds what Draft is and is not — not discover it three weeks into a project.

The parametric node graph#

Shipped Parametric node graph Amalgative Draft 0.5.0

Deferred past 1.0 on 2026-08-19 and built anyway, shipping 2026-09-01. Both scopes: the drawing's own graph, the editor as a third viewport mode with every gesture routed through a registry command, and component graphs end to end. Eleven graph.* commands; the activity-rail panel has been stage "shipped" since 2026-09-04. This entry read "deferred" with the note "Its panel is listed in the rail, disabled" until 2026-09-10 — by then every clause of that sentence was false.

The node graph is a visual graph that generates drawing geometry from parameters — change a number, and every wall, opening and stair that depends on it moves. It consumes both the 2D and 3D engines, so it cannot be right before they are. Its panel appears in the activity rail, disabled, so the roadmap is visible rather than absent as a mystery.