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 the 2D Panel mode’s cutting model; for true-shape (free-form) nesting of irregular parts — for CNC routers, laser, plasma or waterjet — use the separate Nesting mode.
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 sheet size.
Sheet supply — the toggle above the table — decides how the quantities are read. In Unlimited (the default) the optimizer buys as many of each size as the plan needs, so a feasible job never fails for want of a board; the per-row quantity plays no part and its column is hidden. Switch to Limited only when you have a fixed number of boards on hand: each row’s quantity then becomes a hard cap, the optimizer combines your sizes to make everything fit, and the result names any pieces it could not cut. If a plan you know is possible comes back short, check that you are not in Limited mode with too few boards entered.
| 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 | How many sheets of this size you have. Shown and used only when Sheet supply is set to Limited, where it is a hard cap; in Unlimited (the default) the field is hidden and the optimizer uses as many sheets as needed. |
| 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 — or stepped through on screen with the Cutting Sequence player
- 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 not a cut-type toggle inside 2D Panel mode. For irregular polygons (and free-placed rectangles) use the separate Nesting mode; a rectangular free-nesting balanced engine is also available through the Engine API.
Cutting on a Panel Saw
A guillotine plan is only as good as the machine it is cut on, so five controls in Advanced Settings describe the saw rather than the material:
| Control | What it does | Modes | Plan |
|---|---|---|---|
| Trim per side | Dresses each edge of the board separately — left, right, top, bottom | 2D only (1D and Wood get the start / end trim pair instead) | Every plan, guests included |
| First cut direction | Forces the first cut on every sheet to run horizontally or vertically | 2D only | Every plan |
| Calibration cut | Skims a strip off one edge first, so you can measure it and correct the fence before cutting a part | Every mode — only the four-side picker is 2D, since a bar has one head | Every plan |
| Max. cutting stages | Caps how many times the material is turned — panel saws are specified as 2-, 3- or 4-stage | 2D only | Workshop |
| Minimise rotation | Prefers layouts that turn fewer parts, but only when that costs no extra sheet | 2D only | Workshop |
Each one is documented in full on the Settings page. The finished order of cuts is then available as the Cutting Sequence, which steps through the plan one fence setting at a time — in every mode, not only here.
CutOptim does not produce machine-specific files — there is no .opt or G-code export, and DXF carries geometry only. What it produces is the plan, the numbers behind it and an order you can follow at the saw.
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:
The sheet diagrams
Every sheet used is drawn one after another down the results panel, each under its own header showing the sheet number, the material name, the size, how many pieces it carries and how much of it is used. Placed pieces are coloured rectangles carrying their label and dimensions; the leftover material is listed under the diagrams rather than drawn on them, split into reusable offcuts and waste by your minimum offcut threshold.
The sawing plan on the results page
The results page adds two views of the order the cuts should be made in:
- The Cutting Sequence bar sits directly above the sheet diagrams it steps through — after the legend, before the first board — so the control and the boards it drives are in the same place on screen. It carries ◀ Previous, the step readout, ▶ Next, ⏮ Restart and ▶ Play.
- Further down, below the cut list, the whole plan is listed as a Cutting Sequence table: one row per fence setting, with the columns Order, Sheet, First cut direction (
horizontalorvertical, plus· Calibrationon the calibration step and· N×where one setting makes N parallel cuts) and Position. Clicking a row jumps the player to that step, and the active row is highlighted as you step through.
See Cutting Sequence for the full guide, including how the plan looks on a bar in 1D and Wood.
Cuts, saw passes and cut length
Alongside yield, waste, sheets and pieces, a 2D result reports what the plan costs the saw. These stats are shown on every plan, guests included:
| Feature | Type | Description |
|---|---|---|
| Cuts | stat | Fence settings. Collinear cuts at the same coordinate made in the same machine pass count once, because that is one setup on the saw. This is the operator-facing number, and it is also the number of steps in the Cutting Sequence. |
| saw passes | sub-line | Shown under the Cuts figure when the two differ: every strip crossed separately. This is the number Cost per cut is charged on. |
| Cut length | stat | The total distance sawn — metres in mm mode, feet in inch mode. |
| Edge banding length | stat | Total running length of edge banding the parts list needs, shown only when at least one part has edges marked. Top and bottom edges run along the part's width, left and right along its height. It is exact geometry with no waste allowance — add your own margin for overlap and trimming — and it is broken down by banding type (a line per type plus an order total). Also printed in the PDF material requirement section and on the Materials tab of the Excel export, with a dedicated 'Edge banding by piece' page in the PDF and a dedicated Edge Banding tab in the Excel export — but never on the layout-diagram piece labels. |
The two counts are not alternatives and neither is wrong; they answer different questions. How many times do I set the fence? is the first. How many times does the blade go through material? is the second. On the standard 40-part demo job (2440×1220, kerf 3), the plan takes 30 cuts, 52 saw passes and 32.88 m of sawing across 2 sheets at 83.3% yield.
Cut length is the same figure under either counting convention, so it needs no qualifier. The search already prefers the shortest-cut plan among the layouts that use the same boards, which is why the demo comes out at 30 cuts by default. If your saw limits how many times the material can be turned, cap the Max. cutting stages (Workshop) — CutOptim keeps the plan within that limit where the job allows and warns you where it cannot, rather than handing back a plan the saw can’t execute (the demo job itself needs 3 stages).
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
Edge banding is recorded per piece in the EB column of the Parts table: which sides of a finished panel are banded, and with which banding type. From that, CutOptim totals the linear metres of banding the job consumes, broken down by type.
Edge banding is a metadata/reference feature — it does not affect the optimization algorithm. It records which sides are banded and with which type, then reports the running metres so you can order the right amount of each banding.
Marking edge banding:
- Click the button in the EB column of any demand piece row.
- The edge banding dialog opens with four sides: Top, Right, Bottom, Left.
- For each side, pick from the dropdown: None (not banded), No type (banded, no specific type), or one of your saved banding types.
- A visual preview shows the banded sides as a yellow stripe around the piece outline.
- Click OK — the EB column shows an abbreviation of the banded sides (
T/R/B/L).
EB column abbreviations:
| Display | Meaning |
|---|---|
— |
No edge banding |
T |
Top banded |
TR |
Top + Right banded |
TRBL |
All four sides banded |
BL |
Bottom + Left banded |
Banding types (library)
Click Manage types in the edge banding dialog to open your banding-type library. Each type carries a name (the reference you order by, e.g. ABS oak 22×1), a thickness, a price per metre and a colour — picked from a colour swatch, and used to draw that type’s edges in the per-piece banding diagram. Your types are stored to your account and sync across devices; assign them per edge from the dropdowns.
How the metres are reported
CutOptim measures the banded length exactly — top and bottom edges run the piece width, left and right run the piece height, multiplied by the quantity — with no waste margin (add your own overage at the bench). The per-type total appears in three places:
- The optimization summary — one figure per banding type.
- The PDF, in the material-requirement section, as a line per type plus an order total.
- The Excel export, on the Materials tab, as a row per type plus a total.
Beyond the totals, the banding is shown per piece in two places: the PDF has a dedicated Edge banding by piece page — each banded piece drawn with every edge in its banding-type colour and its length labelled, followed by a per-piece table of the material and length of each edge — and the Excel export has a dedicated Edge Banding tab with the same per-piece table plus a banding-layout picture.
Edge banding is still not drawn on the piece labels inside the layout diagram (the sheet plan), and it is not part of the Panel Labels export — those show dimensions only. Banding appears as the per-type totals above, plus the dedicated Edge banding by piece page in the PDF and the dedicated Edge Banding tab in the Excel export.
CSV
The Parts CSV has an EB column. Two forms are accepted:
TRBL— those sides banded, no specific type (any order, any case).T:ABS oak 22;L:ABS white 22— each named side takes that library type by name. Separate pairs with;(or quote the cell if you use commas). A name that matches no type still bands the edge (as No type), so nothing is lost.
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. Assigning the type once at the demand stage means the metre totals — and your order — are correct without re-checking at the bench.