Skip to main content

Shape

Shortcut: B — pressing it again cycles cuboid → cylinder → sphere.

Shape places a solid straight into 3D: a cuboid, a cylinder, or a sphere. No sketch, no profile. The toolbar button shows the shape you used last.

The three shapes the tool places: a cuboid, a cylinder, and a sphere

The shapes

ShapeDimensions
CuboidWidth, Depth, Height
CylinderRadius, Height
SphereRadius

Every dimension is an expression, so a shape follows parameters like anything else. The shape sits on the plane it's placed on and grows along that plane's normal: a cuboid and a cylinder from the middle of their base, a sphere from the point it rests on.

Placing one

The shape follows your cursor until you click — a cuboid by its corner, a cylinder and a sphere by their centre. The first click puts it down — on a face or plane under the cursor, otherwise on the ground — and it grows away from there.

ShapeClick 1Click 2Click 3
CuboidOne base cornerThe opposite cornerThe height
CylinderThe centreThe radiusThe height
SphereWhere it restsThe radius

Each step offers its own field, ready for typing: type a size instead of clicking and that dimension stops following the cursor. The sizes also read out in the 3D view beside the edges they drive, with the one you're setting framed in amber. Enter creates it; Esc clears what's in progress.

Snapping — the context pane's toggle, shared with the drawing tools — pulls a placement click onto the nearest body corner or edge midpoint, ringed in cyan like the snaps in a sketch.

Editing

A shape is its own row in the Elements pane, named by kind. Double-click it to reopen the tool with its dimensions loaded; Apply changes re-points it, keeping its body.

Scripting

bearcad.cuboid{ width = 40, depth = 20, height = 10, name = "Block" }
bearcad.cylinder{ at = {100, 0, 0}, radius = 5, height = 20 }
bearcad.sphere{ at = {200, 0, 0}, radius = 8 }

-- On another plane: `normal` is the direction it grows, `u_axis` the width direction.
bearcad.cuboid{ at = {0, 0, 10}, normal = {0, 0, 1}, width = "side", depth = "side", height = 4 }

-- Re-point one; unmentioned fields keep their value.
bearcad.edit_shape{ index = 0, height = "side * 3" }