> For the complete documentation index, see [llms.txt](https://docs.opencutlist.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.opencutlist.org/features/parts/parts-list/cutting-diagrams.md).

# Cutting Diagrams

Cutting diagrams are available for material groups of type Sheet Good, Veneer, Dimensional and Edge Banding.

{% hint style="info" %}
The cutting diagram engine was completely rewritten in version 7.0.0. It now supports several standard sizes, rectangle placement and nesting of the actual shapes of parts.
{% endhint %}

## Computing Cutting Diagrams

Cutting diagrams can be solved by a class of algorithms known as [**Bin Packing**](https://en.wikipedia.org/wiki/Bin_packing_problem), albeit with a few twists. We are looking for an *optimal* cutting plan, but what is optimal? The criterion most often used to define optimality is the *least number of bins* necessary to pack a set of boxes. Other criteria to optimize include the size and number of offcuts produced (one large is better than many small), the total length of needed cuts, the number of times the panel needs to be rotated, the number of top-level through cuts, ...

For every group of parts whose material is of type **Sheet Good**, **Veneer**, **Dimensional** or **Edge Banding**, a **Cutting Diagram** button appears in the title bar of the group. Clicking on it opens the configuration window.

{% hint style="warning" %}
Cutting diagrams are not available for material of type **Solid Wood**, because they are not meaningful in that context.
{% endhint %}

{% hint style="success" %}
If some parts of the group are selected in the **Parts List**, the cutting diagram is limited to the **selected parts**.
{% endhint %}

### Limitations

Bin Packing problems are notoriously difficult. Even if we cannot guarantee to find a perfect solution, our algorithm tries very hard to find an acceptable solution.

{% hint style="warning" %}
Cutting diagrams that do not look as you expected do not constitute bugs, and should not be reported as such.
{% endhint %}

## Types

The type of cutting diagram is selected at the top of the configuration window:

* **One** - Cutting lengthwise only. This is the only type available for **Dimensional** and **Edge Banding** materials.
* **Guillotine** - Cutting into rectangles with through cuts, as on a panel saw.
* **Rectangle** - Placing rectangles freely, without the through cut constraint.
* **Nesting** - Placing the actual shapes of the parts, nested into each other, for CNC or laser cutting.

<figure><img src="https://2764382921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MUSHuV5bThAGZxy7OHb-1972196547%2Fuploads%2F7ocXA007HE1FxHYPuDfA%2FCapture%20d%E2%80%99e%CC%81cran%202025-09-17%20a%CC%80%2018.21.05.png?alt=media&#x26;token=6d0907ca-5c63-4924-b9ad-bcc5fea73041" alt=""><figcaption></figcaption></figure>

## Material Tab

The material must be configured before a cutting diagram can be computed, see [**Materials**](/features/applying-materials.md).

* **Standard sizes**: select one or more standard panels, veneer sheets, boards or edge bandings. They come from the **Standard sizes** (or **Standard lengths**) defined on the material. Each standard size is assumed to be available in unlimited quantity, and **OpenCutList** chooses the most suitable ones.
* **Off-cuts**: list the panels or boards you already have in stock, as `length x width x quantity` (or `length x quantity` for boards and edge bandings), separated by `;`. Sizes without units are considered to be in model units.

{% hint style="info" %}
Parts are placed with their **raw dimensions**: the length and width oversizes configured on the material are added, and the thickness of the edge banding is subtracted if the material is configured that way. A reminder is displayed when the material defines oversizes.
{% endhint %}

<figure><img src="https://2764382921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MUSHuV5bThAGZxy7OHb-1972196547%2Fuploads%2FX2iH6kXZv7R4QtQXF8LV%2FCapture%20d%E2%80%99e%CC%81cran%202026-10-02%20a%CC%80%2016.33.31.png?alt=media&amp;token=6a7b1871-ad6d-4172-8752-459629e73209" alt=""><figcaption></figcaption></figure>

### Grain Direction

By convention, the length of a part is read on the red axis of its component. If the material has a grain direction, the grain runs along the length, and parts can only be rotated by 180°. Materials without grain direction allow a part to be rotated by 90° if a better fit can be found.

{% hint style="info" %}
If the grain direction runs across the panel, swap length and width of the panel dimensions. A panel with dimension `2000mm x 1250mm` and grain running across the width, should be entered as `1250mm x 2000mm`.
{% endhint %}

If the grain direction is not important for a few parts (because these parts are hidden, for example), enable **Ignore grain orientation on this part** in the [**Axes**](/features/parts/parts-list/edit-part.md#axes) tab of the properties of the part.

## Configuration Tab

* **Spacing**: minimum spacing between parts. This usually corresponds to the width of the saw blade or of the cutting tool.
* **Trimming**: cleaning margin around the raw panel (or at each end of the board) to be treated as waste.

For the **Guillotine** type:

* **First Cut Direction**: horizontal, vertical or any.
* **Cut Type**:
  * **Exact**: the number of cutting levels is exactly the same as the **Number of Stages**.
  * **Non exact**: an additional cutting level is allowed, but only to separate an off-cut from a part.
  * **Homogeneous**: similar to **Exact**, but the last level of sub-sections must contain exactly the same parts.
* **Number of Stages**: maximum number of cutting stages (2 or 3).
* **Minimal Size of Off-cuts**: leftovers larger than this length and width are marked **to be kept**.

<figure><img src="https://2764382921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MUSHuV5bThAGZxy7OHb-1972196547%2Fuploads%2FB93FTkJgaa9KjXmB4QWk%2Fcut_types.jpg?alt=media&#x26;token=ecc975e7-200e-4975-9746-61f6ca590fe7" alt=""><figcaption><p>Cut types</p></figcaption></figure>

For the **Nesting** type:

* **Allowed Rotations**: none, steps of 180° or steps of 90°. Steps of 90° are not available for materials with grain.
* **Mirroring Allowed**: whether parts may be mirrored to be placed.

The advanced settings (**Objective** and **Optimization Mode**) are hidden by default. Leave them on **Auto** unless a particular problem requires it.

## Display Tab

The **Display Tab** lets you configure the appearance of the resulting **Cutting Diagram**:

* **Formula**: customize the identification text of the parts with a [**formula**](/features/parts/formulas.md).
* **Group Similar Panels** (or boards, sheets, edge bandings): group the bins containing the same parts and cuts.
* **Parts List**: display or hide the list of parts below each bin.
* **Shape of Parts**: hide the shape of parts or display their front or rear face. This option must be enabled to export the shapes.
* **Paint Parts**: use a random color to distinguish parts, on screen only or on screen and print.
* **Position of the Origin**: corner used as origin of the coordinates.
* **Primary Cuts**: highlight the primary cuts on mouse hover only, or always.
* **Display of Edge Bandings**: show or hide the edge bandings of each part.
* **Zoom threshold**: diagram width below which diagrams are automatically enlarged.

{% hint style="success" %}
Remember to save your preferences using the [**Presets**](/getting-started/installing/presets.md).
{% endhint %}

## Cutting Diagram

At the top of the cutting diagram, a **Summary** displays the settings in use and the standard sizes and off-cuts used, with their quantity, area or length, and cost. **Statistics** give the total efficiency, the fill rate, the number of cuts and the total length of cuts.

Each panel or board is then drawn with its parts, its off-cuts (the ones **to be kept** are highlighted) and its cuts. Parts that could not be placed are listed in a warning.

From the cutting diagram, you can print [**Labels**](/features/parts/parts-list/printing-labels.md) and [**Export**](/features/parts/parts-list/cutting-diagrams/export.md) the diagrams to SVG or DXF files.
