Nesting Components

Components for packing flat parts onto stock sheets

Nest Parts (Nest)

Nests flat parts onto stock sheets with minimal waste. Parts pack against their true outlines (concave shapes interlock), honor a spacing gap derived from the material thickness (or an override), and rotate in fixed steps. Parts of different thickness are automatically nested onto separate sheets. When parts don't fit on one sheet, additional sheets are opened; parts that fit on no sheet are reported as unplaced.

Nesting decides where each part sits on which sheet. You give it flat parts and the
stock you have; it returns placement planes you can use to orient the real geometry.

Gap and margin on a nested sheet
Gap and margin on a nested sheet

Parts pack against their true outlines, not their bounding boxes, so an L-shape nests
into the notch of another L-shape. Two spacings control the packing: the Gap between
neighbouring outlines, and the Margin inset from the sheet edge. Leave Gap unset and it
is derived from the material thickness.

Parts of different thickness never share a sheet. They are split into groups and nested
separately, so a 2 mm part can never land on a 3 mm sheet.

Inputs

NameNickTypeAccessDefaultDescription
PartsPGenericlistParts to nest: Unroll Results (from the Unroller component) or closed planar curves in the XY plane.
QuantitiesQIntegerlistHow many copies of each part to place. One value per part, or a single value for all (default 1).
SheetsSRectanglelistAvailable stock sheet sizes as rectangles. Multiple sizes allowed. When a new sheet is opened, remnants come first (see R), then the smallest size that fits.
Sheet QuantitiesSQIntegerlistSheets available per stock size. One value per sheet rectangle; 0 or negative means unlimited (default unlimited).
RemnantsRBooleanlistMarks a sheet size as leftover scrap you already have, rather than fresh stock you would buy. Sheets marked true get used up before any standard stock, so odd offcuts leave the rack instead of sitting there. Useful when an offcut is larger than a standard size, since otherwise the smaller standard sheet gets opened first. One value per sheet rectangle (default false).
GapGNumberitemGap between part outlines, in document units. Leave unset to derive it automatically from the material thickness (thicker material → wider gap).
MarginMNumberitemUsable-area inset from the sheet edge, in document units. Defaults to the Gap value.
Rotation StepsRSIntegeritem8Number of rotation steps to try per part: 8 = 45° steps (default), 4 = 90° steps, 1 = no rotation.
Min Hole AreaMHANumberitem100Holes smaller than this area are ignored by the nesting logic (they are still cut). Larger values speed up nesting of parts with many small holes (default 100).
OptimizeOptBooleanitemfalseDeep optimize: searches part order and rotations with a genetic algorithm for the given time budget. Better yield, slower. Off = quick greedy mode (default).
Time BudgetTBNumberitem10Time budget for deep optimization in seconds, per material/thickness group (default 10). Ignored in quick mode.
Separate PartsSepBooleanitemfalseKeep each part type on its own sheets: copies of a part may share a sheet, but two different parts never do. Easier sorting at the machine, lower yield (default false).

Outputs

NameNickTypeAccessDefaultDescription
OutlinesOCurvetreePlaced part outlines (incl. holes), one branch per sheet. Sheets are laid out side by side for preview.
Sheet FramesFRectanglelistThe outline of every sheet used, in the same preview layout.
PlacementsPLPlanetreePlacement plane per placed part, one branch per sheet. Orient the source geometry from World XY onto this plane.
InfoITextitemJob summary: sheets used, yield, unplaced parts.
UnplacedUTextlistParts that could not be placed, with the reason. Empty when everything fits.
ResultResGenericitemThe full nesting result object (sheets, placements, source curves, sheet size/gauge) in true sheet-local coordinates, for downstream CNC/machine-file tooling.

Remnants: using up your offcuts

Stock sheets versus remnants
Stock sheets versus remnants

A remnant is scrap you already have, rather than fresh stock you would buy. Mark a sheet
size as a remnant and it gets used before any standard stock, so odd offcuts leave the rack
instead of sitting there.

This matters most when an offcut is _larger_ than a standard sheet. Without the remnant
flag, the nester opens the smaller standard sheet first and your big offcut never gets
touched.

Remnants are matched to sheet sizes by position: one boolean per rectangle in Sheets.

A worked stock list

Say you buy 2500 × 1250 sheets, and you have two offcuts left from an earlier job.

InputValueMeaning
Sheets (S)2500×1250, 1200×700, 800×560Three sizes, largest is your standard stock
Remnants (R)false, true, trueThe two smaller sizes are offcuts
Sheet Quantities (SQ)0, 1, 1Unlimited standard stock, exactly one of each offcut

0 means unlimited, which is what you want for stock you can reorder. The offcuts are
capped at 1 because you only own one of each. The nester fills both offcuts first, then
opens as many 2500 × 1250 sheets as the job needs.

Quick mode and deep optimize

Quick mode versus deep optimize
Quick mode versus deep optimize

By default the nester runs a single greedy pass and returns immediately. Switch Optimize
on and it searches part order and rotations with a genetic algorithm until the **Time
Budget** runs out, which usually buys a noticeably better yield.

The budget is spent _per thickness group_, not for the whole job. Four different materials
at a 10 second budget is up to 40 seconds of solving. Yield climbs steeply at first and then
flattens, so raising the budget far past the default rarely pays for itself.

Reading the Unplaced output

Unplaced (U) is empty when everything fits. Any entry means a part never made it onto a
sheet, with the reason:

  • The part is larger than every available sheet. Check that Gap and Margin have not
eaten the clearance a just-barely-fitting part needed.
  • Stock ran out. Every sheet size hit its Sheet Quantities cap. Raise a cap, or set one
to 0 for unlimited.

Always check this output before sending a job to the machine. The Info (I) output gives
the job summary alongside it: sheets used, yield, and unplaced count.

Tips

  • Rotation Steps trades yield for grain direction. 8 (45° steps) is the default, 4
gives 90° steps, and 1 disables rotation entirely: use it when the material has a grain or finish direction you must respect.
  • Min Hole Area speeds up parts with many small holes. Holes below the threshold are
ignored when packing, but they are still cut.
  • Separate Parts keeps each part type on its own sheets. Sorting at the machine gets
much easier, at the cost of yield.
  • The Result (Res) output carries the full nesting result in true sheet-local
coordinates, which is what you want for CNC and machine-file tooling. The Outlines and Sheet Frames outputs are laid out side by side for preview only.