docs / features / Thicken
Thicken
Status: Implemented

Thicken converts one or more selected open faces into individual closed solids by offsetting each face along its local normals and stitching side walls around every boundary loop.
Walkthrough

Recorded from the running app by BREP_mcp/tests/videos/thicken.json; regenerate every walkthrough with ./build.sh docs-videos.
Inputs
face– multiplereference_selection(FACE, default[]). Each resolved face is thickened independently.distance–number, default1. Signed thickness along the face normals. A zero or non-finite value is a soft no-op.id–string, defaultnull. Optional identifier used as the result name for a single face, or as the prefix for multi-face outputs.
Behaviour
- Repeated picks of the same face are thickened once.
- Each face is thickened as an exact offset. If every face fails, the feature reports their reasons; if at least one succeeds, it emits the successful solids and skips the failed faces.
- Produces one new solid per selected face (more where a face is divided, below) and leaves the source geometry untouched. Multiple thickened faces are never merged into one body.
Result Naming
- Single-face thickens use the feature ID as the solid name.
- Multi-face thickens generate one solid per face using a one-based, zero-padded
<featureId>_<index>_<sanitizedSourceFaceName>. - A face that thickens into several bodies suffixes each with
_01,_02, … on top of that. - The generated cap and side-wall faces are not named.
Notes
- Positive and negative distances are both supported.
- Faces with holes generate side walls around every boundary loop.
- Curved faces are supported, including general (non-iso) trim boundaries.
- Full-ring cylinder and fillet strips are supported, including rectangular trims over part of their meridian. Their periodic seam is shared by the offset faces.
- A face that cannot be thickened on its real trim boundary is reported as a failure with the reason, not as a solid. The cases that refuse include a general boundary that cannot be fitted to tolerance, a periodic patch outside the full-ring strip cases (split it at the seam first), open, misoriented, or pinched boundary loops, and a thickness that offsets through the surface's centre of curvature.
- That last refusal is judged over the selected face, not the whole surface it was cut from. A face trimmed clear of a tight spot — the apex end of a cone, the inner equator of a torus — thickens normally. A tight spot the face does cover is refused with the parameter and the 3D point where it lies — unless the face can be divided (below).
- A tight spot covering only PART of the selected face is traced and the face is divided along it, but the part beyond the tight spot is only dropped when the material it would have contributed is already inside what is built; otherwise the result would bound less than the face's normals sweep. When that happens the feature refuses, naming the parameter it started from, where its normal reached, and how far along the thickness it got.
- The shape that catches is a face curving AWAY from a nearby axis, thickened outward past its own radius: a torus face grown outward past its tube radius has normals at its inner equator pointing straight at the axis, and they cross it. A tight spot that crosses the face as a BAND, leaving material either side, is the same thing twice.
- A band like that on a face revolved ALL THE WAY ROUND is built, as one solid, and it is the right answer rather than a division: the normals that cross the axis come out at the opposite side, which a full turn covers itself. Thickening a full ring of torus face outward past its tube radius therefore gives one body whose material includes the part that crossed — noticeably MORE than the two untouched slabs either side of the band would. A face revolved only PART of the way round is refused instead, naming the turn it was given: there the crossed material lands over angles the face never covers, which would be a second body. Revolve the face a full turn, or thicken it less.
- Any number of tight regions can divide a face. The division itself is refused when a tight spot enters and leaves the face an odd number of times, touches the face's edge without crossing it, cuts a hole out of the face, or crosses another inside it.
- A slab whose result would pass through itself is refused, naming the faces and the point: two offset faces (or an offset face and a side wall) crossing each other, or a single face folded over itself where the source curved tighter than the thickness. Such a slab can close and measure the right volume while passing through itself. Where two faces cross along a curve, they are first split there and the material between dropped; the refusal appears only when that cannot be resolved, and it says why.