2D Panel Cutting
2D Panel Cutting is CutOptim’s primary mode. It solves the classic rectangle bin-packing problem: given a set of large rectangular sheets and a set of smaller rectangular pieces, find the arrangement that uses the fewest sheets with the least waste.
This mode is used for sheet materials including plywood, MDF, particleboard, melamine, glass, aluminium composite panel, steel sheet, foam board, and any other material that comes in flat rectangular stock.
How 2D Optimization Works
CutOptim models your cutting job as a bin-packing problem:
- Bins are your stock sheets — large rectangles you are cutting from
- Items are your demand pieces — smaller rectangles you need to produce
Rather than filling in a single greedy pass, the optimizer runs several packing strategies over your whole job — different shelf and column layouts, sort orders and rotations — and keeps the best-scoring result (fewest sheets, least waste). Every strategy uses a guillotine cutting model:
- Guillotine cutting — Every cut goes edge to edge across the sheet. This mirrors how a panel saw, table saw, or beam saw works, so the resulting cut sequence is practical for manual and semi-automatic cutting. It is CutOptim’s only cutting model today; true nested (free-form) cutting for CNC routers is on the roadmap.
CutOptim also respects kerf width — the material lost as sawdust in every cut. A 3 mm kerf on a 100-piece job can add up to losing an entire sheet. Always enter your kerf accurately. See Settings & Kerf.
Adding Stock Sheets
Stock sheets represent the raw material you have available to cut from. Each stock row defines one size and quantity of sheet.
| Feature | Type | Description |
|---|---|---|
| Width | number | Sheet width in the active unit (mm or cm). This is the horizontal dimension on the canvas. |
| Height | number | Sheet height in the active unit. This is the vertical dimension on the canvas. |
| Quantity | integer | Number of sheets of this size available. The optimizer will use as many as needed, up to this limit. |
| Price | number | Cost per sheet. Used to calculate total material cost in the results summary and quotation export. Leave blank if pricing is not needed. |
| Name | text | Optional material name for this stock size, e.g. '18mm MDF' or '2400×1200 Structural Ply'. It labels the sheet on the plan and carries into the PDF and Excel exports, so the cut sheet says which board to fetch. Loading from the Material inventory or an offcut fills it in for you. |
Best practices for stock sheets:
- Enter the actual usable dimensions of your sheet, not the nominal size. A sheet sold as 2440×1220 mm may actually be 2438×1218 mm after factory edge trimming — measure your sheets.
- If you have a mix of full sheets and partial offcuts from a previous job, add them as separate stock rows with their actual dimensions and a quantity of 1.
- Use the price field even for internal jobs. Seeing the cost breakdown helps identify whether a job is priced correctly.
Adding Parts
Parts are the rectangular pieces you need the optimization to produce from your stock. They go in the Parts (2D) table.
| Feature | Type | Description |
|---|---|---|
| Width | number | Required piece width in the active unit. |
| Height | number | Required piece height in the active unit. |
| Quantity | integer | Number of identical pieces required. |
| Label | text | Descriptive name for this piece, e.g. 'Door Panel LH' or 'Shelf 600'. Printed on the cut diagram and in the CSV export. |
| Rot. | checkbox | Ticked (the default) lets the optimizer turn the piece 90° to save material. Untick it and the piece keeps the orientation you entered — use that when grain direction, print orientation, or material face must be preserved. Available on every plan. |
Tips for entering parts:
- Always enter a label for each piece. On a complex job with 50+ pieces, unlabelled rectangles on the cut diagram are impossible to identify.
- If you have many identical pieces, enter them once with the correct quantity rather than as separate rows.
- To add trim allowance (for pieces that need to be cut slightly oversize then trimmed to final size), add the trim amount to the width and height. For example, if you need a finished 400×800 mm piece with 5 mm trim on each face, enter 410×810.
CSV Import for Parts
If your cut list already exists in a spreadsheet, you can import it directly:
- Open the CSV ⌄ dropdown in the Parts section header (2D, 1D, or Wood) and choose Import CSV
- Choose your
.csvfile — columns are read by position:name,width,height,qty(an optional header row is detected and skipped) - The parts are added to the Parts table straight away
Not sure of the column order? Click the Template button next to the CSV import to download a ready-made CSV with the correct columns and an example row. See Importing data for the full reference.
How CutOptim Cuts: Guillotine
CutOptim’s 2D optimizer is guillotine-only — there is no cut-type toggle in Settings. Every cut is a straight line that runs from one edge of the (remaining) sheet to the opposite edge, mirroring the physical operation of a panel saw, table saw, or beam saw.
Why guillotine:
- The cut sequence can be handed to an operator as a straightforward cut list
- Works on a table saw, panel saw, track saw, or beam saw — no CNC required
- Cuts remain reproducible when material is flipped or moved between passes
Comparing against other tools: a free-nesting optimizer — one that drops pieces anywhere on the sheet — will usually report a higher yield than a guillotine optimizer on the same list. That gap is the price of cuts you can actually make on a panel saw, not a defect. Compare like with like before judging a number.
True nested (free-form) cutting — where pieces are placed anywhere on the sheet to squeeze out a few extra percent of yield on a CNC router — is on the roadmap as part of the planned Maximum-efficiency optimization mode. It is not a Settings toggle today.
Running the Optimization
Once stock and parts are entered, click Run optimizer at the bottom of the left sidebar, or press Ctrl+Enter. The optimization typically completes in under 2 seconds for jobs with fewer than 500 pieces. Larger jobs take longer, and the page stays unresponsive until the calculation finishes.
What CutOptim checks before running: exactly one thing — that the active mode has at least one stock row and at least one part row. If either table is empty, a short message appears and nothing runs, so an empty run never costs you an optimization from your quota.
There is no other pre-flight validation, and nothing blocks the Run button. In particular, a piece too large for any of your stock will not stop the run: the optimizer simply cannot place it, and tells you afterwards — in limited-stock mode the result summary names every piece that did not fit. Quantity fields accept whole numbers from 1 upward and fall back to 1 if you clear them.
Reading Your Results
After a successful run, the canvas shows the layout and the results panel updates:
Sheet Navigator
Use the arrow buttons or sheet tabs at the bottom of the canvas to step through each sheet used. Each sheet shows:
- Colored rectangles for each placed piece with label and dimensions
- Hatched grey areas for offcuts (pieces larger than minimum offcut size)
- Solid grey areas for waste (pieces smaller than minimum offcut size)
Yield and Waste
| Metric | Formula | Target |
|---|---|---|
| Yield % | (Total demand area) / (Total used sheet area) × 100 | > 88% |
| Waste % | (Unusable scrap area) / (Total used sheet area) × 100 | < 10% |
| Offcut % | (Saved offcut area) / (Total used sheet area) × 100 | Variable |
Improving a Low-Yield Result
If yield is below 80%, try these approaches in order:
- Check kerf width — An incorrect (too large) kerf wastes space on every cut
- Allow rotation — Make sure the Rot. checkbox stays ticked on pieces where grain direction does not matter
- Batch more pieces — Add remaining pieces from future jobs to fill the sheets now
- Add smaller stock — If you have offcuts from previous jobs, add them to the stock table and star them so they fill first
Stock Priority (★)
Each row in the Stock table has a star (★) icon on the left. Starring a stock row tells the optimizer to use that sheet first — before drawing from unstarred stock.
When to use it:
- You have a partial sheet left over from a previous job and want to use it up before opening new stock
- You have expensive or hard-to-source sheets that you want to prioritize
- You want to clear old stock before it warps or deteriorates
How to use:
- Click the ★ icon on any stock row — it turns yellow/gold
- Run the optimization — the starred sheet is used first
- Click again to remove the priority
Star all your offcut stock rows before running a job. CutOptim will consume the offcuts first, only opening new full sheets when the offcuts are exhausted. This is the most effective way to keep your offcut inventory manageable.
Edge Banding Pro
Edge banding information can be recorded per piece in the EB column of the Parts table. This marks which sides of a finished panel require edge banding, and the information appears on the cutting plan and in PDF exports.
Edge banding is a metadata/reference feature — it does not affect the optimization algorithm. It simply records which sides need banding so the information is printed on the cut sheet and labels alongside the piece.
Marking edge banding:
- Click the button in the EB column of any demand piece row
- An edge banding dialog opens with four sides: Top, Right, Bottom, Left
- Check each side that requires edge banding
- A visual preview shows the selected sides as a yellow stripe around the piece outline
- Click OK — the EB column updates to show an abbreviation of the selected sides
EB column abbreviations:
| Display | Meaning |
|---|---|
— | No edge banding |
T | Top only |
TR | Top + Right |
TRBL | All four sides |
BL | Bottom + Left |
Edge banding data is saved with the project and appears in:
- The PDF cut plan (printed on the piece label within the layout diagram)
- The Panel Labels export (one label per piece, showing selected sides)
- The CSV export (as an
edge_bandingcolumn)
For cabinet carcasses, a common configuration is BL (Bottom + Left) or TR (Top + Right) depending on whether the panel is a side, top, or shelf. Entering this once at the demand stage avoids having to figure it out again at the bench.