# Introduction

This document explains how to get the most out of **OpenCutList,** a SketchUp Extension. It is intentionally kept very brief to make it easier to translate.

{% hint style="danger" %}
The present documentation is a work in progress and may change frequently. It is currently available in English and French. Translations into other languages may become available in the future.

**This document may describe features not yet released!**
{% endhint %}

{% hint style="success" %}
This documentation applies to **OpenCutList Version 6.0.0 and higher**. Some of the features described here may not be available in older versions. Also, some features may not be available in some versions of SketchUp, due to incompatibilities with newer libraries.
{% endhint %}

{% hint style="warning" %}
We assume that the reader is familiar with SketchUp.
{% endhint %}

## What is OpenCutList?

**OpenCutList** is a tool for creating **Parts Lists**, **Cutting Diagrams**, **Printable Lists of Labels, Cost and Weight Estimates** and **Exploded Views** for woodworking projects designed in [SketchUp](https://sketchup.com/).

![Cutting Diagram](/files/Q53cdR9l3TCBLTm9efLC)

### The Best SketchUp CutList Plugin :-)

{% embed url="<https://www.youtube.com/watch?v=8f_R9Gzs4gU>" %}

## Approach

A certain number of assumptions had to be made in order to make **OpenCutList** useful. The interpretation of length, width and thickness, as well as which side of a part is the front face and which one is the back face have to be agreed upon. Material information is provided in the form of SketchUp material, enhanced by **OpenCutList** attributes. Furthermore, a classification of the material helps the tool take advantage of the specificities of each type of material. Processing will be different depending on the type of materials (for example, **Sheet Goods** compared to **Solid Wood** (Rough Lumber)).

## Dimension and Orientation of Parts

**OpenCutList** extracts **the bounding boxes** from SketchUp components (not groups!) or a selection of components in a scene, in order to compute the **lengths**, **widths** and **thicknesss** of these **visible parts** of the model. The interpretation of **length**, **width** and **thickness** can be or two types:

* automatic, so that the **greatest dimension** is the **length** and the **smallest dimension** is the **thickness** (see [**Options**](/features/parts/options)); or
* defined from the local axes, so that the **length** is read on the <mark style="color:red;">**red local axis**</mark>, the **width** on the <mark style="color:green;">**green local axis,**</mark> and the **thickness** on the <mark style="color:blue;">**blue local axis**</mark>.

The actual behavior may be specified for each part, and its length, width and thickness defined in the **properties** of the part.

Defining the **front** and **back** of a part is not always necessary, but may be very important in certain cases. The front face is defined as **most positive along the thickness axis**, and the back face as the **least positive face**.

## Material of Parts

By applying SketchUp material to the components and configuring its parameters, **OpenCutList** is able to find the best raw material matching the dimensions of the **Part** and efficiently compute a **Parts List.** For certain types of material, **Cutting Diagrams** can be computed. **Estimates** with material and cost summaries can also be generated.

Further explanations on how **OpenCutList** works are available under [**Components**](/getting-started/components).

**OpenCutList** was written for use in woodworking projects, but may be suitable for other trades and projects as well.

## For the Impatient

A list of [**FAQ** ](/support/frequently-asked-questions)in this documentation answers common questions.

Links to video tutorials on YouTube are directly available from within **OpenCutList**.

For French-speaking users, two good entry points are the [Blog L'Air du Bois](https://www.lairdubois.fr/blog/?q=opencutlist%20@sort-recent:desc) and [L'Air du Bois on Youtube](https://www.youtube.com/c/LairduboisFr/videos).

## Open Source

**OpenCutList** is Open Source Software (hosted on [github](https://github.com/lairdubois/lairdubois-opencutlist-sketchup-extension)) developed by [Boris Beaulant](https://www.lairdubois.fr/@borisbeaulant) and [Martin Müller](https://www.lairdubois.fr/@mobilarte) of [L'Air du Bois](https://www.lairdubois.fr/), a French-speaking woodworking exchange platform. Thanks to a dedicated team of translators working on [Transifex](https://www.transifex.com/opencutlist/opencutlist/), this extension is available in many languages.

{% hint style="success" %}
If you notice an incorrect term or want to suggest a better one, please send us an email (using the Bug Report button).
{% endhint %}

## Financial Contributions

We have an [OpenCollective](https://opencollective.com/lairdubois-opencutlist-sketchup-extension) account, where supporters can make a financial contribution to support and encourage our work.


# OpenCutList

Tells the story of OpenCutList and the Team behind the project.

## History

OpenCutList started with its first commit on GitHub on December 3, 2016. The idea was first announced on the French site **L'Air du Bois**: [Un autre plugin Sketchup pour les fiches de débit ?](https://www.lairdubois.fr/blog/56-un-autre-plugin-sketchup-pour-les-fiches-de-debit.html)

## Team

### Boris Beaulant

Boris was a game programmer in another life. He switched to furniture design and making more than 10 years ago. His professional website is [Boris Beaulant](https://borisbeaulant.com/).

Shortly after he began his career as a furniture designer, he also initiated and programmed the website [L'Air du Bois](https://www.lairdubois.fr/), a French collaborative woodworking platform.

Boris is the creator and main developer of **OpenCutList**.&#x20;

### Martin Müller

Martin's background is in system and network administration. A graduate from the University of New Mexico in Computer Science (though it was quite some time ago), he likes algorithms and data science. He is currently working part-time on the project, as a scientific assistant.

He is the main developer of the cutting diagram algorithms and manages the translator team.

### Translators

The core team takes care of the French, German and English versions. The versions in other languages are contributed by volunteers. These contributions are invaluable, as automated translation of specialized software like OpenCutList would be ineffective!

## Sponsoring

The development and support of **OpenCutList** requires a lot of time from us developers, as we strive to provide a very qualitative product and want it to continue evolving.

To give **OpenCutList users** the opportunity to show their appreciation by supporting financially the project, we have created a collective on [OpenCollective](https://opencollective.com/lairdubois-opencutlist-sketchup-extension).

Financial goals for the funding (and development!) of the next version are periodically set, and it usually takes 1 or 2 months from the call for financing to the delivery of the release (see also [OpenCollective Updates](https://opencollective.com/lairdubois-opencutlist-sketchup-extension/updates)).


# What's new?

Describes the main features of a new version.


# In Version 7.1

<figure><img src="/files/jJonqJSsw2TGnxPomrJy" alt=""><figcaption></figcaption></figure>

## Compatibility

Some new features are only compatible with SketchUp 2018+.

## New Features

### Added Outliner "Deep Rename parts" Feature

This new cool feature allows you to **rename** **multiple parts** at once using a Ruby formula that will be applied to each part.

<div><figure><img src="/files/a46ZtDyhjmlcvp8d5b0z" alt="Right click" width="375"><figcaption><p>Right Click</p></figcaption></figure> <figure><img src="/files/sgNfTGlNB4HK7XgDQBUA" alt="" width="375"><figcaption><p>Enter a formula</p></figcaption></figure> <figure><img src="/files/RfiaYlKN5eyf8F6ExtyT" alt="" width="375"><figcaption><p>Result</p></figcaption></figure></div>

### Added Outliner "Deep Make Unique" Feature

With this new feature, you can make any selected container and **all its descendants** unique with a single click.

<figure><img src="/files/RXnftsfqz90YlOB74Q45" alt="" width="375"><figcaption></figcaption></figure>

### Added Outliner "Create Group" and Create Component Feature

This feature allows you to add a selection to a new Group or Component.

<figure><img src="/files/Xh7bKOTeVPfwChjpLxyU" alt="" width="375"><figcaption></figcaption></figure>

### Added Outliner "Drag and Drop" Feature

This feature allows you to drag and drop any container to change its position within the tree structure.

<figure><img src="/files/cmO97l02uknXiuoqMlS0" alt="" width="360"><figcaption></figcaption></figure>

### Added @batch variable in Packing Designation Formulas

You can use this variable to use the batch variable to designate a part label in the cutting diagram.

<figure><img src="/files/OO1DFQr5UvLBC7wEdujM" alt="" width="375"><figcaption></figcaption></figure>

### Added Ability to Use Arithmetic Operations (+-\*/) in VCB

This new feature allows you to perform arithmetic operations when entering a length in the VCB (value control box).

<figure><img src="/files/OQPoa1ajIbKqnMUMZKoS" alt="" width="360"><figcaption></figcaption></figure>

### Added Dutch Language

Thanks to Martin, Dutch was added to this new release.

### Added "normal" Font Size Value to Settings

<figure><img src="/files/zmNSIRsZNSkptx1FCj2C" alt="" width="375"><figcaption></figcaption></figure>

## Smart Handle Tool Improvements

### Ability to Edit copies During Preview

You can now change the copies value during a move preview of **Copy in line**, **Copy in grid** and **Distribute** actions.

<figure><img src="/files/nCOcwS1bqx2AkOLCXBsO" alt="" width="332"><figcaption></figcaption></figure>

### Ability to Handle Any Single or Multiple Group

This new feature allows you to use handle tools on any selection of groups or components.

<figure><img src="/files/8nQuY0hM3PLzmFKBtcDD" alt=""><figcaption></figcaption></figure>

### Ability to Select Part Ancestors

This new feature allows you to hover any part, hit <kbd>CTRL</kbd> (Windows) or <kbd>Option</kbd> (Mac) key to display a contextual menu where you will be able to select an ancestor to apply the operation without changing the active path.

<figure><img src="/files/u5ZdX8FBz0KzUDFTk1Fn" alt=""><figcaption></figcaption></figure>

### Ability to Select Siblings of a Part for "Select", "Copy in line" and "Distribute" Actions

This new feature allows you to select identical parts (same definition and scale) before activating the **Copy in line** and **Distribute** actions.

<figure><img src="/files/lxQh7xxC4G5iRcMnm7u7" alt=""><figcaption></figcaption></figure>

## Other Improvements

* Improved [PathFormulaWrapper](https://docs.opencutlist.org/features/parts/formulas/data-types#path). It now contains instance objects.
* Improved export with grouped parts activated.

## Bug Fixes

* Fixed rounding errors for metric dimensions in cutting diagrams.
* Fixed DXF line type error.

## <mark style="color:red;">⚠️ Removed features</mark>

#### Removed Part Oversizes attributes

Oversized attributes on part properties have been removed for code maintainability reasons. This type of functionality made it too complex to analyze and export part geometry.

The basic alternative is to apply these oversizes directly on the geometry.

We understand that this removal may affect your workflow. However, difficult but necessary choices must sometimes be made in order to move forward.

If this feature is important to you, please rollback to version [7.0.1](https://github.com/lairdubois/lairdubois-opencutlist-sketchup-extension/releases/tag/v7.0.1).

<figure><img src="/files/yeYAl5Ed8y3dDaSkoA4q" alt="" width="375"><figcaption></figcaption></figure>

{% hint style="info" %}
We would like to remind you that OpenCutList is provided free of charge thanks to the investment of our team.&#x20;

The development and maintenance of complex features depends directly on **user financial support**.&#x20;

**Without your contribution, it is impossible for us to consider your requests**.&#x20;

If this tool is essential to your business, we encourage you to support its development; otherwise, [previous versions](https://github.com/lairdubois/lairdubois-opencutlist-sketchup-extension/releases) remain fully available to you.
{% endhint %}


# In Version 7.0

{% hint style="success" %}
This version is currently the newest version.
{% endhint %}

<figure><img src="/files/eZudxKfYVemC04P0kUA4" alt=""><figcaption></figcaption></figure>

## Compatibility

Some new features are compatible with SketchUp 2018+.

## New features

### Cutting Diagram

New [**Cutting Diagram**](/features/parts/parts-list/packing) engine (with **nesting** capabilities)

{% embed url="<https://www.youtube.com/watch?v=HHU0hCbQOGc>" %}

### Drawing Tools

Added [**Smart Draw tool**](/features/smart-draw-tool) and [**Smart Handle tool**](/features/smart-handle-tool)

{% embed url="<https://youtu.be/HOHpS7IAQ-c>" %}

### Outliner

Added [**Outliner**](https://www.youtube.com/watch?v=7iXH7ZBH27k) tab

<figure><img src="/files/wKfpNOvlNeZXF3svYbOJ" alt="" width="563"><figcaption></figcaption></figure>

### Cut price

Added **Cut price** to material attributes&#x20;

<div><figure><img src="/files/4JCxHiwFVsTNRLhNr8Di" alt=""><figcaption><p><em>It allows you to estimate the cut cost</em></p></figcaption></figure> <figure><img src="/files/HcyLpb2qPMQqScsXDT4x" alt=""><figcaption></figcaption></figure></div>

## Smart Tools improvements

### New Move Origin action

Added Move Origin action on Smart Axes Tool

<figure><img src="/files/WJBen6M0xRnPKDBsJhC9" alt="" width="563"><figcaption><p><em>It allows you to</em> easily <em>move part origin</em></p></figcaption></figure>

### New Export Path action

Added Export Paths action on Smart Export Tool

<figure><img src="/files/AHw9myyHOIK1sP5SwsRr" alt="" width="563"><figcaption></figcaption></figure>

### Material scroll

Improved Smart Paint by adding scrolling of materials to the Smart Paint Tool

<figure><img src="/files/1y17xX1bZLQfmeV7Hc7V" alt="" width="563"><figcaption></figcaption></figure>

## Formulas improvements

### DC attributes

Added Definition and Instance wrappers in formulas&#x20;

*It allows to read DC and custom attributes*

### Material wrapper

Added [Material](/features/parts/formulas/data-types#material) wrapper in formulas. It allows you to access to a larger set of material properties.

<figure><img src="/files/5BWf2KHvlmzL07OJO8rp" alt="" width="563"><figcaption><p><em>It allows you to access much more data about materials</em></p></figcaption></figure>

## UI / UX improvements

### Font Size

Added an option to change the dialog font size

<figure><img src="/files/ZjyH8niMfh4QAkivH9fT" alt="" width="563"><figcaption></figcaption></figure>

### Material type separator

Added Material type separators in materials tabs when sorted by type

<figure><img src="/files/vsXL3liICI2rR32KSmsP" alt="" width="563"><figcaption><p><em>It offers you a better materials presentation</em></p></figcaption></figure>

### Sorting price list

Added **handle** to manually reorder material prices list

<figure><img src="/files/9sZuD9YO8MTmRBu6J9y9" alt="" width="563"><figcaption></figcaption></figure>

### Context menus

Added a "right click" context menu on Parts List rows and Material elements

<div><figure><img src="/files/JMlPQlifnqxswOIAf3sK" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="/files/nkOHg3Tbo6jvlkL8Niuo" alt="" width="563"><figcaption></figcaption></figure></div>

## Exporters improvements

### 2D projections

Added Export 2D projections left, right, front, back

<figure><img src="/files/e2GLKDQMdMafioYGFJNb" alt="" width="563"><figcaption></figcaption></figure>

### Paths with Tags

Added capabilities to use SketchUp **tags** when exporting paths to DXF/SVG

<div><figure><img src="/files/t97y2nT1tkrU08u4iaNe" alt=""><figcaption></figcaption></figure> <figure><img src="/files/NboKMJ61wsx9itraPqHH" alt=""><figcaption></figcaption></figure></div>

### Vertical Axis option

Added Switch YZ axes option to Smart Export Tool on Export 3D part action

<figure><img src="/files/JbBWDOZU2PSOQLrXGHhH" alt="" width="563"><figcaption></figcaption></figure>

### Overflows

Added Export drawing with **overflows**

<div><figure><img src="/files/o1duqi1pncm6ji2ovsle" alt=""><figcaption></figcaption></figure> <figure><img src="/files/ZSiCOv2sbi8Z0kix6IpL" alt=""><figcaption></figcaption></figure></div>

### Quantity

Added **quantity** parameter to 2D and 3D drawing writers

<figure><img src="/files/iTZsZDM6zggISK9VGEZ0" alt="" width="563"><figcaption><p>It allows you to create one file per instance</p></figcaption></figure>

### Duplicate column

Added Duplicate column in export editor

<figure><img src="/files/1IOTLYmVDCtKFv7L5lv0" alt="" width="563"><figcaption></figcaption></figure>

### XLSX file format

Added Export parts list to **XLSX**

{% hint style="warning" %}
This feature is compatible SketchUp 2018+
{% endhint %}

<figure><img src="/files/4XE5I30IM6Qj69lFosxa" alt="" width="563"><figcaption></figcaption></figure>

## Labels improvements

### QRCodes

Added QRCodes in labels editor

<figure><img src="/files/qXzxta9LP0owrEmof48u" alt="" width="563"><figcaption></figcaption></figure>

### Duplicate element

Added Duplicate element in labels editor

<figure><img src="/files/nw4FKpgdNJtayMSmMXbF" alt="" width="563"><figcaption></figcaption></figure>

## Parts List Improvements

### Print Labels

Added Print Labels button to Parts List

<figure><img src="/files/omGI2oDFT74XGgBopyIX" alt="" width="563"><figcaption></figcaption></figure>

### Export buttons

Added Export and Estimate buttons on Parts List groups

<figure><img src="/files/6uiWztU7ozKL6uWOdHm7" alt="" width="563"><figcaption></figcaption></figure>

### Hide / Unhide groups

Added **hide** / **unhide** button in Parts List summary

<figure><img src="/files/TDyeyBRNIOqAdTOvEOzN" alt="" width="563"><figcaption></figcaption></figure>

* Added an option to customize group sorting

<figure><img src="/files/Ey8Z80aSOKzVXHTwyHNL" alt="" width="563"><figcaption></figcaption></figure>

## Various improvements

* Changed solid wood coefficient from estimate params to material attributes

<div><figure><img src="/files/plNsvXutDqe6BWmQvZ3V" alt=""><figcaption></figcaption></figure> <figure><img src="/files/zuKHvxLI9fIwDcJ6fbLq" alt=""><figcaption></figcaption></figure></div>

* Improved export drawing to Layout : adding the ability to add in a new page of an existing file
* Improved labels formulas
* Improved smart tools picker
* Improved surface detection
* Improved Material import from SKM (allows new or replace)
* Improved Draw feature to be able to align on active view axes
* Improved Material price attributes to add the ability to set price by thickness or section

<figure><img src="/files/5bRv9Aj6z10LRnsV3ZYl" alt="" width="563"><figcaption></figcaption></figure>

* Replaced Highlight Part Tool with Smart Axes Tool

## Bug fixes

* Fixed face untyped material removing when editing sheet good part properties
* Fixed truncated text in OpenCutList tools on Windows if system fonts are scaled


# In Version 6.0

{% embed url="<https://youtu.be/iciRgzSiep4?si=VbUFANUc25y5aJO1>" %}
What's New in OpenCutList 6.0.0?
{% endembed %}

## Compatibility

All new features are compatible with SketchUp 2017+.

## Export Parts

Version 6.0 introduces a smart way of exporting part drawings to:&#x20;

* 3D - **STL** or **OBJ** files.
* 2D - **SVG** or **DXF** files.

We wanted to cover different use cases, which is why exporting parts is available from several locations.

* From *Parts List* and *Part Properties* through export actions.
* From a new *Smart Export Tool*, similar to the Smart Paint and Smart Axes Tool.

### Export Actions

With export actions, you can export parts in batches, in *front* or *back side* view.

<div><figure><img src="/files/kFoVJobdRrQyWndtsua0" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="/files/I9cELMg35fXzKo2vuWR7" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="/files/0CJ5uWdzugGQc2hIT98p" alt="" width="563"><figcaption></figcaption></figure></div>

Discover this new feature on its specific page :

{% content-ref url="/pages/qlcKOAJ29Lr0ErCOiFXv" %}
[Export Part Drawing](/features/parts/export-part-drawing)
{% endcontent-ref %}

### Smart Export Tool

The Smart Export Tool is more refined. It allows you to export a single part or a face directly from the 3D model. It offers greater control over the projection plane used.

<figure><img src="/files/uZHssOsnhddqA1VGqC1R" alt=""><figcaption><p>Smart Export Tool in the Tool Palette</p></figcaption></figure>

Discover this new tool on its specific page :

{% content-ref url="/pages/X6FXeqqe1T8HameB4MIb" %}
[Smart Export Tool](/features/smart-export-tool)
{% endcontent-ref %}

## Materials

### Material URL and Description

We have added two new attributes to materials : a **URL** and a **Description**.

<figure><img src="/files/UtydK2rr05fggzTA1Zsa" alt="" width="563"><figcaption></figcaption></figure>

These attributes are also displayed in the Summary of the Parts List, and you can click on the *link* icon to open the URL in your browser.

<figure><img src="/files/sPSCRGf85yBj1c3rwqKk" alt="" width="563"><figcaption><p>Link and Description of Material available in the Summary</p></figcaption></figure>

### Material Colors

Since version 6.0, materials are identified by a round bullet in several places : Parts List Summary, Group Headers, Cutting Diagram, Estimate, Edge Banding columns...

<div><figure><img src="/files/yCiL25BptYs62mfSnscq" alt="" width="375"><figcaption><p>Parts List Summary</p></figcaption></figure> <figure><img src="/files/6iCF3pDcX4lYMXcvqg4J" alt="" width="375"><figcaption><p>Edge Banding Column</p></figcaption></figure></div>

The color of the material is also used to display the Edge Banding in the cutting diagram or on the labels.

<div><figure><img src="/files/84tF0JhSAwErGh5JlqT5" alt="" width="563"><figcaption><p>Edge Banding in the Cutting Diagram</p></figcaption></figure> <figure><img src="/files/Ndjmkb9UnPYUOYrEI9c8" alt="" width="563"><figcaption><p>Parts with Edge Banding in the Label List</p></figcaption></figure></div>

{% hint style="info" %}
This information is visible on screen and on the printed document.
{% endhint %}

We have added a new option called **Hide material color** to hide the colored bullets in front of material names.

<figure><img src="/files/nd2l0OCMp0MgkyevUP6f" alt="" width="375"><figcaption><p>Hiding Color Bullets</p></figcaption></figure>

### Changing Edge Material

You can now change the material of all edges of a group in Parts List by simply editing their shared properties.

<figure><img src="/files/kMU4ORUMdbWneRpDEj8G" alt="" width="563"><figcaption></figcaption></figure>

## Parts

### Part URL

Parts have a new attribute: a **URL**. The URL could point to your suppliers on-line store.

<div><figure><img src="/files/283WMif9LbgDE2Sceg5n" alt="" width="563"><figcaption><p>URL in the Properties</p></figcaption></figure> <figure><img src="/files/tC9UovRPghuRW7lRbmyf" alt="" width="563"><figcaption><p>URL Link in the Parts List</p></figcaption></figure></div>

## Cutting Diagrams

### Leftovers to Keep

We have added a new parameter to define the minimal size of leftovers and display them in the cutting diagram. All leftovers that are greater in both dimensions will be listed separately. The list can be hidden. The content of the list can be copied to the clipboard and pasted into the Panel Offcuts of another project.

<div><figure><img src="/files/mDYziRrfBWt1hYYhxilG" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="/files/fdeKb0AHQbzwdnGrwlq7" alt="" width="563"><figcaption></figcaption></figure></div>

### Real Shape of Parts

A new setting defines how parts are displayed in the cutting diagram. The cutting diagram is computed by considering only the bounding box of parts. With this setting, the real shape of a part is placed on the cutting diagram instead of its bounding box.

<div><figure><img src="/files/VlpMiQswrhLn6ZB6tqDT" alt="" width="563"><figcaption><p>Display Front or Rear face of Parts</p></figcaption></figure> <figure><img src="/files/ke5OZMcnPFld0TD7iKM8" alt="" width="563"><figcaption><p>Parts as Displayed</p></figcaption></figure></div>

### Cutting Diagram Export

We have added a new button to export entire layout drawing to **SVG** or **DXF** files. Many options to customize the export are available. You can save the options to a preset for future use.

<div><figure><img src="/files/43PQ6ifScAoLdndGPkGy" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="/files/447BKI7YvrbZuCMD8zyQ" alt="" width="563"><figcaption></figcaption></figure></div>

### Select Unplaced Parts

We have added a button to select all Unplaced Parts in the cutting diagram. If parts cannot be placed because they are too large to fit or because there are not enough panels for all parts, this option lets you select all the parts and see them in the Parts List. This could be useful to mark them with a  badge or change their material or properties.

<figure><img src="/files/MZKGVSBaEvQGCi6npQlp" alt="" width="563"><figcaption><p>Selecting Unplaced Parts</p></figcaption></figure>

## Labels

### Formula as Element

We have added a new element called **Formula** that lets you customize the content of the element with Ruby code.

<figure><img src="/files/ve8XN1EN69S4h40spT2G" alt="" width="563"><figcaption></figcaption></figure>

### Thumbnail as Element&#x20;

We have added a new element called **Thumbnail** that lets you preview the real front part shape.

<figure><img src="/files/bIz9WBIYl3uAvPg7wkJK" alt="" width="563"><figcaption><p>Real Shape of a Part on the Label</p></figcaption></figure>

### Remove All Elements

We have added a new button called **Remove all** to quickly clear the label layout.

<figure><img src="/files/m86vYYrtC0gmh1Xn2g6J" alt="" width="563"><figcaption></figcaption></figure>

## Estimate

### Material Density by Item

We have added the possibility to setup material density by standard item. In some case the material density does not help in computing the weight of a part. Because we use the bounding box of parts, the  volume of a pipe/tube is greater than the used volume of material. With this attribute, you can add the density of material by item. To be able to add a density you need to specify a size.

<figure><img src="/files/bbxDnGcVpZmu39WqIW0z" alt="" width="563"><figcaption></figcaption></figure>

### Price by Length

We have added the possibility to specify the price of sheet goods and veneer by length.

<figure><img src="/files/kFI6Yo7iopMvYbNCVOVR" alt="" width="563"><figcaption></figcaption></figure>

### Effective Volume

You can now configure materials so that they are estimated according to either the **effective volume** or **the volume of raw material required**. This allows you to compute the effective weight and cost of parts.

{% hint style="danger" %}
Be aware that if you must buy material by entire sheets/rolls or other units, the estimation by effective volume may be too optimistic!
{% endhint %}

<div><figure><img src="/files/IQr9ihC1o6tNHNm9NxPG" alt="" width="563"><figcaption><p>Selecting which Volume gets used</p></figcaption></figure> <figure><img src="/files/o5gkqjCb5KuRETcqmxHm" alt="" width="563"><figcaption><p>Icon to show which method is being used</p></figcaption></figure></div>

## Settings

### Height of Table Rows

We have added an option to change the height of table rows from **Normal** to **Compact** saving a little extra space.

<div><figure><img src="/files/uBybrOlU9aAwPRkLBBYu" alt="" width="375"><figcaption></figcaption></figure> <figure><img src="/files/n2dleI4VGq5iOZ6rWUok" alt="" width="375"><figcaption></figcaption></figure> <figure><img src="/files/Xx7JkqVXt1smzfNeIrr2" alt="" width="375"><figcaption></figcaption></figure></div>

### Weight and Currency Precision

**Weight** and **Currency** numbers can have their own precision, very much like Dimensions.

<figure><img src="/files/j6l1eyWRIRBZ6nqB3PJu" alt="" width="563"><figcaption><p>Weight and Currency Precision</p></figcaption></figure>

## Cool Features

### Badge Filters

You can now toggle the Badges filter in the Parts List to **include** or **exclude** parts based on the badge. Enter a badge name, then click on the eye to toggle from include to exclude.

<figure><img src="/files/b1Yk4o65AIvQy7WpXGdc" alt="" width="563"><figcaption><p>Include or Exclude Parts with a given Badge</p></figcaption></figure>


# In Version 5.0

{% embed url="<https://youtu.be/dgutCS3VbSE>" %}
What's New in OpenCutList 5.0.0?
{% endembed %}

## Compatibility

In this version a few features/fixes have been introduced that are not compatible with older versions of SketchUp. There are three main reasons why certain features are not backward compatible:&#x20;

* Bug fixes in newer versions.
* API changes. Certain functions are simply not available in older versions.
* Rendering engine upgrade for the HTML/JavaScript.

<table><thead><tr><th width="275">Feature</th><th width="193">Works on SketchUp</th><th>Effect</th></tr></thead><tbody><tr><td>Material Color Picker</td><td>2021+</td><td>Color Picker does not show</td></tr><tr><td>Drawing / Exploded Views</td><td>2018+</td><td>Draw Button hidden</td></tr></tbody></table>

## Parts

With the new material type **Veneer**, we had to define how **front** and **backside** of a part are detected. Using the local axes, we define the front to be the most positive face on the blue thickness axis.

Sometimes we used the word "Edge Banding" but meant simply **Edge**, one of the 4 edges of a panel part. Now for all parts of type Sheet Goods, we will speak of **Face**, meaning the two thickness faces (front and backside where veneer can be applied) and **Edge** (where edge banding can be applied).&#x20;

{% hint style="warning" %}
There are situations where one would want to put veneer on all 4 edges of a part, for example a table leg. This is currently not possible.
{% endhint %}

### 3D preview

Properties of Part now displays a 3D preview including dimensions.

<figure><img src="/files/2o2sUQsQUO1caBeS7ESO" alt=""><figcaption><p>Properties of Part Window</p></figcaption></figure>

## Material

### Duplicate Material

To duplicate a given material including its **OpenCutList** attributes, open the **Properties of Material** window and click on **Duplicate**. Enter a new name for the copy. If you don't change the name, a new unique name based on the old name will be given.

<figure><img src="/files/bE7reucsp2SqeFI9Y1Xx" alt=""><figcaption><p>Duplicate Material</p></figcaption></figure>

### Load texture

From material's properties dialog, you can now load a new texture or clear the current.

<figure><img src="/files/gYO4ZnvqRkQUbASTpeYB" alt=""><figcaption><p>Texture Loading</p></figcaption></figure>

### Color Picker

To add custom colors for material, you can either edit the color in SketchUp or insert an RGB Hex code. With newer versions of SketchUp, you can select the color by using a color picker. Click on the left end of the **Color** field to open the picker.

<figure><img src="/files/qo1J5Hmyzx85agFzTKeB" alt=""><figcaption></figcaption></figure>

### New Material Type Veneer

Similar to Edge Banding, **Veneer** is a new type of material that can be applied to the faces of a panel (of type Sheet Goods). Theoretically it could also be applied to the edges (like the four sides of a leg), but in OpenCutList it can only be applied to the front and back face of a material of type Sheet Goods.

The Veneers material is available when the Paint faces tool is selected. The frontside of the part is the part with the largest dimension along the blue axis (thickness). The **Smart Axes** tool lets you swap front and backside of the part.

<figure><img src="/files/peo20rGe7Nx4OH8sObo2" alt=""><figcaption></figcaption></figure>

## Draw

The **Draw** feature is available directly from the **Parts List** or from a **Group Header**. Draw will pick up the parts that are visible or that are within the group. If you want to draw only a detail, select the parts that make it up and hit draw. You can use **Badges** to group parts with different materials.

<div><figure><img src="/files/gTUniG0PvGvkKsjjzKJh" alt=""><figcaption><p>Draw Buttons</p></figcaption></figure> <figure><img src="/files/X7TnhmmXPfT9R9lma0PS" alt=""><figcaption><p>Draw Modal</p></figcaption></figure> <figure><img src="/files/1vhs4JwevBQG9rSrxnI7" alt=""><figcaption><p>Draw Result</p></figcaption></figure></div>

{% embed url="<https://youtu.be/bra6e6RGl_k>" %}

## Presets

**Presets** are used in a few places to store and retrieve settings for Labels, Materials, Cutting Diagrams. Most modal configuration windows can be prefilled with presets.

When you upgrade SketchUp, a new version of SketchUp will be installed, without touching the old version and without the presets (this is how SketchUp works). To assist the user in saving and restoring **Presets** a new menu is available in the **Preferences** Tab.&#x20;

<figure><img src="/files/YMikSrKv33BZGmpjnTzM" alt=""><figcaption><p>Manage Presets</p></figcaption></figure>

To save presets from SketchUp 2021 to SketchUp 2023, save the presets from the old version of SketchUp (by first installing OpenCutList 5.0 in SketchUp 2021), then open SketchUp 2023 (with OpenCutList 5.0 installed) and import the presets.

## Tools

### Smart Paint

To accelerate the assignment of material (Edge Banding, Sheet Goods, …), the Smart Paint tool was introduced in version 4.0.0. This tool has been reworked to make it even faster and easier to use.

The tool has 5 functions:

* **Paint parts** to paint an entire part. The material will be assigned to the instance. Only material that can be applied to a part will be displayed, including **No material** to remove any material.
* **Paint edges** with material of type Edge Banding (1 edge, 2 opposite edges or all 4 edges at once). *Edges* are the SketchUp faces of a part of type Sheet Goods that have thickness as second dimension.
* **Paint faces** with material of type Veneer (1 face or both faces of a part). *Faces* are the SketchUp faces of a part of type Sheet Goods that have dimensions length and width.
* **Sample** to pick up material and select it as current material.
* **Clean** to remove all material information from a part.

<figure><img src="/files/ASIFJ6YDICDJaMxGl6Gp" alt=""><figcaption><p>Smart Paint Tool</p></figcaption></figure>

### Smart Axes

In general, the orientation of the local axis is not very important, but **OpenCutList** uses the position and the orientation of the local axis of a component to identify length, width and thickness of a part and also its front face and back face.

It was already possible to quickly change the local axes by reordering the dimensions in the **Part Properties**. Now with the **Smart Axes** tool it is even faster.

The tool has 3 functions:

* **Flip** to mirror a instance of a part along one of its dimensions, which can be length, width or thickness. This operation only affects the selected instance. The symbol **>|<** shows if the instance is mirrored with respect to its definition.
* **Swap length - width** rotates the local axes so that length and width are swapped. This will also lock the orientation of the axes. This operation is done on the definition of the component and it will affect all instances of the part.
* **Swap front - backside** reorients the local axes so that the front face showing a full arrow is most positive on the blue axis. The backside displays a dashed arrow. This operation is done on the definition of the component and it will affect all instances of the part.
* **Adapt axes** is a tool that lets you set the local axes of a component without entering into edit mode. Pick a face, edge or vertex to reposition the local axes. Instead of swapping length, width and thickness, this tool also lets you reposition the axes for odd shapes.
* (former, replaced by Adapt axes) **Orient automatically** will reset the local axes so that the biggest dimension (length) is along the red axis, the smallest dimension (thickness) is along the blue axis and the width is along the green axis. There are exceptions to this heuristic. The user can always rearrange the dimensions in the Part Properties and lock the orientation of the axes for a particular part.

<figure><img src="/files/ukpw5lrIvbeeCDvUnoVC" alt=""><figcaption></figcaption></figure>

## Cutting Diagram 2D

In the cutting diagram for panels, the two first trimming cuts are accounted for in the total cutting length and in the count of cuts. These cuts may not always be necessary, but including them puts you on the safe side.

<figure><img src="/files/FQXL7F1QUUw9W5wDH8R0" alt=""><figcaption></figcaption></figure>

## Improvements

### Estimates

Estimates (Formerly Reports) now compute **used** and **unused** raw material weight and cost.

<figure><img src="/files/w5P7hIoklnQhxePMzX6G" alt=""><figcaption></figcaption></figure>

### Reduction for Edge Banding

Edge dimension reduction is now clearly separated from the oversize. Using length/width oversize for the part and then applying a reduction for edge banding does probably not make sense. This display better shows what is going on under the hood. The material has an oversize in length and width of 10mm, but the thickness reduction for the edge banding applies to the finished dimensions (500  -1) x (200 - 1).

<figure><img src="/files/gD1SK3k1Q1atyDWDptyV" alt=""><figcaption><p>Edge reduction</p></figcaption></figure>

## Renamed Terms

### Tags changed to Badges

The term **Tag** to designate a label that can be attached to a part has been renamed to **Badge**. One or more badges can be attached to a part. Badges can be used to filter the list of parts.

Tag is used by SketchUp to refer to what was formerly called Layer.

### Reports changed to Estimate

Report is a very general term and it does not quite describe the purpose of the feature. It is now called **Estimate** (verb).


# Installation

Installing the OpenCutList extension for SketchUp and defining your preferences.

## Installation from the Extension Warehouse

The easiest way to install the **signed extension** is by downloading it from the [OpenCutList by L'Air du Bois](https://extensions.sketchup.com/en/content/lair-du-bois-sketchup-toolbox-0) extension page at Trimble's Extension Warehouse. The signed file of the latest version is also available on GitHub [ladb\_opencutlist.rbz](https://github.com/lairdubois/lairdubois-opencutlist-sketchup-extension/raw/master/dist/ladb_opencutlist.rbz).

**OpenCutList** works with all versions of SketchUp 2017 and higher.&#x20;

{% hint style="warning" %}
Some advanced features may not be available in versions released before 2021.
{% endhint %}

{% hint style="danger" %}
OpenCutList is not available for the online and iPad versions of SketchUp.
{% endhint %}

After installation, **OpenCutList** can be accessed in the menu Extensions -> OpenCutList, or using the icon in the toolbar. If it is not present, right-click on an empty area of the icon bar and select it from the list.

![OpenCutList in the toolbar](/files/q5wI7w2ZOH1ZzSZZ5XSL)


# Toolbar

The toolbar is the entry point to OpenCutList.

<figure><img src="/files/JE4bZEtmTNETg7LCB0FK" alt="" width="285"><figcaption><p>OpenCutList Toolbar</p></figcaption></figure>

The toolbar features four icons. Clicking on these icons will open:

* the [**Main window**](#main-window), which can be minimized or maximized.
* the [**Smart Paint Tool**](#smart-paint-tool), an on-screen tool to apply or remove material to components.
* the [**Smart Axes Tool**](#smart-axes-tool), an on-screen tool to relocate the local axes of components without having to open the definition.
* the [**Smart Export Tool**,](/features/smart-export-tool) an on-screen tool to export 2D projection or 3D geometry of a single part.

{% hint style="info" %}
**OpenCutList** submenus are also available from Extensions -> OpenCutList so that you can add key shortcuts.
{% endhint %}

## Main Window

The minimized window of **OpenCutList** displays four buttons:

* **Maximize/Minimize**: to show/hide the result window. To minimize the window and get it of your way, simply hit the **\<ESC>** button.
* [**Materials**](/features/applying-materials): to configure materials. This is an interface which links to the native SketchUp material. If you have already configured some material in SketchUp, it will show up here. If you add material here, it will also show up in the Materials Inspector of SketchUp.
* [**Parts**](/features/parts): to compute the **Parts List** of a selection of components or of all visible components in the current scene.
* [**Import**](/features/import): to import parts defined as rectangular boxes from a CSV file.

<img src="/files/-Ml8rUp5_t3UfXn4oJbA" alt="Minimized menu" width="188">

When maximized, the toolbar has two additional buttons.&#x20;

* **Doc.:** a direct link to open this documentation in your browser.
* **More:** displays a ribbon with more links (some may depend on your language):

  * **Tutorials**: displays a list of YouTube tutorials made by users.
  * **Plans**: opens your browser to the model section of [**L'Air du Bois**](https://www.lairdubois.fr) where users publish their creations.
  * **News**: inline access to the latest and archived news we publish on [**OpenCollective**](https://opencollective.com/lairdubois-opencutlist-sketchup-extension).
  * **Forum**: read-only access to the OpenCollective discussion forum. If you plan to participate in discussions, you must create a free OpenCollective account.
  * [**Update**](/getting-started/updating): starting with version 1.9 a self-updater was introduced, which updates directly from the github repository. This version is identical to the version hosted on the Extension Warehouse, it is signed by Trimble. After an upgrade, you **must restart SketchUp** for the new version of **OpenCutList** to be re-loaded.
  * **Sponsor**: we very much appreciate your financial support on [**OpenCollective**](https://opencollective.com/lairdubois-opencutlist-sketchup-extension). Even small contributions help us to take the time to make OpenCutList a better tool for your workshop.

![Link to Sponsor](/files/-Ml8rHhO_BxAXQe-DTP_)

The lower right border of the OpenCutList window displays more actions:

* A link to [**www.lairdubois.fr**](https://www.lairdubois.fr/): a french-speaking woodworker community, completely ad-free!
* **Report a bug**: this will open your mailer to send a bug report to the developers.
* [**Preferences**:](/getting-started/installing/preferences) to change unit, weight or language preferences.
* **Sponsor**: opens a page with the current status of contributions and the next goal.
* **About**: gives information about the developers, the translator team and the software we used to develop **OpenCutList**.

## Smart Paint Tool

The [Smart Paint Tool](https://docs.opencutlist.org/features/smart-paint-tool) lets you select a tool to sample, paint or clear a component with material from a list of material.

## Smart Axes Tool

The [Smart Axes Tool](https://docs.opencutlist.org/features/smart-axes-tool) allows you to reposition the local axes of your components. Because **OpenCutList** interprets the dimensions of a part from its orientation with regard to the local axes, it is important to position them correctly. You could use SketchUp tools to perform this task, but you would then have to open the component to get to its definition.

The Smart Axes Tool displays the dimensions of the part and an arrow on the front and back face of the selected part to help you decide if the interpretation is correct.

{% hint style="warning" %}
Changing the local axes of a component does not "change" the component or its definition.&#x20;

Do not expect the part to be mirrored or rotated!
{% endhint %}


# Preferences

Preferences are custom configuration settings.

## Preference Settings

The preference settings are accessible from the **Preferences** button at the bottom right of the maximized **OpenCutList** window.

## Changing the Interface Language

The interface language of **OpenCutList** is independent of the installed version of SketchUp. You may select among English, French, German, Italian, Russian, Spanish, Portuguese, Czech, Polish, Dutch, Vietnamese or Ukrainian. An experimental version of Arabic and Hebrew is also available (currently without RTL interface). If an **OpenCutList** language matches the language of your SketchUp installation, it will be displayed at the top of the drop down selection. You must close and reopen the **OpenCutList** window for this change to be applied.

{% hint style="info" %}
The **Global Preferences** apply to all future SketchUp sessions, until you change them.
{% endhint %}

## Print Margins

You may select between small and normal print margins.&#x20;

## Selecting Length Unit and Precision

By selecting a template in SketchUp, you have already selected a model unit. The model unit can always be changed, but it is good practice to stick with the unit that you are most familiar with and to select an appropriate precision for your work. Check the box if you want **OpenCutList** to display the unit next to each dimension.

These settings change the underlying SketchUp settings from the menu `Model Info -> Units`. If you change those settings, the changes will be reflected in the **Model Preferences**.

![Changing Unit and Precision in Model Preferences](/files/fbHyElRGjZ4CWAll14oi)

{% hint style="success" %}
The dimensions of parts in the **Parts List** and the dimensions of exported parts will only be displayed with units if you checked "Display length unit for each value". Summary values of areas or lengths will always be displayed with units.

The unit used in your model appears at the top of the **Parts List**, next to the file name.
{% endhint %}

{% hint style="warning" %}
Switching units is always possible, but may result in unexpected behavior. 3/4" is 19.05 mm and not 19 mm. **OpenCutList**, just like SketchUp, will have a hard time to deal with "*you know what I mean!*"-type of dimensions.

SketchUp signals approximate dimensions, with regard to your model precision, by prefixing them with a tilde: \~19 mm.
{% endhint %}

## Selecting Weight Unit and Currency

**Reports** require the mass unit and the currency in order to compute weight and cost of materials. Insert a currency symbol of your choice, it can even be a smiley!

![Preferences Tab](/files/Jg2Ob2QWPzbtVsUUef8N)

{% hint style="info" %}
These **Model Preferences** are only valid for the current model. Switching units of length, mass and currency in one model does not affect other models.
{% endhint %}

## Saving to Presets

The **Model Preferences** can be saved as **Presets**. [**Presets** ](/getting-started/installing/presets)are default or **named sets** of settings that can be saved and reloaded at a later time.


# Presets

Presets are named settings in each modal window.

Presets are sets of parameters associated with a modal window. Presets are stored in the SketchUp defaults, but in a compact almost unreadable format.

## Saving a Preset

If you like the set of parameters you have entered, you can save them to a descriptive name. From now on, the parameters can be recalled, modified and saved back.

## Exporting Presets

When installing a new version of SketchUp, the settings from the previous version are ignored. To be able to recuperate your **OpenCutList** settings, you may save them to a file and then later reload them into **OpenCutList** of the new SketchUp version.

You may select which presets are to be exported or imported.

<figure><img src="/files/YMikSrKv33BZGmpjnTzM" alt=""><figcaption><p>Exporting / Importing Presets</p></figcaption></figure>


# Components

SketchUp Components are the basic building blocks used by OpenCutList to build a Parts List.

{% hint style="danger" %}
**OpenCutList** primarily works on SketchUp **Solid Components**.  These components have a volume strictly greater than 0. Components of zero volume do not appear in the SketchUp Inspector.[ For **OpenCutList**, this means that only two dimensions can be extracted, but it needs length, width **and** thickness to define a part.](#user-content-fn-1)[^1]

If the <mark style="color:blue;">blue bounding box</mark> around a component displays as a box with a volume, there is a good chance that the component will be visible to **OpenCutList**.
{% endhint %}

## From Components to Parts

To ensure the most meaningful results, several assumptions have been made while developing **OpenCutList**. It is essential to follow these guidelines for best results:

* Use **components** for modeling your project (scaled components are also supported), because only components will appear in the **Part List**. They may be nested in groups and even inside other components.
* Label the **definition** and the **instance** of your components (optional). This information will appear in the **Part List**.
* Correctly define the component axes to match the grain direction and/or the orientation of the part in the raw material. Usually length, width and thickness cannot be swapped in wood.
* Apply SketchUp material to your components and configure its parameters through the [**Materials**](/features/applying-materials) tab.&#x20;

{% hint style="success" %}
**Materials** can be applied to parts directly from **OpenCutList**.
{% endhint %}

{% hint style="warning" %}
It is very important to correctly set the component axes to convey the orientation of a part and possibly the desired grain direction to **OpenCutList**. You may get unexpected results if you are not aware of how local axes are oriented in your components.
{% endhint %}

{% hint style="success" %}
**OpenCutList** will help you identify and verify that the axes are set properly.
{% endhint %}

{% hint style="danger" %}
**SketchUp Groups** are not supported to describe parts.
{% endhint %}

## Bounding Box and Dimensions

**OpenCutList** uses the blue bounding box of a component (provided by Sketchup itself) to compute its length, width and thickness. This is done irrespective of whether the component has an irregular shape, holes, etc. (of course, there are some limitations to this approach). In the following example, **OpenCutList** will see the box below as a rectangular box, not considering the miter.

![A component as seen by OpenCutList](/files/-Ml90YJMLNs6CZ4GLbog)

{% hint style="warning" %}
**OpenCutList** only considers the blue bounding box, therefore a part is always a rectangle with a thickness.
{% endhint %}

By default, **OpenCutList** will consider the largest dimension of the component as the length, the shortest dimension as the thickness, and the last dimension as the width. This behavior can be changed on per-part basis.

It is also possible to configure **OpenCutList** so that it will never guess the dimensions, but always consider the dimension along the **local red axis** as **length**, the **green axis** as **width**, and the **blue axis** as **thickness**.

{% hint style="info" %}
**OpenCutList** does not consider components with zero volume. Components must be Solid Components in SketchUp.
{% endhint %}

[^1]: Pas très clair


# Updating

How to check that you have the latest version and how to update.

**OpenCutList** will notify you as a new release becomes available. To check if you have the latest release, simply click on **Update**.

{% hint style="warning" %}
You will need to restart SketchUp for the changes to be active.
{% endhint %}

![Open "More" menu](/files/GHBsXEy7maygW0lEDqmy) ![Click on "Update" button](/files/5h7ugGjYSLdxcr4INrKB)

Great care is taken before releasing new features. So, there is no advantage not to update.


# Materials

Material applied to components defines how a part will be handled by OpenCutList.

## Applying Material

To distinguish between different wood species and types of materials, a **Material** must be applied to the components. A texture representing the actual material can be used, but this remains optional, as plain colors (including white) are sufficient.

{% hint style="info" %}
If you have already defined a SketchUp material and maybe even applied it to your components, the material will automatically appear in the **Materials** section of OpenCutList, although it will not have any specific configuration.
{% endhint %}

{% hint style="success" %}
**OpenCutList** will allow you to add a material and configure it directly, without having to first create it in SketchUp and then configure it.
{% endhint %}

## Material Types

An **OpenCutList** material is a SketchUp material with a few additional attributes. **OpenCutList** defines the following five types of materials:

1. [**Solid Wood**](#solid-wood) is rough lumber, usually available in specific thicknesses, but not in standardized lengths or widths. Because it may have defects (knots, cracks, discoloration, …), it is up to the woodworker to carefully choose the location of the parts inside such a material.
2. [**Sheet Good**](#sheet-good) is lumber coming in sheets (MDF, Plywood, OSB, …). Such a material is not meant to be planed, just cut. It is a fairly homogeneous material where grain direction may (Plywood, OSB) or may not be important (MDF).
3. [**Dimensional** ](#dimensional)is lumber coming in standardized cross sections and standardized lengths. Typically, such a material is only cut to length. Consider it as carpentry/construction lumber. If we were to use this wood for cheap furniture, we would make it **Solid Wood**, since we would probably rip and/or plane it first.
4. [**Veneer** ](#veneer)is a thin slice, in general of valuable wood, that is applied onto panels to obtain a nicer looking surface.
5. [**Edge Banding**](#edge-banding) is a thin strip of material applied to the edges of parts made from less valuable core material like MDF or Plywood, to increase the durability of exposed edges and to make them look nicer.
6. [**Hardware** ](#hardware)is an accessory like a hinge, a drawer slide or pull, or any other non-wooden part.

You can apply a material to a component definition, by opening the component and applying the material to all its faces, or just by applying material to the selected instance. In the latter case, components with the same definition may have different material applied to them.

{% hint style="success" %}
If you apply material to a group of components, **OpenCutList** will consider that all components have the specified material, if they do not already have a material. If you later ungroup the components, they will simply retain the material that was applied to the group. In this respect, **OpenCutList** behaves like SketchUp.

This behavior will be deactivated if you unselect "Smart Assignment..." in  [Options for Parts](/features/parts/options#smart-assignment-of-material).
{% endhint %}

{% hint style="warning" %}
If you apply a material to only specific faces of a component, **OpenCutList** will consider this to be the material of the component (but only if "Smart Assignment..." has been selected in [Options for Parts](/features/parts/options#smart-assignment-of-material)).
{% endhint %}

## Configuring Materials

Materials must be configured to help **OpenCutList** produce the **Part List**. Each material type (as defined above) has its own specific set of configuration options. A material has a **name**, a **color** and a **type**. The name can describe a whole set of material. MDF, for instance, which is available in multiple thicknesses and sheet sizes, can be configured as a single material.

{% hint style="success" %}
Once configured, the material can be exported to a `*.skm` file or a SketchUp collection, see [Materials](/features/applying-materials#saving-and-importing-material). The configured material can also be set as a default preset.
{% endhint %}

### Solid Wood

Solid wood can be rough lumber or any lumber that will be ripped and planed to thickness. In addition to **length** and **width oversize**, a **thickness oversize** can be configured to account for warped, irregular boards. Soft or hardwood lumber is usually available in **standard thicknesses** (real, not nominal).

### Sheet Good

Sheet goods like MDF, Plywood and OSB are available in various sizes and thicknesses. A single material can describe all variants.

* a **length** and a **width oversize** can be applied to each part to be placed onto a panel.
* a **standard thickness** (multiple values possible) in real dimension (not nominal).
* a **standard size of the sheets** (multiple values possible) in real dimensions (not nominal). The first dimension is length *by convention*, the second dimension is width.
* presence or absence of a **grain direction**. Grain direction always runs along the length, i.e. the first dimension of the panel.

### Dimensional

Dimensional lumber is often used in construction. It is characterized by a **standard section** (width x thickness, multiple values) and available in **standard lengths**. A **length oversize** parameter can be set to account for rough dimensions.

### Veneer

Veneer has a **thickness**, a **length** and **width oversize** and may have a **grain direction**. It usually comes in sheets.

### Edge Banding

Edge Banding has a **thickness**, a **length oversize** and a **standard length** (multiple values possible). It is also available in **standard width** (multiple values possible).

**Reduce** applies to the dimension of the part the edge banding is applied to. When **No Reduction** is selected, the part will not be trimmed. If **Reduce by Edge Banding Thickness** is selected, the part's dimension will be reduced by the thickness of the edge banding.

### Common Attributes

**Density** and **Price** may be configured for all four types of materials. These values are used in **Reports**, to calculate the weight and price of the raw material needed for a project.

### Hardware

**Hardware** is handled quite differently from the other types of material, because there are no parameters to configure here. For each type of hardware you will use, add a distinct material. For example, *dominos* to use Dominos. Now you can assign this material to any component and **OpenCutList** will consider this component to be a Domino and list all components of this type in a same group. Edit the properties of each part to add **Packaging**, **Price** and **Weight** if you want to use the **Report** feature.

By drawing simple dowels and assigning the material *dominos*, OpenCutList will provide you with the total number of Dominos needed for the project. If you buy your Dominos in packs of 1000, but you only need 80, OpenCutList will inform you that 920 will not be used.

## Adding and Configuring Textures

Textures can be added from SketchUp or directly from **OpenCutList**. The tab Texture of the properties of a material lets you select a texture picture.

{% hint style="info" %}
This feature was introduced in version 5.0.0. Before, textures had to be added using SketchUp.
{% endhint %}

Textures can be rotated in 90° steps and their width and height can be defined.

<figure><img src="/files/9kCkIK1gyXDGcMiPIsfw" alt="" width="563"><figcaption><p>Textures in OpenCutList</p></figcaption></figure>

## Saving and Importing Material

You may save the configured material for use in future projects. **OpenCutList** lets you export each material to its own file with extension **.skm**. So, you can use the same material (including all parameters associated with it) in another model.

{% hint style="info" %}
**OpenCutList** will save the material in a subfolder of your profile, so that it can be reused in another project or shared with other users.
{% endhint %}

{% hint style="warning" %}
If you import a material with the same name as a material already present in the folder, the import will be silently ignored (which is SketchUp's behavior).
{% endhint %}

## Duplicating Material

To duplicate a given material (including its **OpenCutList** attributes), open the **Properties of Material** window and click on **Duplicate**. Enter a new name for the copy. If you don't change the name, a new unique name based on the old name will be given.

## Removing Material

You may directly delete a material from **OpenCutList**.&#x20;

{% hint style="warning" %}
Removing a material from the **OpenCutList** Materials tab will also remove it from the SketchUp model and apply the default material to all parts which had the deleted material.
{% endhint %}

## Purging Unused Material

You may also purge unused material similarly to `Window -> Model Info -> Statistics`. However since the extension relies on a SketchUp function, if an unused material is currently selected in the material tray, **OpenCutList** cannot delete it.


# Parts

Parts generates a Parts List by summarizing all visible components in the active scene.

## Layout of the Page

This page includes the filename, the scene name and the units used in the model. A summary section lists all parts, grouped by material and thickness, with quantities and rough dimensions (depending on the type of material). The summary is followed by sections specific to the different groups.

To shorten a long Parts List, you can hide the summary and all groups, up to the title bar.

{% hint style="warning" %}
The content of the Parts List is dynamically generated. Anytime you select a part in the scene or if you switch to another scene, the list will receive a notification that something has changed and will ask you to regenerate.
{% endhint %}

{% hint style="success" %}
Hidden components are not included. The Parts List either reflects what you have selected in the current scene, or all visible components if there is no selection.
{% endhint %}

[**Parts List**](/features/parts/parts-list) gives more details about the content.

## Menus

**Generate** recomputes the Parts List after a change in the model, after the selection of active parts, or if the current scene has changed. To avoid OpenCutList always asking to regenerate the Parts List, you can click on **Ignore** or simply minimize the window. However, because of the dynamic nature of the list, it is important for you to know if the list does correspond to the model and your selection. The menus also include:

* [**Print**](/features/parts/print), to print the current Parts List.
* [**Export**](/features/parts/export-to-csv), to save the Parts List to a CSV file.
* [**Draw**](https://docs.opencutlist.org/features/parts/layout), to generates a configurable exploded view of your model or a selection of parts.
* [**Estimate**](/features/parts/report)**,** to estimate cost and weight of the Parts List.
* [**Options**](/features/parts/options), to define how OpenCutList should build and display the Parts List.
* **"...",** to access for general functions.


# Print

How to print the Parts List.

Only the visible groups of the **Parts List** will appear on the printed version. The print-out will always show the **date** and the **units** of the model (to avoid the [Spinal Tap - Stonehenge](https://www.youtube.com/watch?v=071cXxCNj5A) problem).

The extent of the margins can be configured in the [**General Preferences**](/getting-started/installing/preferences).

![Parts List as printed](/files/jnXVzzvQiVKQ8WKzG1wq)

If you have entered a **Name** and a **Description** for your model in the `Window -> Model Info -> File`, then this information will appear at the top of the print. In addition to the name, the **Scene name** and **description** will also appear on the print.

{% hint style="warning" %}
The print will adapt to the paper format of the selected printer.
{% endhint %}

{% hint style="success" %}
If the **Parts List** shows units, they will be included in the print.
{% endhint %}

{% hint style="success" %}
To print a PDF file, install a generic PDF printer device or use your system's PDF printing capabilities.
{% endhint %}


# Export to CSV or XLSX

Exporting data from OpenCutList to a CSV file or clipboard.

The **List of Instances**, the **Parts List** or the **Summary** can be exported or prepared for a **Copy to Clipboard**.

![Parts Export dialog](/files/fStYaHgb0vnQTxSMIc8m)

When selecting **List of Instances**, **OpenCutList** exports each part on its own row. **Parts List** and **Summary** export the data as represented on screen.

{% hint style="success" %}
Only visible groups are part of the export. If you hide a group in the **Parts List**, it will not appear in the export.&#x20;
{% endhint %}

If units are shown in the **Parts List**, dimensions will be exported with units as well. On the **Customization** tab, rows can be selected, ordered or used to compute derived data.

The **Separator** allows you to select among **Tabulator**, **Comma** or **Semicolon** as the sign to separate columns.

**Encoding** defines how special characters (beyond ASCII) will be encoded in the file. **UTF-8** is a widely supported encoding.

### Copy to Clipboard

By clicking on the **Preview**, you may copy everything (values including headers) or just values to the clipboard.&#x20;


# Customization

CSV Exports can be customized using the advanced formula editor.

Columns of the exported data can be customized using the **Formula editor**.

### Native Columns

<figure><img src="/files/Q0RTDwDwioKk8LXiEE5K" alt=""><figcaption></figcaption></figure>

The native columns are the raw columns that depend on the selected **Source** (Summary, Parts List or List of Instances).

For each column, you may

* change its title
* hide or show it
* remove or add it
* change the alignment (this will have no effect in the exported file!)

The order of columns can be changed by dragging the left handle.

{% hint style="success" %}
You can preview your configuration at any time.
{% endhint %}

<figure><img src="/files/FIUhS4kgY1BHeP1xooWX" alt=""><figcaption></figcaption></figure>

The settings can be saved to a preset for future use.

You can also add new columns, for example to add the result of a formula.

### Formulas

<figure><img src="/files/zaHEM4gMByzZmsSyGxFn" alt=""><figcaption></figcaption></figure>

A formula can be added to each column to define its content. To be as powerful as possible, formula are written in **Ruby** code.

For example, to add the string "ABC-" in front of each designation, use

`"ABC-" + @Designation`

To replace the edge material name by an X, use

`@Edge Length 1.empty? ? '' : 'X'`

This tells **OpenCutList** that you want to concatenate two strings, instead of just using the native value of the column.

To get a list of available variables, type @ into the formula field. In front of each variable, a small colored square will tell you what is the type of this variable.&#x20;

<figure><img src="/files/0VZjKMK2R2bY9ym2Cqst" alt=""><figcaption></figcaption></figure>

The meaning is

* `S`: [string](https://ruby-doc.org/core-2.5.1/String.html)
* <mark style="color:blue;">`I`</mark>: [integer](https://ruby-doc.org/core-2.5.1/Integer.html), a number without decimal part
* <mark style="color:yellow;">`L`</mark>: [length](https://ruby.sketchup.com/Length.html), a number measuring a length
* Black `A`: [array](https://ruby-doc.org/core-2.5.1/Array.html) or list of something
* Orange <mark style="color:orange;">`A`</mark>: area
* <mark style="color:orange;">`T`</mark>: material type, an object that represents a material type name with following test functions:
  * `is_solid_wood?`
  * `is_sheet_good?`
  * `is_dimensional?`
  * `is_hardware?`
  * `is_edge?`
  * `is_veneer?`
* <mark style="color:purple;">`E`</mark>: edge object that hold 3 sub properties :
  * `material_name` - the edge material name (`S`: string)
  * `std_thickness` - the edge thickness (<mark style="color:yellow;">`L`</mark> : length)
  * `std_width` - the edge width (<mark style="color:yellow;">`L`</mark> : length)
* <mark style="color:purple;">`V`</mark>: veneer object that hold 2 sub properties :&#x20;
  * `material_name` - the veneer material name (`S`: string)
  * `std_thickness` - the veneer thickness (<mark style="color:yellow;">`L`</mark>: length)

{% hint style="danger" %}
Depending on the type of value, certain operations may not yield the expected result. Adding a length to a quantity will probably not make sense, and the column might be empty.
{% endhint %}


# Draw

Draw generates a configurable exploded view of your model or a selection of parts.

{% hint style="warning" %}
This feature is **only** available for SketchUp 2018 and higher.
{% endhint %}

## Composition

The Composition tab groups the options to customize the appearance of the parts and the labels in the exploded view.

<figure><img src="/files/SSQE76Fr2oJmQjgpg4ug" alt=""><figcaption><p>Customizing the appearance</p></figcaption></figure>

### Customize labels

You can customize labels through the field Formula. Just write Ruby code to compose the text of each label from default input variables.

Use the *Formula examples* button to try 😉

<div><figure><img src="/files/sA3fG3adClGnIFSWgmZh" alt=""><figcaption></figcaption></figure> <figure><img src="/files/wW6602myulKFZBILdg5S" alt=""><figcaption></figcaption></figure></div>

## Configuration

The exploded view will be placed on a printable area. You may define the paper size, header and the camera parameters.

<figure><img src="/files/iVeTm94hJCwNCIkkXYvr" alt=""><figcaption><p>Configuring the paper size and the camera</p></figcaption></figure>

## Layout

Once the exploded view is displayed, you may change the camera parameters and use the mouse to move the view around.

<figure><img src="/files/7gPZHHmMwcxhiV3kDULy" alt=""><figcaption><p>Exploded view</p></figcaption></figure>

{% embed url="<https://youtu.be/bra6e6RGl_k>" %}


# Export to Layout

Exploded views can be exported to the SketchUp Tool Layout.

{% hint style="warning" %}
This feature is **only** available for SketchUp 2018 and higher.
{% endhint %}

If you need to add more information to the exploded view, there is an option to send it to Layout.

<figure><img src="/files/GQb48Kpx3flxM0mUqAYa" alt=""><figcaption><p>Sending to Layout</p></figcaption></figure>


# Estimate

Estimate helps you estimate the cost a project by calculating a rough summary of the costs and weights of the components. The information needed by Estimate is configured in the material itself.

## General Parameters

For each material used in your project, price and weight information can be specified.

{% hint style="success" %}
**OpenCutList** will produce a report even if some information is missing.
{% endhint %}

In addition, the following **OpenCutList** [**General Preferences**](/getting-started/installing#selecting-unit-of-weight-and-currency) are important:

* the **currency symbol** to be used. All prices will be displayed using this symbol. You are free in your choice of symbol (€, CHF, USD, $, ...).
* the **weight unit** used to compute weight from the **material density**.

## Material Configuration

### Material Density

The material density or **specific mass** is the mass divided by the volume.

In the properties of each material, there is a tab **Attributes**.  The density can be entered in \[**kg/m³]** if your model units are metric, or **\[lb/ft³]** if your model units are imperial. Entering the density in **\[kg/ft³]** or **\[lb/m³]** is also possible.

{% hint style="info" %}
Wood density typically ranges between 300 and 1200 kg/m³, or 18.7 to 74.2 lb/ft³.
{% endhint %}

The density of wood varies according to moisture content and is very variable, even within the same species, due to various factors. The material density used by **OpenCutList** may be approximate.

![Configuring the density of a material](/files/87F5l3eZcQHt9eNGFRxp)

### Price

A **standard price** or size dependent price can be specified.

![Entering the price of a material](/files/uaPv9oXlFKXsbri6jMXd)

{% hint style="success" %}
**OpenCutList** gives you several choices of entering price and weight.
{% endhint %}

### Hardware

**Hardware** is somewhat special. You cannot configure a price on the **Material Tab**.

![](/files/ljWLBK3SKUQM32829Abz)

## Running the Estimate

<figure><img src="/files/w5P7hIoklnQhxePMzX6G" alt=""><figcaption></figcaption></figure>


# Options

Options define how the Parts List will be displayed.

**OpenCutList** can be configured in many ways to suit you needs.

### General Tab

![Options in Parts Tab](/files/-Ml90y8o7O0i7GDUu7kE)

#### Automatic Orientation of Parts

If this option is selected, the length, width and thickness of a part will be determined from their relative values:

1. The length will be the largest dimension of the part.
2. The width will be the second largest dimension of the part.
3. The thickness will be the smallest dimension of the part.

{% hint style="warning" %}
If you select this option, dimensions on some parts may not be interpreted correctly!
{% endhint %}

If this option is not selected, the dimensions will simply be read along the local axes of the component. The length will be the dimension along the <mark style="color:red;">**red axis**</mark>, the width along the <mark style="color:green;">**green axis**</mark>, and the thickness along the <mark style="color:blue;">**blue axis**</mark>.

{% hint style="success" %}
The order of length, width and thickness can be specified in the **Properties of Part**, and the order can be locked for a particular part.
{% endhint %}

#### Mirrored Part Detection

If this option is selected, parts that have been mirrored will be detected as two different parts. Mirrored Part Detection can also be configured on a per part basis in the Properties of Part.

#### Smart Assignment of Material

If this option is selected, **OpenCutList** will try to infer the material of a component from the material of a face. If two or more faces have different materials, the material of the face with the largest area will be considered. When material has been extracted from one of its child elements, the Parts List will display a small icon next to the part.

If a material has been applied to an enclosing group, but not to the enclosed parts, **OpenCutList** will use the material of the the group for the parts. A small icon next to the part in the Parts List will tell you that the material was inherited.

#### Use the Attribute *Name* of Dynamic Components

#### Use Letters to enumerate Parts

Instead of numbers, `1, 2, 3, ...` , to enumerate parts, use letters, `A, B, ..., AA, ...`.

#### Reinitialize the Enumeration of Parts for Each Group

If you select this option, enumeration will start afresh with each group.&#x20;

{% hint style="warning" %}
Multiple parts may end up having the same number/letter if this is selected.
{% endhint %}

#### Group Similar Parts

If this option is selected, parts with identical size and tag (possibly empty) will be grouped in the **Parts List** even if they are not instances of the same component.

#### Hide Instance Name

If this option is selected, the instance name of a part will not be shown in the **Parts List**.

#### Hide Description

If this option is selected, the SketchUp description of a component will not be shown in the **Parts List**.

#### Hide Tags

If this option is selected, tags will not be shown in the **Parts List**.

#### Hide Rough Dimensions

If this option is selected, rough dimensions (defined as the dimension of the component plus any oversizes configured on the material or on the part) will not be shown in the **Parts List**.

#### Hide Finished Dimensions

#### Hide Actual Area of Parts of Type Sheet Goods

#### Hide the Columns of Edge Banding

When edge banding is applied to a part, four additional columns describe the edge banding. If this option is selected, the columns will not be displayed in the **Parts List**.

#### Minimize after Highlight

If this option is selected, the **OpenCutList** window will be minimized if you click on the magnifier icon of a part. If you are working with two displays (or a large display), you probably don't want this option to be checked.

## Part Sorting Tab

![Parts Sorting Tab](/files/-Ml919DjSXbLczQg1SJ6)

The parts are **always grouped by type of material and thickness**, but you can choose how they are ordered within each group.

{% hint style="success" %}
**Part Sorting** defines the order of rows within a group of parts. The rows can be sorted in ascending or descending order.
{% endhint %}

## Dimension Ordering Tab

The dimension ordering affects the column order of the dimensions when displayed in the **Parts List**. For example, when cutting sheet good on a panel saw, it is sometimes easier to have the *width* as first column instead of *length*, because usually the first cut is horizontal.

![Dimension Ordering Tab](/files/-Ml91HXjt604h0AA20Ce)

{% hint style="success" %}
**Dimension Ordering** defines the order of columns within the part list.
{% endhint %}

## Tags Tab

![Tags Tab](/files/-Ml91PtpVoQCYHDLqhsM)

**OpenCutList tags** are like keyword stickers that can be attached to parts in order to support selection and filtering of the **Parts List**. You can configure a list of custom tags to identify group of parts or parts requiring a special processing.

Tags are optional.

{% hint style="success" %}
Elements defined here will be suggested when adding a tag to a specific part in the **Properties of Part**.
{% endhint %}


# Parts List

The Parts List contains a Summary and one or more group of Parts.

## Parts List Sections

### Title

The title displays the filename or the SketchUp model name, the name of the current scene, the current date and the length unit used. An icon next to the length unit directly links to the [**Preferences**](/getting-started/installing#general-preferences).

### Summary

The summary displays an overview of the part groups (by Material/Thickness) with information for buying the lumber/sheets or accessories.

When the model units are metric, information is displayed in meters, square meters and cubic meters. When the model units are not metric (fractional, decimal inches, ...), the information is given in feet, square feet and board foot.

The summary lists **rough** dimensions based upon the oversizes that were configured in the **Materials**.&#x20;

{% hint style="warning" %}
Depending on how warped rough-sawn boards are, these oversizes may not be sufficient to get the final dimensions out of your boards.
{% endhint %}

#### Hiding the Units

Even if the **Preferences** have been configured to hide units for single dimensions, the values in the summary will always be shown with units.

### Group List

A group list is a group of parts with the same material and the same thickness.

#### Group Title

#### Part Numbering

Parts can be enumerated with letters `A, B, C, ...` or with numbers `1, 2, 3`. The enumeration can be global for the Parts List or defined on a per-group basis. The **enumeration of parts can be saved**, to avoid overwriting part numbers/identifications when adding future components.

{% hint style="info" %}
Configure the Part Numbering Style in the [Options](/features/parts/options#general-options).
{% endhint %}

#### Description

This is the description that can be added to a component when creating it. It is displayed in the Components Inspector, not in the Entity Info.

#### Info Icons

* Similar Part Fold/Unfold
* Mirrored Part
* Scaled Part
* Inherited or extracted Material

#### Action Buttons

* Highlight Part
* Edit Part
* Select Box

#### Rough and Finished Dimensions

Rough and finished dimensions will be displayed. To customize the order of rows and columns and to hide/show columns, select the appropriate [**Options**](/features/parts/options).

#### Properties of Parts

Some properties of parts in the list can be edited directly from the **Parts List**. The description (but not the instance) of the component and the material assigned to the part. Furthermore, one can define that the **length** or (exclusively) **width** attribute should be summable. In this case, the rough dimensions will be summed up and shown in the rough dimension column.

#### Highlighting Parts

A long list of parts may contain components for which there is little information, or which can be difficult to locate in the model. Therefore, parts can be highlighted from the properties window by using *Highlight the part in the model*.

Highlighting parts works also directly from the **Parts List** or from a **Cutting Diagram**.

From the **Parts List**, all parts contained in a group can be simultaneously highlighted.

#### Numbering Parts

Parts can be enumerated with numbers or letters. The enumeration can be reset for each group or run over the entire **Parts List**.&#x20;

{% hint style="warning" %}
Enumeration of parts is dynamic. When the selection of parts in your model changes, the enumeration is updated accordingly.
{% endhint %}

#### Saving Part Numbers

To fix the number of a part, use *Save the part numbers of this group*.


# Edit Part

The properties of a Part or of a group of Parts can be edited from the Parts List.

To edit the properties of a **Part**, click on the pencil symbol in the **Parts List**. If you select a single **Part**, the **Part Properties** Window will open, allowing you to edit a single part or a group of identical parts.

If a down arrow is the first icon after the description, multiple **Parts** are grouped together, because the **Options** setting [**Group Similar Parts**](/features/parts/options#general-tab) is enabled. In that case, you will only be able to edit their common attributes. Click on the arrow to unfold the group and select each **Part** individually.

If you selected a group of **Parts** spread over several lines, only their common attributes can be changed.

## Part Properties

The Part Properties window contains five tabs:

* [General](#general)
* [Material Specific Tab](#material) (Dimensional, Sheet Goods, ...)
* [Axes](#axes)
* [Oversizes](#oversizes)
* [Info](#info)

{% hint style="warning" %}
Some tabs will only appear if a material has be assigned to the part.
{% endhint %}

{% hint style="success" %}
**OpenCutList** can highlight the part in your model.
{% endhint %}

### General

Within this tab, you may change the Name and Description of the component, associate it with a Material, and add or remove Tags.

### Material Specific Tab

Depending on the type of material of the part, this tab will display the configuration options.

### Axes

**OpenCutList** shows you how it interprets the local SketchUp axis (length is <mark style="color:red;">red</mark>, width is <mark style="color:green;">green</mark> and <mark style="color:blue;">blue</mark> is thickness) of the Part. You may reorder the dimensions. At the same time, you may ask **OpenCutList** to change the location of the axes origin and to lock the orientation (in case you have selected Automatic orientation in the [**Options**](/features/parts/options#general-tab)).

{% hint style="success" %}
All axes operations are actual SketchUp operations, so they directly affect the local axes of your component.
{% endhint %}

{% hint style="info" %}
When drawing your components, you may ignore the axes and then set them here.
{% endhint %}

If a part has been flipped along one of its axis with respect to the component definition, an icon will  indicate that this part is **mirrored**.

### Oversizes

The dimensions of your components are usually finished dimensions.  A length and width oversize, and even a thickness oversize for solid wood, can be applied to all parts via the **Material** configuration. Note, however, that there are situations where one would like to make a single part slightly larger because it will be adjusted when the part will be installed (filler strip, cover panel, ...).

### Info

Instances of components in SketchUp with the same thickness and the same material become parts in **OpenCutList**.

When creating a component with *Make Component...*, you may:

* give the component definition a **name** by replacing the default text (usually *Component#1*), or leave the default identification.
* set the component axes or rely on the default Sketchup behavior, which sets the component axes parallel to the model axes. The global option of the extension, **Automatic orientation of parts**, will then interpret the 3 dimensions of a part such that the largest dimension is **length** and the smallest dimension is **thickness**, the third dimension becoming **width**.

It is important to correctly set the component axes to convey the desired grain direction to **OpenCutList**. With the default Sketchup behaviour, you may get unexpected results, as in the case of a short but wide part.

These parameters may be changed at a later time, but **OpenCutList** will use them to describe the part in the Parts List and to retrieve its dimensions.

## Description

A component may be reused several times in a model, therefore you can label the **instance**. This label will also appear in the Parts List.

## The Bounding Box

Every component has an enclosing bounding box defined by the extent of the object along the component axes.

The **length** of this box is represented along the **red** axis, the **width** along the **green** and the **thickness** along the **blue** axis. If the components axes are set incorrectly, this may lead to a wrong interpretation of the dimensions of the component.

If you are not familiar with the concept of bounding box, checkout this video [SketchUp Skill Builder: Group axis and bounding box](https://www.youtube.com/watch?v=2UnzHwAt7mc).

## Working with Scaled Components

**OpenCutList** also takes into account scaling of components. Although the description of the parts will be the same, they will appear on different lines of the Parts List.


# Cutting Diagram 7.0

Cutting diagrams are available for material groups of type Sheet Good and Dimensional.

{% hint style="danger" %}
This page is currently being written.
{% endhint %}

{% hint style="info" %}
This feature was introduced in version 7.0.0.
{% 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, ...

{% hint style="warning" %}
Cutting diagrams are not available for material of type **Solid Wood**, because they are not meaningful in that context.
{% 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

* **One** (Dimensional) - Cut lengthwise only
* **Guillotine** - Cutting into rectangles with through cuts
* **Rectangle** - Cutting into nested rectangles
* **Nesting** - Cutting with any nested shapes

<figure><img src="/files/6o9tdlGMCJg1PWMss8p5" alt=""><figcaption></figcaption></figure>

## Cut Types

* **exact**: the number of cutting levels is exactly the same as the input value
* **non-exact**: an additional cutting level is allowed, but only to separate a leftover piece from an item
* **homogeneous**: this is similar to "exact," but it also requires that the last level of sub-sections contain exactly the same items

<figure><img src="/files/k4t30ktKCc75JEhjWLs2" alt=""><figcaption></figcaption></figure>


# Export

{% hint style="danger" %}
This page is currently being written.
{% endhint %}

{% hint style="info" %}
This feature was introduced in version 7.0.0.
{% endhint %}

You can export cutting diagrams drawings into SVG or DXF files. This feature is useful, in particular, to transfer cutting diagrams to other CNC or laser cutter software.

Each panel (or bar) of the cutting diagram will be exported in a **separate file**. All files will be placed in a common directory, which will be named according to the name of the material and the thickness (or section).


# Cutting Diagrams

Cutting diagrams are available for material groups of type Sheet Good and Dimensional.

## 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, ...

Our cutting diagram algorithm includes further restrictions to the general problem:

* all cuts must be **guillotine cuts**, that is they must cut through the panel or the offcut and cannot be stopped in the middle or make turns.
* parts to be placed onto a panel may or may not be rotated by 90° depending upon the material (wood **grain direction** or none).
* the generation must be **deterministic**, that is, it must always give the same solution for the same input. The cutting diagram is not saved in the model, but recomputed every time.

{% hint style="warning" %}
Cutting diagrams are not available for material of type **Solid Wood**, because they are not meaningful in that context.
{% 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 %}


# Dimensional

Dimensional material can only be cut to length.

## Material Tab

Select the **Standard Dimensional** and/or the **Offcut Boards** you would like to use to compute the cutting diagram.

<figure><img src="/files/DkIyJkGMPrlC0ag4DfmP" alt=""><figcaption></figcaption></figure>

## Configuration Tab

Define the **Blade Thickness** and the **Trimming Size**, which is applied to both ends of the board.

<figure><img src="/files/NbjITci8Mo20ajXyJypq" alt=""><figcaption></figcaption></figure>

## Display Tab

Configure the appearance of the resulting **Cutting Diagram**.

{% hint style="success" %}
Remember to save your preferences using the **Presets**.
{% endhint %}

<figure><img src="/files/FttCdODNncy2jRwMjaFY" alt=""><figcaption></figcaption></figure>

## Cutting Diagram

<figure><img src="/files/9Ibi94ssUW9RkQZ9d5PP" alt=""><figcaption></figcaption></figure>


# Sheet Goods

For every group of parts with the same material of type Sheet Good and the same thickness, a small icon will appear in its title bar. Clicking on it will open the Cutting Diagram Configuration Window.

## Grain Direction

Materials without grain direction allow a part to be rotated by 90° if a better fit can be found.&#x20;

If you are using material with grain direction, but the grain direction is not important for a few parts, because these parts are hidden, let **OpenCutList** know that grain direction shall be ignored. This can be done in the tab [**Axes** ](/features/parts/parts-list/edit-part#axes)of the **Properties** of the part.&#x20;

## Material Tab

<figure><img src="/files/7qIX2zrZPgd98oLNhxld" alt=""><figcaption></figcaption></figure>

Material of type **Sheet Good** must be configured before a cutting diagram can be computed, see [Materials](/features/applying-materials#sheet-good). By convention, length is read on the red axis of your components. If the material has a grain direction, the grain runs along the first dimension. Select a **Standard Panel** size and/or list the **Offcuts** you would like to be considered first.

The standard panel size is assumed to be available in unlimited quantity. If additional space is required, the cutting diagram algorithm will generate a new panel with these dimensions.

{% 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 %}

{% hint style="success" %}
Any number of offcuts can be added. These will be considered first when computing the cutting diagram. When standard panels are not available, the parts may not all be placed.
{% endhint %}

{% hint style="warning" %}
It is not possible to configure several standard panel sizes and let **OpenCutList** decide which panel is best for you.
{% endhint %}

## Configuration Tab

<figure><img src="/files/6EjfrLjsbrRhuFKLkf36" alt=""><figcaption></figcaption></figure>

Configure the **Blade Thickness** and a **Trimming Size** to be applied around the raw panel.&#x20;

You also need to select an **Optimization Level** (Medium is faster but may sometimes miss a good solution, Advanced makes more computations but may take much more time). Finally, select a **Preferred Direction**, which determines if parts should rather be aligned lengthwise, widthwise, without preference, or ask **OpenCutList** to check for all three possibilities.&#x20;

When multiple panels are required, the last choice may select a different stacking preference per panel; otherwise, the same or no stacking preference is applied to all panels.

{% hint style="warning" %}
Always try different Optimization Levels and Preferred Directions for your particular problem. There is no guarantee that one option combination will always provide a better cutting diagram than another.
{% endhint %}

## Display Tab

<figure><img src="/files/tKukLb0MGi84ztwRLmBp" alt=""><figcaption></figcaption></figure>

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

{% hint style="success" %}
Remember to save your preferences using the **Presets**.
{% endhint %}

## Cutting Diagram

At the top of the cutting diagrams, a **Summary** displays the settings in use, the panel sizes, quantity, area, and the number of parts placed onto each panel. At the bottom of each cutting diagram, OpenCutList indicates the **length of all cuts** (excluding the trimming cuts) and the **efficiency** of the placements onto the panel.

<figure><img src="/files/BurOMD4bVLehSo5VoXwd" alt=""><figcaption></figcaption></figure>


# Export

{% hint style="info" %}
This feature was introduced in version 6.0.0.
{% endhint %}

You can export cutting diagrams drawings into SVG or DXF files. This feature is useful, in particular, to transfer cutting diagrams to other CNC or laser cutter software.

Each panel (or bar) of the cutting diagram will be exported in a **separate file**. All files will be placed in a common directory, which will be named according to the name of the material and the thickness (or section).

## Configuration

After generating a cutting diagram and clicking on the **Export** button, a configuration dialog appears.

<div><figure><img src="/files/uRRe72RNOA5rOQaTktLM" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="/files/zzilYSeNLDObnD6xnESR" alt="" width="563"><figcaption></figcaption></figure></div>

### Supported Formats

Cutting diagrams can be exported in the following formats:

* **SVG** : [Scalable Vector Graphics](https://en.wikipedia.org/wiki/SVG)
* **DXF** : [AutoCAD DXF](https://en.wikipedia.org/wiki/AutoCAD_DXF)
  * **DXF Structure** : Layer or Layer + Block

{% hint style="info" %}
DXF opens a special field called *DXF Structure* that allows you to define how the output file is build.

By default, OpenCutList uses one DXF layer part depth identified in part drawing.

If you select **Layer + Block**, each part is drawn in its own block. This feature provides more flexibility for editing the diagram in a CAD software.
{% endhint %}

### Export options

* **Unit** : Define the unit used in the exported file.
* **Smoothing** : Smooth circles and arcs. [*Learn more*](/features/smart-export-tool#smoothing)*.*
* **Merging Mode** : [Learn more](/features/smart-export-tool#merging-mode)
  * *Default* : The part shape is exported with one layer per depth.
  * *Outline + Drillings + Merge* : Activate the separation of the outer contour of parts from their holes, as well as the merging of depths for each cavity.
* **Paths** : Enable the use of edges, which are not associated with a face contained in the part, to export them as a path. [Learn mode](/features/smart-export-tool#paths).
* **Sheet color** : Customize the line and fill *(SVG only)* colors of exported sheet.
* **Parts colors** : Customize the line and fill *(SVG only)* colors of exported parts.
* **Drillings colors** : Customize the line and fill *(SVG only)* colors of exported part's drillings.
* **Paths colors** : Customize the line color of exported paths.
* **Identifications colors** : Customize the text color of part identification.
* **Leftovers colors** : Customize the line and fill *(SVG only)* colors of leftovers.
* **Cuts colors** : Customize the line color of cuts.


# Labels

Adhesive labels can be printed from a Parts List or a Cutting Diagram.

{% hint style="success" %}
With its powerful label editor, **OpenCutList** can adapt to the format of almost any label sheet available.
{% endhint %}

## Selecting Parts

The **Print labels** icon is available for every group in the **Parts List** and from every **Cutting Diagram**.&#x20;

<div><figure><img src="/files/V9obkg71qfR1iiIozbv5" alt="" width="563"><figcaption><p>From Parts List group</p></figcaption></figure> <figure><img src="/files/rXts3IPdKdFLWWllqcFF" alt="" width="563"><figcaption><p>From Cutting Diagram</p></figcaption></figure></div>

By default, **Labels** will use all parts in the list (shown by a small letter "A" in the icon). If you select only a subset of parts, it will warn you and show a small letter "C" in the icon.

## Page Configuration

Depending on your requirements, you will have to select a specific page configuration for your labels. The **Paper Size**, **Margins**, **Label Gap**, and the number of **Columns** and **Rows** can be configured to match the available sheets of labels you have purchased.

These parameters will determine the real size of your label, shown at the top of the [**Layout**](#label-layout).

![Page configuration](/files/JDfGMI4cZ1XvREFCaRIM)

{% hint style="success" %}
**OpenCutList** does not have any pre-configured label templates. You are free to edit your own and save them for use in future projects.
{% endhint %}

{% hint style="warning" %}
If you print on a continuous label printer like **Dymo** or **Zebra**, you must configure your **Paper Size** to match the label size you are using.
{% endhint %}

## Label Layout

Label elements can be added, resized, aligned, colored and deleted. A layout together with its page configuration can be saved as a **Preset**. You may want to set up a few layouts for different applications.

![Label layout](/files/WV3TWmVAeGunzbwIVw95)

One special element named Formula allows you to fully customize its output string with **Ruby** code. [Learn more](/features/parts/export-to-csv/customization).

<figure><img src="/files/7e46P9LswFAQjuIph5WJ" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
**OpenCutList** stores your layouts in your model. Label layouts are not lost when sharing a model with other SketchUp users.
{% endhint %}

## Offset

The **Offset** defines the position of the **first label** to be printed on the **first page** of your sheet.

If you are printing to a continuous label printer, like a Dymo or Zebra printer, this will have no effect.

![Selecting the first label on a sheet](/files/mp593OEKBQ0j7AIvJW0V)

## Printing on Sheets

When printing the labels, you must ensure that you have selected the matching *Paper Size* in your printer. **OpenCutList** has no control over your printer, and so it cannot determine if your choice is correct.

<figure><img src="/files/YpiMPvla94PFINc3bSSg" alt=""><figcaption></figcaption></figure>


# Export Part Drawing

{% hint style="info" %}
This feature was introduced in version 6.0.0.
{% endhint %}

To meet different uses, OpenCutList allows you to simply export the part drawing in 2D (CNC, laser cutting, ...) or 3D (3D printers, ...).

Even if SketchUp already allows you to export the drawing in 2D or 3D, doing it using OpenCutList greatly simplifies the operation:

* No need to change the model view
* One file per part with batch processing
* Custom origin
* Advanced 2D projection options

{% content-ref url="/pages/nSWogsSZvt49YnwrrcGw" %}
[Export 2D Part Projection](/features/parts/export-part-drawing/2d-projection)
{% endcontent-ref %}

{% content-ref url="/pages/poVCLrmrFyn1043i7dEG" %}
[Export 3D Part Geometry](/features/parts/export-part-drawing/3d-geometry)
{% endcontent-ref %}


# Export 2D Part Projection

{% hint style="info" %}
This feature was introduced in version 6.0.0.
{% endhint %}

This module allows you to export **one** or **more parts** as 2D projection(s) in one operation.

This can be done from three places:

* From Parts List, to export all parts.
* From a group of the Parts List, to export all the parts of the group.
* From the part's properties dialog, to export edited parts.

<div><figure><img src="/files/KSKWNTRl8zaqKpTdHrIT" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="/files/Me8PxIkYINhrZGHVTm0h" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="/files/AQvkaWd77856Kx9acVER" alt="" width="563"><figcaption></figcaption></figure></div>

Each part will be exported in a separate file. All the files will be placed in the directory named after the part's material and thickness (or section).

## Configuration

<figure><img src="/files/W2KEItA3VUGwHMbGubW4" alt="" width="563"><figcaption></figcaption></figure>

### Supported Formats

Cutting diagrams can be exported to files with the following formats:

* **SVG** : [Scalable Vector Graphics](https://en.wikipedia.org/wiki/SVG)
* **DXF** : [AutoCAD DXF](https://en.wikipedia.org/wiki/AutoCAD_DXF)

### Export options

* **Unit** : Defines the unit used in the exported file.
* **Projection** : Define the viewed face of the part : *2D Front View* or *2D Rear View.*
* **Anchor point** : This options preserves the location of the coordinate axes of the SketchUp component of this part in the exported file (Project the part's origin). Otherwise, the smallest coordinate of the bounding box is used as location of the origin of the coordinate axes (Default).
* **Smoothing** : Smooth circles and arcs. [*Learn more*](/features/smart-export-tool#smoothing)*.*
* **Merging Mode** : [Learn more](/features/smart-export-tool#merging-mode)
  * *Default* : The part shape is exported with one layer per depth.
  * *Outline + Drillings + Merge* : Activates the separation of the outer contour of parts from their holes, as well as the merging of depths for each cavity.
* **Paths** : Enables the use of edges, which are not associated with a face contained in the part, to export them as a path. [Learn mode](/features/smart-export-tool#paths).
* **Parts colors** : Customize the line and fill *(SVG only)* colors of exported parts.
* **Drillings colors** : Customize the line and fill *(SVG only)* colors of exported part's drillings.
* **Paths colors** : Customize the line color of exported paths.


# Export 3D Part Geometry

{% hint style="info" %}
This feature was introduced in version 6.0.0.
{% endhint %}

This module allows you to export **one** or **more parts** as 3D geometries in one operation.

This can be done from three places:

* From Parts List to export all parts.
* From a group of the Parts List to export all the parts of the group.
* From part's properties dialog to export edited parts.

<div><figure><img src="/files/VBSZEk0hiXCDgZfpcI0X" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="/files/bXiiXwRasRdPJiFCRvLU" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="/files/RGgl41FQQmhOo98eog9A" alt="" width="563"><figcaption></figcaption></figure></div>

Each part will be exported in a separate file. All the files will be placed in the directory named after the part's material and thickness (or section).

## Configuration

<figure><img src="/files/k4OIi6lwORLmneiL8Rur" alt="" width="563"><figcaption></figcaption></figure>

### Supported Formats

The 3D geometry can be exported to files with the following formats:

* **STL** : [Stereolitography](https://en.wikipedia.org/wiki/STL_\(file_format\))&#x20;
* **OBJ** : [Wavefront OBJ](https://en.wikipedia.org/wiki/Wavefront_.obj_file)

### Export Options

* **Unit** : Defines the unit used in the exported file.
* **Anchor Point** : This options preserves the location of the coordinate axes of the SketchUp component of this part in the exported file (Project the part's origin). Otherwise, the smallest coordinate of the bounding box is used as location of the origin of the coordinate axes (Default).


# Formulas

Formulas allow you to greatly customize output data.

## The power of Ruby

When a formula field is available, OpenCutList gives you access to a list of variables where you can play with their data by writing [Ruby](https://www.ruby-lang.org/fr/documentation/) code.

Each variable as a [Data Type](/features/parts/formulas/data-types) that allows you to access some properties and functions.

## Formula field

The formula field is a text form field where you can write Ruby code. To display the list of available first  level variables, type the **@** character. The list of variables may differ from form to form.

<figure><img src="/files/QchppdUAoMsxELIQTMpp" alt=""><figcaption></figcaption></figure>

With formulas you can perform various things, from concatenate or decorate texts (string) ...

<figure><img src="/files/TJ0riEtFtbmp26xRL5zs" alt=""><figcaption></figcaption></figure>

... to more complex operations with conditional structures.

<figure><img src="/files/L5YqiUig7mjkZcivwSik" alt=""><figcaption></figcaption></figure>


# Data types

List of all data types that may be available in formulas.

## String

A text value.

{% hint style="success" %}
Extends Ruby [String](https://ruby-doc.org/core-2.5.1/String.html) class.
{% endhint %}

## Integer

An integer numeric value.

{% hint style="success" %}
Extends Ruby [Integer](https://ruby-doc.org/core-2.5.1/Integer.html) class.
{% endhint %}

## Float

A decimal value.

{% hint style="success" %}
Extends Ruby [Float](https://ruby-doc.org/core-2.5.1/Float.html) class.
{% endhint %}

## Array

A list of objects.

{% hint style="success" %}
Extends Ruby [Array](https://ruby-doc.org/core-2.5.1/Array.html) class.
{% endhint %}

## Color

An object that represent a color.

{% hint style="success" %}
Extends SketchUp [Color](https://ruby.sketchup.com/Sketchup/Color.html) class.&#x20;

*<mark style="color:$primary;">⚠️ Setter functions are disabled</mark><mark style="color:red;">.</mark>*
{% endhint %}

## ComponentDefinition

An object that represents a SketchUp component definition.

{% hint style="success" %}
Extends SketchUp [ComponentDefinition](https://ruby.sketchup.com/Sketchup/ComponentDefinition.html) class.

*<mark style="color:$primary;">⚠️ Setter functions are disabled</mark><mark style="color:red;">.</mark>*
{% endhint %}

<table><thead><tr><th width="233.8515625">Function</th><th>Description</th></tr></thead><tbody><tr><td><code>get_dc_attribute(key)</code></td><td>Return the custom Dynamic Component attribute referenced by the <code>key</code> (<a href="#string">String</a>) name</td></tr></tbody></table>

## ComponentInstance

An object that represents a SketchUp component instance.

{% hint style="success" %}
Extends SketchUp [ComponentInstance](https://ruby.sketchup.com/Sketchup/ComponentInstance.html) class.

*<mark style="color:$primary;">⚠️ Setter functions are disabled.</mark>*
{% endhint %}

<table><thead><tr><th width="233.8515625">Function</th><th>Description</th></tr></thead><tbody><tr><td><code>get_dc_attribute(key)</code></td><td>Return the custom Dynamic Component attribute referenced by the <code>key</code> (<a href="#string">String</a>) name</td></tr><tr><td><code>local_x</code></td><td>Return the x coordinate relative to parent origin (<a href="#length">Length</a>)</td></tr><tr><td><code>local_y</code></td><td>Return the y coordinate relative to parent origin (<a href="#length">Length</a>)</td></tr><tr><td><code>local_z</code></td><td>Return the z coordinate relative to parent origin (<a href="#length">Length</a>)</td></tr><tr><td><code>world_x</code></td><td>Return the x coordinate relative to world origin (<a href="#length">Length</a>)</td></tr><tr><td><code>world_y</code></td><td>Return the y coordinate relative to world origin (<a href="#length">Length</a>)</td></tr><tr><td><code>world_z</code></td><td>Return the z coordinate relative to world origin (<a href="#length">Length</a>)</td></tr></tbody></table>

## Length

A numeric value that represents a length.

{% hint style="success" %}
Extends SketchUp [Length](https://ruby.sketchup.com/Length.html) class.
{% endhint %}

<table><thead><tr><th width="233.8515625">Operator</th><th>Description</th></tr></thead><tbody><tr><td><code>+</code> </td><td><code>Length + Length</code> → (<a href="#length">Length</a>)</td></tr><tr><td><code>*</code></td><td><code>Length * Length</code> → (<a href="#area">Area</a>)<br><code>Length * Area</code> → (<a href="#volume">Volume</a>)</td></tr></tbody></table>

## Area

A numeric value that represents an area.

{% hint style="success" %}
Extends all [Float](#float) properties and functions.
{% endhint %}

<table><thead><tr><th width="233.8515625">Operator</th><th>Description</th></tr></thead><tbody><tr><td><code>+</code> </td><td><code>Area + Area</code> → (<a href="#area">Area</a>)</td></tr><tr><td><code>*</code></td><td><code>Area * Length</code> → (<a href="#volume">Volume</a>)</td></tr></tbody></table>

<table><thead><tr><th width="233.8515625">Function</th><th>Description</th></tr></thead><tbody><tr><td><code>to_mm2</code></td><td>Return area as <a href="#float">float</a> value in mm<sup>2</sup></td></tr><tr><td><code>to_cm2</code></td><td>Return area as <a href="#float">float</a> value in cm<sup>2</sup></td></tr><tr><td><code>to_m2</code></td><td>Return area as <a href="#float">float</a> value in mm<sup>2</sup></td></tr><tr><td><code>to_km2</code></td><td>Return area as <a href="#float">float</a> value in km<sup>2</sup></td></tr><tr><td><code>to_inch2</code></td><td>Return area as <a href="#float">float</a> value in inch<sup>2</sup></td></tr><tr><td><code>to_feet2</code></td><td>Return area as <a href="#float">float</a> value in feet<sup>2</sup></td></tr><tr><td><code>to_mile2</code></td><td>Return area as <a href="#float">float</a> value in mile<sup>2</sup></td></tr><tr><td><code>to_yard2</code></td><td>Return area as <a href="#float">float</a> value in yard<sup>2</sup></td></tr></tbody></table>

## Volume

A numeric value that represents a volume.

{% hint style="success" %}
Extends all [Float](#float) properties and functions.
{% endhint %}

<table><thead><tr><th width="233.8515625">Operator</th><th>Description</th></tr></thead><tbody><tr><td><code>+</code> </td><td><code>Volume + Volume</code> → (<a href="#volume">Volume</a>)</td></tr></tbody></table>

<table><thead><tr><th width="233.8515625">Function</th><th>Description</th></tr></thead><tbody><tr><td><code>to_mm3</code></td><td>Return volume as <a href="#float">float</a> value in mm<sup>3</sup></td></tr><tr><td><code>to_cm3</code></td><td>Return volume as <a href="#float">float</a> value in cm<sup>3</sup></td></tr><tr><td><code>to_m3</code></td><td>Return volume as <a href="#float">float</a> value in mm<sup>3</sup></td></tr><tr><td><code>to_km3</code></td><td>Return volume as <a href="#float">float</a> value in km<sup>3</sup></td></tr><tr><td><code>to_inch3</code></td><td>Return volume as <a href="#float">float</a> value in inch<sup>3</sup></td></tr><tr><td><code>to_feet3</code></td><td>Return volume as <a href="#float">float</a> value in feet<sup>3</sup></td></tr><tr><td><code>to_mile3</code></td><td>Return volume as <a href="#float">float</a> value in mile<sup>3</sup></td></tr><tr><td><code>to_yard3</code></td><td>Return volume as <a href="#float">float</a> value in yard<sup>3</sup></td></tr><tr><td><code>to_fbm</code></td><td>Return volume as <a href="#float">float</a> value in FBM</td></tr></tbody></table>

## MaterialType

An object that represents a material type.

<table><thead><tr><th width="233.8515625">Function</th><th>Description</th></tr></thead><tbody><tr><td><code>is_solid_wood?</code></td><td>Return <code>true</code> if material type is <em>Solid Wood</em></td></tr><tr><td><code>is_sheet_good?</code></td><td>Return <code>true</code> if material type is <em>Sheet Good</em></td></tr><tr><td><code>is_dimensional?</code></td><td>Return <code>true</code> if material type is <em>Dimensional</em></td></tr><tr><td><code>is_hardware?</code></td><td>Return <code>true</code> if material type is <em>Hardware</em></td></tr><tr><td><code>is_edge?</code></td><td>Return <code>true</code> if material type is <em>Edge</em></td></tr><tr><td><code>is_veneer?</code></td><td>Return <code>true</code> if material type is <em>Veneer</em></td></tr><tr><td><code>to_i</code></td><td>Return material type as numeric value (<a href="#integer">Integer</a>)</td></tr></tbody></table>

## Material

An object that represents a material.

<table><thead><tr><th width="233.8515625">Property</th><th>Description</th></tr></thead><tbody><tr><td><code>name</code></td><td>Return the name of the material (<a href="#string">String</a>)</td></tr><tr><td><code>color</code></td><td>Return the color of the material (<a href="#color">Color</a>)</td></tr><tr><td><code>type</code></td><td>Return the type of the material (<a href="#materialtype">MaterialType</a>)</td></tr><tr><td><code>description</code></td><td>Return the description of the material (<a href="#string">String</a>)</td></tr><tr><td><code>url</code></td><td>Return the url of the material (<a href="#string">String</a>)</td></tr><tr><td><code>std_dimension</code></td><td>Return the standard dimension of the material (<a href="#string">String</a>)</td></tr><tr><td><code>std_thickness</code></td><td>Return the standard thickness of the material (<a href="#length">Length</a>)</td></tr><tr><td><code>std_width</code></td><td>Return the width of the material (<a href="#length">Length</a>)</td></tr></tbody></table>

<table><thead><tr><th width="233.8515625">Function</th><th>Description</th></tr></thead><tbody><tr><td><code>any?</code></td><td>Return <code>true</code> if a material is applied</td></tr><tr><td><code>empty?</code></td><td>Return <code>true</code> if material is "no material"</td></tr><tr><td><code>grained?</code></td><td>Return <code>true</code> if material is <em>grained</em></td></tr></tbody></table>

## Edge

An object that represents an edge.

{% hint style="success" %}
Extends all [Material](#material) properties and functions.
{% endhint %}

<table><thead><tr><th width="233.8515625">Property</th><th>Description</th></tr></thead><tbody><tr><td><code>material_name</code></td><td>Alias to <code>name</code></td></tr><tr><td><code>material_color</code></td><td>Alias to <code>color</code></td></tr></tbody></table>

## Veneer

An object that represent a veneer.

{% hint style="success" %}
Extends all [Material](#material) properties and functions.
{% endhint %}

<table><thead><tr><th width="233.8515625">Property</th><th>Description</th></tr></thead><tbody><tr><td><code>material_name</code></td><td>Alias to <code>name</code></td></tr><tr><td><code>material_color</code></td><td>Alias to <code>color</code></td></tr></tbody></table>

## Path

An array of instance names.

{% hint style="success" %}
Extends all [Array](#array) properties and functions.
{% endhint %}

## Batch

<table><thead><tr><th width="233.8515625">Properties</th><th>Description</th></tr></thead><tbody><tr><td><code>position</code></td><td>(<a href="#integer">Integer</a>)</td></tr><tr><td><code>count</code></td><td>(<a href="#integer">Integer</a>)</td></tr></tbody></table>

##


# Outliner

The Outliner tab allows you to visualize and interact with the structure of the 3D model.

{% hint style="danger" %}
This page is currently being written.
{% endhint %}

{% hint style="info" %}
The Outliner was introduced in version 7.0.0.
{% endhint %}

{% embed url="<https://youtu.be/7iXH7ZBH27k>" %}

## Advanced features

### Deep Rename Parts

This feature allows you to **rename** **multiple parts** in a single operation using a Ruby formula that will be applied to each part.

Right-click on the instance from which you want to start the renaming. For example, a group containing multiple parts and select the *Rename Parts...* item.

{% hint style="success" %}
If the instance is part of a selection, all instances in the selection will be taken into account by the function.
{% endhint %}

<figure><img src="/files/9zDTrYm5UCj19UWbwYzJ" alt=""><figcaption></figcaption></figure>

A dialog box will open where you can define the formula that will be applied to all the parts. This [formula](https://docs.opencutlist.org/features/parts/formulas) gives you access to variables that contain the parts' information. Type the `@` character to open the variables list.&#x20;

<div><figure><img src="/files/iXatfbjqbQI19nBhocpj" alt=""><figcaption></figcaption></figure> <figure><img src="/files/CavD8KuT9GnEcWVEJQrG" alt=""><figcaption></figcaption></figure> <figure><img src="/files/yH8ESgBCB9eVp11jvf1j" alt=""><figcaption></figcaption></figure></div>

As you enter your formula, a preview of the modified parts' names will be displayed.\
To confirm the operation, click **Rename**.

{% hint style="success" %}
The system will ensure that component definitions are **unique** in the case of different names at the output.
{% endhint %}

{% hint style="info" %}
Note that a part is not renamed if the formula returns an empty string.
{% endhint %}

#### Example of usages

<div><figure><img src="/files/TQ4BEd11qB2Tsf5i3DG1" alt=""><figcaption><p>Added part size</p></figcaption></figure> <figure><img src="/files/KUJ0XaVGtaegCgeqfuOn" alt=""><figcaption><p>Added instance name</p></figcaption></figure> <figure><img src="/files/dmGff3jrgTvPd0nKYjuz" alt=""><figcaption><p>Added material name</p></figcaption></figure></div>


# Import

Import parts from a comma-separated file into a SketchUp Model.

## File Format

CSV files are simple text files representing columns of identical data with an optional column header. The field separator may be space, comma or semi-colon. The optional column header is the first line of the file.

## Open CSV file

A single file may be selected for import. If you want to import multiple files at once, you must merge them before importing them. This is because not all files may have the same structure.

After selecting the file, you must match the columns to the mandatory fields, which are **Designation**, **Length**, **Width** and **Thickness**. Without additional fields, a quantity of 1 is assumed.

{% hint style="warning" %}
Without unit, all dimensions are considered to be in model units. **OpenCutList** will display the unit it is using.
{% endhint %}

**Quantity**, **Material** and **Tags** are optional fields.

**OpenCutList** can only import the parts when all required columns are green.&#x20;

## Import Into Model

Once you have selected all required columns, importing can be completed by

* removing all existing parts in the model and replace them with the new ones. In doing so, you may select to keep definitions (components) and material settings or remove them.
* adding parts to the existing ones.

In both case, the imported parts will be placed into a group to make it easy to select them and move them to an appropriate location.


# Smart Draw Tool

The Smart Draw tool makes drawing parts very easy.

{% hint style="info" %}
Smart Draw Tool was introduced in version 7.0.0.
{% endhint %}

## Actions

### Draw Rectangle

Draw a volume based on a rectangular shape.

<figure><img src="/files/R0TUR0qf02zMigc3O8bW" alt="" width="360"><figcaption><p>Draw Rectangle</p></figcaption></figure>

Using this tool is performed in several steps:

1. Click to define the first corner \
   ↳ Hit ←, ↑ or → to lock perpendicular along the <mark style="color:green;">Green</mark>, <mark style="color:blue;">Blue</mark> or <mark style="color:red;">Red</mark> axis. The rectangle will then be perpendicular to the locked axis.\
   ↳ Press `CTRL` (on Windows)  or `OPTION` (on Mac) to toggle **Center on targeted face**\
   ↳ Hit `ALT` (on Windows)  or `COMMAND` (on Mac) to toggle **Measure relative to the nearest vertex**
2. Click to define the opposite corner or [enter measure](#entering-measurement)\
   ↳ Hit `CTRL` (on Windows)  or `OPTION` (on Mac) to toggle **Rectangle Centered**
3. Click to set the elevation or [enter measure](#entering-measurement)

   ↳ Press `SHIFT` to lock the elevation to the last used value\
   ↳ Hit `CTRL` (on Windows)  or `OPTION` (on Mac) to toggle **Elevation Centered**
4. The drawing is now complete and the tool is ready to start again. But first, you can still change the elevation value by entering a new measure.

{% hint style="info" %}
At any time, you can :

* Hit `SHIFT` + `X` to toggle **Construction Lines**
* Type `10x` to set the Offset to 10 or `-5x` to set the Offset to -5
  {% endhint %}

#### Options

* **Offset**: Apply an offset to the shape line
* **Construction Lines**: Draw as construction lines
* **Rectangle Centered**: Center rectangle on the first point
* **Elevation Centered**: Center elevation on the first point
* **Parts naming**: Enter part names manually

### Draw Circle

Draw a volume based on a circular shape.

<figure><img src="/files/sWQsoXaUJP5lOdaCux7H" alt="" width="360"><figcaption><p>Draw Circle</p></figcaption></figure>

Using this tool is performed in several steps:

1. Click to define the center\
   ↳ Hit ←, ↑ or → to lock perpendicular along the <mark style="color:green;">Green</mark>, <mark style="color:blue;">Blue</mark> or <mark style="color:red;">Red</mark> axis\
   ↳ Press `CTRL` (on Windows)  or `OPTION` (on Mac) to toggle **Center on targeted face**\
   ↳ Hit `ALT` (on Windows)  or `COMMAND` (on Mac) to toggle **Measure relative to the nearest vertex**
2. Click to define the radius or diameter or [enter measure](#entering-measurement)\
   ↳ Press `SHIFT` to lock the radius to the previously used value\
   ↳ Hit `CTRL` (on Windows)  or `OPTION` (on Mac) to toggle **Measure** from radius or diameter
3. Click to set the elevation or [enter measure](#entering-measurement)\
   ↳ Press `SHIFT` to lock the elevation to the previously used value\
   ↳ Hit `CTRL` (on Windows)  or `OPTION` (on Mac) to toggle **Elevation Centered**
4. The drawing is now complete and the tool is ready to start again. But first, you can still change the elevation value by entering a new measure.

{% hint style="info" %}
At any time, you can :

* Hit `SHIFT` + `X` to toggle **Construction Lines**
* Type `10x` to set the Offset to 10 or `-5x` to set the Offset to -5
  {% endhint %}

#### Options

* **Offset**: Apply an offset to the shape line
* **Number of Segments**: Define the number of segments in the circle
* **Construction Lines**: Draw as construction lines
* **Smoothing**: Smooth curves
* **Measure**: Measure circle by its diameter
* **Elevation Centered**: Center elevation on the first point
* **Parts naming**: Enter part names manually

### Draw Polygon

Draw a volume on a polygonal shape.

<figure><img src="/files/DGj1JJgZ8GBbvM46mtpU" alt="" width="360"><figcaption></figcaption></figure>

Using this tool is performed in several steps:

1. Click to define the first point\
   ↳ Hit ←, ↑ or → to lock perpendicular along the <mark style="color:green;">Green</mark>, <mark style="color:blue;">Blue</mark> or <mark style="color:red;">Red</mark> axis\
   ↳ Press `CTRL` (on Windows)  or `OPTION` (on Mac) to toggle **Center on targeted face**\
   ↳ Hit `ALT` (on Windows)  or `COMMAND` (on Mac) to toggle **Measure relative to the nearest vertex**
2. Click to set more points, as many as you want or [enter measure](#entering-measurement) from previous point\
   ↳ Hit ←, ↑ or → to lock along <mark style="color:green;">Green</mark>, <mark style="color:blue;">Blue</mark> or <mark style="color:red;">Red</mark> axis from previous point \
   ↳ Hit `CTRL` (on Windows)  or `OPTION` (on Mac) to toggle **Inverted Measure**
3. Click on a point already added to validate the 2D shape
4. Click to set the elevation or [enter measure](#entering-measurement)\
   ↳ Press `SHIFT` to lock the elevation to the previously used value\
   ↳ Hit `CTRL` (on Windows)  or `OPTION` (on Mac) to toggle **Elevation Centered**
5. The drawing is now complete and the tool is ready to start again. But first, you can still change the elevation value by entering a new measure.

{% hint style="info" %}
At any time, you can :

* Hit `SHIFT` + `X` to toggle **Construction Lines**
* Type `10x` to set the Offset to 10 or `-5x` to set then Offset to -5
  {% endhint %}

#### Options

* **Offset**: Apply an offset to the shape line
* **Construction Lines**: Draw as construction lines
* **Inverted Measure**: Reverse the measurement
* **Elevation Centered**: Center elevation on the first point
* **Parts naming**: Enter part names manually

### Shortcuts

* Use `TAB` or `SHIFT` + `TAB` to navigate forward or backward through actions, respectively.
* Use `CTRL` + `TAB` (Windows) or `OPTION` + `TAB` (Mac) to navigate through the first action's modifier.

## Entering Measurement

Entering measurements in OpenCutList follows the basic principles of SketchUp's native tools via the VCB field.\
However, a few useful features have been added.

* `@` allows you to compute a simple operation using the value pointed to by the mouse
* `+` `-` `*` `/` and `(` `)` allows you to compute arithmetic operations
* `=` allows you to duplicate previous value
* `<` `>` allows to enter absolute coordinate

{% hint style="danger" %}
Note that list delimiter is **;** (semicolon) instead of , (comma) if your system decimal separator is **,** (comma).
{% endhint %}

#### Examples

* `@+10` adds 10 of current model length unit to the mouse value
* `@-12mm` subtracts 12 mm to the mouse value
* `-12mm` is converted to 12 mm but by reversing the direction
* `@*3` multiplies the mouse value by 3
* `@/2` divides the mouse value by 2
* `10,20` defines a pair of value <mark style="color:red;">v1</mark> = 10, <mark style="color:green;">v2</mark> = 20&#x20;
* `100mm=` is equivalent to `100mm, 100mm`
* `50==` is equivalent to `50, 50, 50`
* `10=,@-30` is equivalent to `10, 10, @-30`
* `,-10` is equivalent to `@, -10`
* `100+50/2` is equivalent to `125`
* `<10,20,30>` set an absolute coordinate at <mark style="color:red;">x</mark>=10, <mark style="color:green;">y</mark>=20, <mark style="color:blue;">z</mark>=30


# Smart Handle Tool

The Smart Handle tool makes copying or moving parts very easy.

{% hint style="info" %}
Smart Handle Tool was introduced in version 7.0.0.
{% endhint %}

## Actions

### Select

This action allows you to select a part.

<figure><img src="/files/UkX7EclJYyGYmDWaDVWs" alt="" width="360"><figcaption></figcaption></figure>

### Copy in line

This action allows you to copy a part along an axis.

<figure><img src="/files/sC7FjI2t5yWJKyVvVDU9" alt="" width="360"><figcaption></figcaption></figure>

Using this tool is performed in 4 steps :&#x20;

1. Click on a part to set it as active
2. Move the mouse along the axis you need to copy

   *↳ Hit ←, ↑ or → to lock along <mark style="color:green;">Green</mark>, <mark style="color:blue;">Blue</mark> or <mark style="color:red;">Red</mark> axis*\
   ↳ Hit `ALT` (on Windows)  or  `COMMAND` (on Mac) to toggle mirroring
3. Click to validate the copy or [enter measure](/features/smart-draw-tool#entering-measurement)
4. (facultative) Type multiplier or divider\
   *↳ Type `*3` for repeating copy*\
   *↳ Type `/3` for dividing move into 3 spaces*

#### Options

* **Measure**:&#x20;
  * External measurement
  * Central measurement
  * Measurement taken between parts
* **Axes**:  Manipulate along the axes of the group or component containing the part
* **Mirror**: Symmetrical copying

### Copy in grid

This action allows you to copy a part in a grid along a plane.

<figure><img src="/files/L737fpCJrjJhBQf82KuD" alt="" width="360"><figcaption><p>Copy in grid</p></figcaption></figure>

Using this tool is performed in 4 steps :&#x20;

1. Click on a part to set it as active
2. Move the mouse along the plane you need to copy

   ↳ Hit ←, ↑ or → to lock along <mark style="color:green;">Green</mark>, <mark style="color:blue;">Blue</mark> or <mark style="color:red;">Red</mark> plane \
   ↳ Hit `ALT` (on Windows)  or  `COMMAND` (on Mac) to toggle mirroring
3. Click to validate the copy or [enter measure](/features/smart-draw-tool#entering-measurement)
4. (facultative) Type multipliers or dividers\
   *↳ Type `*3,*2` for repeating copy 3 times along <mark style="color:red;">red</mark>, 2 times along <mark style="color:green;">green</mark>*

#### Options

* **Measure**:&#x20;
  * External measurement
  * Central measurement
  * Measurement taken between parts
* **Axes**: &#x20;
  * Manipulate along active axes
  * Manipulate along the axes of the group or component containing the part
  * Manipulate along part axes
* **Mirror**: Symmetrical copying

### Move

This action allows you to move a part along an axis.

<figure><img src="/files/nhugHW0q02VRHPNVToey" alt="" width="360"><figcaption></figcaption></figure>

Using this tool is performed in 3 steps :&#x20;

1. Click on a part to set it as active
2. Move the mouse along the direction you need to move\
   *↳ Hit ←, ↑ or → to lock along <mark style="color:green;">Green</mark>, <mark style="color:blue;">Blue</mark> or <mark style="color:red;">Red</mark> axis*
3. Click to validate the move or [enter measure](/features/smart-draw-tool#entering-measurement)

#### Options

* **Measure**:&#x20;
  * External measurement
  * Central measurement
  * Internal measurement
* **Axes**: &#x20;
  * Manipulate along active axes
  * Manipulate along the axes of the group or component containing the part
  * Manipulate along part axes

### Distribute

This action allows you to distribute a part along an axis.

<figure><img src="/files/aLByQEC01Zryp6xrWaQ4" alt="" width="360"><figcaption></figcaption></figure>

Using this tool is performed in 4 steps :&#x20;

1. Click on a part to set it as active
2. Click on a first point corresponding to the start of the distribution axis
3. Click on a second point corresponding to the end of the distribution axis or [enter measure](/features/smart-draw-tool#entering-measurement)
4. (optional) Type the copy multiplier or the space divider

   *↳ Type `*3` for 3 copies or `/4` for 4 spaces, for example*

#### Options

* **Axes**: &#x20;
  * Manipulate along active axes
  * Manipulate along the axes of the group or component containing the part
  * Manipulate along part axes

### Shortcuts

* Use `TAB` or `SHIFT` + `TAB` to navigate forward or backward through actions, respectively.
* Use `CTRL` + `TAB` (on Windows) or `OPTION` + `TAB` (on Mac) to navigate through the first action's modifier.


# Smart Paint Tool

The Smart Paint tool makes it very easy to assign materials to parts.

{% hint style="info" %}
A new version of the Smart Paint Tool was introduced in version 5.0.0.
{% endhint %}

The **SmartPaint** tool allows to manage the materials of parts, as well as their faces or edges, without having to enter the tree of instances.

It is accessible from the paint bucket icon of the toolbox or from the *OpenCutList → Paint* *Parts* menu.

<figure><img src="/files/jsgrLZMKoN3SXxWy5K2v" alt="" width="563"><figcaption><p>Smart Paint Tool Access from the Menu and the Toolbox</p></figcaption></figure>

<figure><img src="/files/acwO9QEBBa3CbEENc4j5" alt=""><figcaption><p>Smart Paint Tool User Interface</p></figcaption></figure>

## Actions

The Smart Paint tool allows for the following actions (visible at the top of the OpenCutList screen):

### Paint Parts

A material can be applied to a single instance of a component (`1`) or to all components with the same definition (`∞`). This excludes Edge Banding and Veneer.

### Paint Edges

Edge Banding can be applied to the edges of a part, which generally constitute its 4 smaller faces. It can be applied to `1` edge, `2` opposite edges, or all `4` edges.

### Paint Faces

Veneer can be applied to the faces of a part, which generally constitute its 2 largest faces. It can be applied to `1` or `2` faces.

### Sample

By clicking on an area with the **Sample** Tool, the underlying material and associated tool will be selected. If you sample Edge Banding,  the Paint Edges tool will be selected.

### Clean

**Clean** will remove all material information from a part. If you only want to remove Edge Banding, apply **No material** to the edges instead.

Cleaning affects all drawing faces of the definition and all instances using the definition.

### Shortcuts

* Use `TAB`or `SHIFT` + `TAB` to navigate forward or backward through action, respectively.
* Use `CTRL` + `TAB` (on Windows) or `OPTION` + `TAB` (on Mac) to navigate through the action's modifier.

## Material picker

At the bottom of the screen, you can find the Material picker, which allows you to select the current material to use.

On the left side of this picker, a "`+`" button creates a new material.

On the right side, a "funnel" button permits to filter materials by type.

### Shortcuts

* Use the `←` and `→` keys to navigate through materials.
* Use the `+` key to open the new material form.
* `Double click` on a material's button to edit the material's properties.


# Smart Axes Tool

The Smart Axes Tool helps you orient the local axes of components.

{% hint style="info" %}
The Smart Axes Tool was introduced in version 5.0.0.
{% endhint %}

It is accessible from the axes icon in the toolbox or from the *OpenCutList → Orient* *Parts* menu.

<figure><img src="/files/84TZVCklPi7yBVe9MpwR" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="/files/7Gf7vYqJq2XC8kwl7h1G" alt=""><figcaption></figcaption></figure>

**OpenCutList** computes the **dimensions** of a part along the **local axes** of the underlying component. They are defined as the lengths of the (blue) bounding box of the part. For a good computation of the dimensions, the bounding box of a part should therefore preferably closely surround it.

The dimensions of a part do not depend on the position of the local axes (the axes can be translated), but do depend on their spatial orientation.

The default set of local axes is [right-handed](https://en.wikipedia.org/wiki/Right-hand_rule). When the set of axes is placed on a vertex of the bounding box, the blue axis shows the direction of the thickness of a part. It does not matter whether the blue axis points in or out of the part, but the face which is the **most positive** along the blue axis will be considered the **front face** of the part, and the opposite face the **back face**.

{% hint style="warning" %}
Some of these assumptions are deliberate choices. We could have made other choices, but these seemed to be the most convenient to understand.
{% endhint %}

If you flip the local axes in such a way that the most positive face is the opposite face, then you have told **OpenCutList** that the other side is now the front face. Remember, changing the local axes does not affect the definition of the part, but only its reading by **OpenCutList**.

## Actions

The Smart Axes Tool supports several actions (Flip, Swap Length ↔ Width, Swap Front ↔ Backside, Adapt Axes, Move Origin). Each action can have several modifiers. All possible actions are visible at the top of the screen.

### Flip

The **Flip action** is more convenient than the SketchUp tool, because it automatically detects parts under the mouse pointer and lets you decide along which direction (as seen by OpenCutList) a part must be flipped. This can be `L` for length, `W` for width or `T` for thickness. Also, you do not have to select the part to flip it.

{% hint style="warning" %}
Flipping only affects the selected instance.
{% endhint %}

<figure><img src="/files/KuxNTn4BDvjIJY3V7nqP" alt=""><figcaption><p>Flip</p></figcaption></figure>

### Swap Length ↔ Width

This tool orients the local axes in such a way that length and width (the red and green axes, respectively), as seen by OpenCutList, are swapped.

{% hint style="warning" %}
Swapping length and width affects all instances. It operates on the component definition.
{% endhint %}

<figure><img src="/files/U77RpVk2rTPqmIitheQR" alt=""><figcaption><p>Swap Length - Width</p></figcaption></figure>

### Swap Front ↔ Backside

This tool orients the local axes in such a way that the thickness (on the blue axis) is swapped. This reverses the blue axis, and (because the set of axes must remain right-handed) also the green axis. By convention, the front face is the face with the most positive coordinate on the blue axis.

{% hint style="warning" %}
Swapping Front - Backside affects all instances.
{% endhint %}

<figure><img src="/files/B4WtsZC7BorhfUjVsDJF" alt=""><figcaption><p>Swap Front - Backside</p></figcaption></figure>

### Adapt Axes

For an even finer control, this tool lets you pick the front of a part. It will then adapt the axes to match length and width. The thickness is automatically the last direction. When moving the mouse over a part, a white arrow shows the current front and the direction of the length.

The arrow shows the direction of the old and new red (length) axis.\
Hover a face and an edge displays the future setting, click to confirm.&#x20;

{% hint style="warning" %}
Adapt Axes affects all instances.
{% endhint %}

<figure><img src="/files/jLpf2xz8b7GeC0M3YNju" alt=""><figcaption><p>Adapt Axes Tool</p></figcaption></figure>

The modified part is automatically the one under the mouse pointer.\
To align the axes to an element outside the part, simply hover over it, press the `SHIFT` key, and point to any segment, axis, or guide in the model that would be parallel to the targeted face when you started pressing `SHIFT`.

### Move Origin

This action allows you to move the part component axes origin.

{% hint style="warning" %}
Move Origin affects all instances.
{% endhint %}

<figure><img src="/files/vVUfmG8oKgpAljh1eaHf" alt="" width="360"><figcaption><p>Move Origin</p></figcaption></figure>

The modified part is automatically the one under the mouse pointer.\
To place the origin outside the part, simply hover over it, press the `SHIFT` key, and click on any point in the model.

### Shortcuts

* Use `TAB` or `SHIFT` + `TAB` to navigate forward or backward through actions, respectively.
* Use `CTRL` + `TAB` (on Windows) or `OPTION` + `TAB` (on Mac) to navigate through the action's modifier.


# Smart Export Tool

The Smart Export Tool helps you export the geometry of 3D or 2D parts.

{% hint style="info" %}
The Smart Axes Tool was introduced in version 6.0.0.
{% endhint %}

It is accessible from the export icon in the toolbox or the *OpenCutList → Export* *Parts* menu.

<figure><img src="/files/ZqVxV9qAsiZuL5Pvqyuy" alt="" width="563"><figcaption></figcaption></figure>

This tool is a concentrate of magical things. We have developed it with the aim of covering a maximum  of needs with a minimum of user actions, while at the same time providing a real-time preview in the 3D model of what will be exported.

To achieve this, this tool focuses on exporting the 3D or 2D geometry of a single element through 3 types of action.

## Actions

Smart Export Tool supports these actions: Export 3D part, Export 2D part, and Export face. Each action has several options. All possible actions are visible at the top of the screen.

### Export 3D Part

The **Export 3D part** action allows you to export the 3D [polygon mesh](https://en.wikipedia.org/wiki/Polygon_mesh) geometry of a single part as an **STL** or **OBJ** file.

<figure><img src="/files/LXqEfch9g0OeXkkbYzL3" alt="" width="563"><figcaption></figcaption></figure>

Once this action is activated, just point and click on a part in the model to export it.

{% hint style="info" %}
A part is a SketchUp **component** instance with a <mark style="color:red;">**non-zero volume**</mark>.
{% endhint %}

#### Supported Formats

The 3D geometry can be exported to files with the following formats:

* **STL** : [Stereolitography](https://en.wikipedia.org/wiki/STL_\(file_format\))&#x20;
* **OBJ** : [Wavefront OBJ](https://en.wikipedia.org/wiki/Wavefront_.obj_file)

#### Export Options

* **Unit** : Defines the unit used in the exported file.
* **Anchor Point** : This options preserves the location of the origin of the coordinate axes of the SketchUp component of this part in the exported file (Project the part's origin). Otherwise, the smallest coordinate of the bounding box is used as location of the origin of the coordinate axes (Default).

{% hint style="success" %}
Click on the *More* button at the top of the screen to access all options and use presets.
{% endhint %}

<figure><img src="/files/yIb5MqMAAWiooVqhMMV4" alt="" width="563"><figcaption></figcaption></figure>

### Export 2D Part

The **Export 2D part** action allows you to export a 2D projection of a part as an **SVG** or **DXF** file. Note that it is more powerful than just a face exporter.

<figure><img src="/files/7ozh3wl6Ri0lr2Y1EphX" alt="" width="563"><figcaption></figcaption></figure>

Once this action is activated, just point and click on a drawing face of a part in the model to export the **2D projection** along the plane of this face. This allows you to quickly choose the projection plane according to which you wish to export the part. You can also point at an edge to align the <mark style="color:red;">red</mark> axis (x).

<figure><img src="/files/b0wTWZ23WnmVElD3Dxxz" alt=""><figcaption></figcaption></figure>

The projection algorithm slices the 3D geometry in several coplanar layers.&#x20;

Along the projection direction, the top most face determines the depth zero layer. All other layers are calculated in relation to this one.

If a face is curved (a smooth surface) or not coplanar to the projection plane, the projection of the face will  flatten up that face to its top most point. In the Figure below, two such faces are shown as horizontal blue rectangles. Coplanar faces will be merged.

<figure><img src="/files/LxjlNCjTiVx6fjoxrM3N" alt="" width="375"><figcaption></figcaption></figure>

The tool displays a preview of the exported layer in the 3D model.&#x20;

The projection plane is shown as a black dashed rectangle, and each layer is represented by a blue line. The dark blue lines correspond to the zero depth layer, and the light blue lines correspond to the other layers.

Hidden faces or hidden portions of faces are ignored.

<figure><img src="/files/WaSWn8SURugxY3afG7SE" alt="" width="375"><figcaption></figcaption></figure>

#### Supported Formats

The 2D projection can be exported to files in the following formats:

* **SVG** : [Scalable Vector Graphics](https://en.wikipedia.org/wiki/SVG)
* **DXF** : [AutoCAD DXF](https://en.wikipedia.org/wiki/AutoCAD_DXF)

#### Face Projections

This option determines which faces should be included in the export. The target face is the face that gets the click.

* **1** : Use only the target face.
* **∞** : Use all parallel faces of the part.

#### Export Options

* **Unit** : Defines the unit used in the exported file.
* **Anchor point** : This options preserves the location of the coordinate axes of the SketchUp component of this part in the exported file (Project the part's origin). Otherwise the smallest coordinate of the bounding box is used as location of the origin of the coordinate axes (Default).
* **Smoothing** : Smooth circles and arcs. [*Learn more*](#smoothing)*.*
* **Merging Mode** : [Learn more](#merging-mode)
  * *Default* : The part shape is exported with one layer per depth.
  * *Outline + Drillings + Merge* : Activates the separation of the outer contour of parts from their holes, as well as the merging of depths for each cavity.
* **Paths** : Enables the use of edges, which are not associated with a face contained in the part, to export them as a path. [Learn mode](#paths).
* **Parts colors** : Customize the line and fill *(SVG only)* colors of exported parts.
* **Drillings colors** : Customize the line and fill *(SVG only)* colors of exported part's drillings.
* **Paths colors** : Customize the line color of exported paths.

{% hint style="success" %}
Click on the *More* button at the top of the screen to have access to all options and to be able to use presets.
{% endhint %}

<figure><img src="/files/V4qjRcNlSKokmP04Yax8" alt="" width="563"><figcaption></figcaption></figure>

### Export Face

The **Export face** action allows you to export a 2D projection of a drawing face to a **SVG** or **DXF** file.

<figure><img src="/files/GnsD7fWuh8PReq0dkag5" alt="" width="563"><figcaption></figcaption></figure>

Once this action is activated, simply point and click on a face drawn in the model to export it.

{% hint style="success" %}
This face can be drawn outside of a group or component, but there are less options than with Export 2D part.
{% endhint %}

#### Supported Formats

* **SVG** : [Scalable Vector Graphics](https://en.wikipedia.org/wiki/SVG)
* **DXF** : [AutoCAD DXF](https://en.wikipedia.org/wiki/AutoCAD_DXF)

#### Export Options

* **Unit** : Defines the unit used in the exported file.
* **Smoothing** : Smooth circles and arcs. [*Learn more*](#smoothing).
* **Parts colors** : Customize the line and fill *(SVG only)* colors of exported faces.

{% hint style="success" %}
Click on the *More* button at the top of the screen to have access to all options and to be able to use presets.
{% endhint %}

<figure><img src="/files/KrdAaHzrcV0pnOWt9XSH" alt="" width="563"><figcaption></figcaption></figure>

### Shortcuts

* use `TAB` (left to right) or `SHIFT` + `TAB` (right to left) to navigate through actions.
* use `CTRL` + `TAB` (Windows) or `OPTION` + `TAB` (Mac) to navigate through action's modifier.

## Advanced Options

### Smoothing

To overcome SketchUp's technical limitations in terms of circles and arcs, we have developed a curve detection algorithm.

This algorithm is able to detect **circles**, **ellipses** and **arcs** from the contour of a face or a curve. Circles need not to be known to SketchUp.&#x20;

Once this option is activated, the detected portions are emphasized with a **bolder line**.

<figure><img src="/files/bQ8I8ZTXPu4W0bN74F8U" alt="" width="563"><figcaption><p>Part with 2 Detected Circles/Arcs</p></figcaption></figure>

{% hint style="warning" %}

### Limitations

* Only **circle**, **ellipse** and **arcs** of circle or ellipse are detected.
* Arc portions with less than **6 edges** cannot be detected.
* The minimum angle formed by the two ends of an edge is **45 degrees**.
  {% endhint %}

### Merging Mode

By default the 2D projection algorithm slices the 3D geometry in layers that contain only projected faces that correspond to their depth.

By enabling *Outline + Drillings + Merge,* the algorithm will go further :&#x20;

* **Through holes** will be detected. They are drawn with a purple line in preview.
* Depth zero layer now contains the full merged **outline** of the part, without any holes.
* Sub layers are merged by cavity.

<div><figure><img src="/files/vfQfmSMoH7tmnxdKLh8f" alt="" width="563"><figcaption><p>Merging Mode = Default</p></figcaption></figure> <figure><img src="/files/hx8pmXbMgBtcES6NLXDJ" alt="" width="563"><figcaption><p>Merging Mode = Outline + Drillings + Merge</p></figcaption></figure></div>

Let us consider a more advanced example:

<figure><img src="/files/fo5BKhTSUUcsrweO5v8D" alt="" width="563"><figcaption><p>Merging Mode = Outline + Drillings + Merge</p></figcaption></figure>

### Paths

In addition to exporting faces, you can now export **open** or **closed paths**. These paths could be useful for exporting non-geometric elements integrated into the part without altering its dimensions.

A **path** is a curve or a single edge that is not associated with a face.&#x20;

{% hint style="warning" %}
The path must be drawn **inside** a part component.
{% endhint %}

<div><figure><img src="/files/SkJnfDU1M2FZtB7Tsg2i" alt="" width="563"><figcaption><p>Preview</p></figcaption></figure> <figure><img src="/files/xTMA8xQyNShJQrGoVuMX" alt="" width="563"><figcaption><p>Exported result</p></figcaption></figure></div>

The best option to embed paths into a part geometry is to draw them in subgroups.

<figure><img src="/files/zuqNX30fVHKZzSXyqMcv" alt="" width="563"><figcaption></figcaption></figure>

{% hint style="warning" %}
To ensure that continuous paths are not split into multiple edges, weld the edges together to convert them into SketchUp curves.
{% endhint %}


# More

More displays a list of useful links.

The links in **More** are explained in the section about the [interface](/getting-started/installing/toolbar). There are more links in the French version, pointing to sites in French.


# Coffee Table

In this section we will use a simple model of a piece of furniture, a small coffee table, to explain the basics of OpenCutList.

## Drawing the Model

To get you started, an initial model is available here [table\_2017.skp](https://github.com/lairdubois/lairdubois-opencutlist-sketchup-extension/blob/master/docs/skp/table_2017.skp) (in SketchUp 2017 format). This model has all the necessary material already configured.

{% hint style="warning" %}
This model is **metric**. Sorry, next model will be in imperial units.
{% endhint %}

The model represents a small coffee table with the legs, aprons and a frame made from solid wood. The table top is made from birch plywood.

For convenience, the legs and aprons have been grouped. The frame and the top insert are also grouped inside of a SketchUp group.

## Exploring the Parts List

The top of the [**Parts List**](/features/parts/parts-list) shows a summary of all groups of material **OpenCutList** found in the model. The icon in the **Type** column tells you what type of material it is. Refer to [**Materials** ](/features/applying-materials)to learn about the different types of materials.

**OpenCutList** uses native SketchUp material to link parts to available raw material. Extending the attributes of the SketchUp material has many advantages over simply using naming conventions.

### Groups in the Parts List

Lets have a look at the different groups.

1. **solid-wood / 45**: the solid wood is available in several thicknesses. With the oversize thickness, configured on the material, the 45 mm thickness is the closest match for the legs. The legs are components with 4 named instances, as you can see in the Entity Info.
2. **solid-wood / 27**: the aprons and the table top frame are made from 22 mm and 19 mm, for which the 27 mm has been selected. Note that the grain in solid wood always follows the length of the part.
3. **plywood / 19**: this is a sheet goods product available in some standard sizes. This material has a grain direction, which always runs along the length, that is the first dimension of the panel.

{% hint style="warning" %}
Make sure the thickness oversize for Solid wood (rough sawn) is large enough to account for warped and/or cupped boards.
{% endhint %}

You can view and edit many properties of the parts using the pencil tool. To find where a part might be in the model, you can use the magnifier tool and enable temporary transparency of the model in case the part is hidden. The arrow indicates the direction of the length (the red local axis of your component). If the arrow line is dashed, it means you are looking at the back of the part. By convention, the surface that has a most negative blue axis value is the back face, while the surface that has the most positive blue axis value is the front side of a part.

### Filtering the Parts List

When a subset of visible parts are selected in the scene, only those parts will be displayed in the Parts List. This behaviour allows you to restrict the Parts List to a single part, a group of parts or all visible parts in the scene.&#x20;

{% hint style="success" %}
When nothing is selected in the scene, all visible parts of the current scene will be displayed in the **Parts List**.
{% endhint %}

We have added a tag ***top*** to all parts that form the table top. Going all the way to the top of the Parts List, beyond Summary, you may filter visible parts of your model by using this tag. Parts can have multiple tags. You can also click on a tag in the Parts List to filter the list or remove that particular tag from the filter.

### Cutting Diagrams&#x20;

Next to the title of groups of type Sheet Good, and Dimensional, you will notice a button to generate [**Cutting Diagrams**](/features/parts/parts-list/cutting-diagrams).&#x20;

In this case, we have also configured an offcut of 500 mm x 500 mm, we had left in the shop. Despite the configured standard panel, this offcut will be used for the top insert.

For cutting diagram, you need to configure a standard panel or offcuts. Only a single standard panel can be selected, but you may add as many offcuts as you have on hands.

The thickness of the saw blade and a trimming size applied around the panel can also be configured. The trimming size reduces the effective size of the panel to account for any handling damages and rough edges of the panel.

With the **Optimization Level**, you tell **OpenCutList** how many variants it should calculate before selecting the best one. You can also configure a **Preferred Direction** for the alignment of the parts. This preference is just a hint and the final cutting diagram may look differently if **OpenCutList** found a better variant by stacking the parts differently.

### Adhesive Labels&#x20;

You may generate labels to be printed for any group of material. Our label editor lets you [**configure labels**](/features/parts/parts-list/printing-labels) for any grid-shaped label format and save your personal formats for future use.

### Reports

A report containing a summary of costs and weights can be generated.&#x20;

For the material type Solid Wood, you can enter a waste ratio, a factor telling **OpenCutList** to increase the volume of wood you will need to buy to account for any defects in the wood, mistakes you may make or any good reason to buy a little more lumber than the projects eventually requires.

{% hint style="warning" %}
Pricing may be unrealistic if you just use a small fraction of a panel or only a small number of parts that can only be bought in larger packages (dowels, Dominos or Clamex).&#x20;
{% endhint %}

For Sheet goods, we assume that you need to buy at least one entire panel unless you use offcuts. If you have some offcuts, indicate the price per square meter in the attributes of the material.


# Tutorials on YouTube

Users of OpenCutList have published tutorials on YouTube.

A non-exhaustive list of YouTube tutorials is provided under the menu **More** of **OpenCutList**. The videos in your language will be listed first.&#x20;

We do not actively track videos on YouTube, please send us an email if you have published a video and would like to have it listed in the extension.


# OpenCutList to Shaper Origin

This page describes how to use OpenCutList to export SVGs for Shaper Origin.

## Context

[Shaper Origin](https://www.shapertools.com/) is a handheld precision router that supports SVG file as input for tool paths.

Since [version 6.0.0](/whats-new/in-version-6.0), OpenCutList could be a good companion for this machine, offering the ability to quickly export a part's geometry to SVG.

## Getting Started

First of all you need to have [SketchUp Make 2017](https://www.lairdubois.fr/questions/reponses/27620) or [SketchUp Pro](https://www.sketchup.com/download/all) installed on your computer. Then read the [Installing](/getting-started/installing) page to find out how to install OpenCutList.

{% hint style="warning" %}
We assume that the reader is familiar with SketchUp.
{% endhint %}

If you want to learn more about OpenCutList and the context of this Open Source project, check [this page](/opencutlist).

## Exporting to SVG

OpenCutList offers multiples ways of exporting SketchUp drawings to SVG file. Each of these is fully customizable.

### From Part (Component) to SVG

First, draw your project in the 3D model and create one component per part.

{% hint style="info" %}
OpenCutList considers all component instances with a non-zero volume as a part. Therefore make sure that all parts of your project are components and not a group. [Learn more](/getting-started/components).
{% endhint %}

For the rest, we will use this toolbox as an example.

<figure><img src="/files/uMNJ3FZrLP7k0viTbqeK" alt="" width="563"><figcaption></figcaption></figure>

The easiest way to export parts shape is to use the [Smart Export Tool](/features/smart-export-tool).

Activate the tool and select the **Export 2D part** action and **SVG** file format.

<figure><img src="/files/7YXaI8ExATbIwDZ4Aalf" alt="" width="563"><figcaption></figcaption></figure>

Click on the **More** button and configure colors according to the Origin [Cut Type encoding](https://support.shapertools.com/hc/en-us/articles/115002721473-Cut-Type-Encoding):

* *Parts* : Line color = none, Fill color = black
* *Drillings* : Line color = black, Fill color = white
* *Paths* : Line color = blue

<figure><img src="/files/Y2ngXaWE99JmzECr49Mq" alt="" width="563"><figcaption></figcaption></figure>

You can now move the mouse over the face of each part you wish to export as a 2D SVG. As you can see below, a blue line wireframe preview of the part drawing projection is drawn in real time.

<figure><img src="/files/Mi4WaOqd7DY2XxCZRbB6" alt="" width="540"><figcaption></figcaption></figure>

This tool is more than just a face exporter. It offers several useful options:

* **Anchor point** : This option preserves the location of the coordinate axes of the SketchUp component of the part in the exported file (*Project the part's origin)*. Otherwise the smallest coordinate of the bounding box is used as location of the origin of the coordinate axes (*Default*). This option is fully compatible with [Origin custom anchor](https://support.shapertools.com/hc/en-us/articles/4402965445019-Custom-Anchors) (the little red triangle).
* **Smoothing** : Smooth circles and arcs ! [Learn more](/features/smart-export-tool#smoothing)*.*
* **Merging Mode** : [Learn more](/features/smart-export-tool#merging-mode)
  * *Default* : The part shape is exported with a single layer per depth.
  * *Outline + Drillings + Merge* : Activates the separation of the outer contour of parts from their holes, as well as the merging of depths for each cavity.
* **Paths** : Allow edges not associated with a face in the part to be exported as a path. [Learn more](/features/smart-export-tool#paths).

Each of these four options can be configured from the tool shortcut bar or from the full configuration panel. The selected configuration is stored and will be retained even if you close SketchUp. You can also create [Presets](/getting-started/installing/presets).

In this use case, we will set **Anchor point** to *Default*, **Smoothing** to *Smooth circles and arcs*, **Merge mode** to *Outline + Drilling + Merge* and **Paths** to *Use edges not associated with a face*.

To export a single part, simply point and click on the face that will be under the Origin during machining, select a folder and enter the file name, then click on the *Save button*. That's all there is to it! Your first SVG is ready.

<figure><img src="/files/X24TtS9iVXEfCk3fXJM8" alt="" width="563"><figcaption><p>Example of exported handle</p></figcaption></figure>

If you take a look at the generated SVG you can see that the [encoded depth](https://support.shapertools.com/hc/en-us/articles/10400926390683-Encoded-depth) has been automatically extracted from the 3D model. In addition, you can see that the entire part drawing is encapsulated in a group called *OCL\_PART*. And each path is named according to its cutting depth. This naming is compatible with [Inkscape](https://inkscape.org/) and [Affinity Designer](https://affinity.serif.com/fr/designer/).

<figure><img src="/files/O9xljjl6tNNDASrZbIS5" alt=""><figcaption></figcaption></figure>

Second example with "pocket" portions.

<div><figure><img src="/files/mTC1Dx0rRBDQUlvZBA3w" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="/files/mNP7sGCS09ztrigXcSZ3" alt="" width="563"><figcaption></figcaption></figure></div>

#### More About Paths

Paths are a common terms for **edges** or **curves** that are drawn inside the part component and are not associated with a face.

Paths allows you to add extra geometry which will be exported with a color different from that of the solid geometry. &#x20;

For example, the front of the toolbox features a heart that we want to engrave. This heart is drawn with four curved welded arcs in a subgroup of the long side component.&#x20;

{% hint style="warning" %}
The face formed by the outer lines should be removed.
{% endhint %}

<figure><img src="/files/KkwGbIxSeVlUfh1cyTaL" alt="" width="563"><figcaption></figcaption></figure>

If the **Paths** option is enabled, OpenCutList will detect it and preview it with light blue line.

<figure><img src="/files/Sjm8QiIfaLJbwBIF5V1k" alt="" width="540"><figcaption></figcaption></figure>

And export it as a simple SVG path.

<figure><img src="/files/xWWF6YpkK93OwSd6fi4i" alt="" width="563"><figcaption></figcaption></figure>

A more advance example might be the engraving of lines that protrude from the shape of the part.

<figure><img src="/files/JUpesILYRaXwVhgbczOv" alt="" width="540"><figcaption></figcaption></figure>

This does not alter the size of the part in the Parts List, as lines without faces are ignored by OpenCutList.

<figure><img src="/files/C0MFaUAf7WBMnfkwyNK2" alt="" width="563"><figcaption></figcaption></figure>

Paths can be useful for creating machining areas for [autopass](https://www.shapertools.com/autopass).

Imagine the following part where you want to use autopass at specific locations. Simply draw closed paths, weld them into a curve and export them.

{% hint style="warning" %}
Please note that, by default blue path lines are interpreted as guidelines by Shaper Origin. You therefore need to change the type of cut to *Interior cut* on the machine.
{% endhint %}

<div><figure><img src="/files/1wn3vg54rx5VVdqpuWFj" alt="" width="540"><figcaption></figcaption></figure> <figure><img src="/files/gnHWlkugypBSIe79zzSy" alt="" width="563"><figcaption></figcaption></figure></div>

### From Face to SVG

If creating a solid component is too restrictive for your needs, you can also export the faces directly. In this case, however, only the pointed face will be exported.

Use the third Export Face action of the Smart Export Tool.

<figure><img src="/files/Qu3GAPlaYeKWpQmvmFif" alt="" width="540"><figcaption></figcaption></figure>

### Batch Export

{% hint style="info" %}
Read the complete documentation [here](/features/parts/export-part-drawing/2d-projection).
{% endhint %}

If your project contains several parts, you can export all the parts in a single operation. In this case, generate the Parts List, click on the three-dot button and select *Export 2D projection of parts in group*.

<div><figure><img src="/files/EbTD381VGdOvnQn7UupN" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="/files/jNkpuWPatyJiZSODkSH5" alt="" width="563"><figcaption></figcaption></figure></div>

Then set the desired options and colors and click on the **Export** button.

In this example, 5 SVG files will be exported to the chosen folder, named by a combination of the part number and its name.

<figure><img src="/files/5p7rPTuYD3eVUGiKidhw" alt="" width="563"><figcaption></figcaption></figure>

### Export As Cutting Diagram

{% hint style="info" %}
Read the complete documentation [here](/features/parts/parts-list/cutting-diagrams/export).
{% endhint %}

<figure><img src="/files/yPL8ljyTWSZjr9MCFBYc" alt="" width="563"><figcaption></figcaption></figure>


# Shortcuts for Speed

Shortcuts speed up your work.

To be efficient in SketchUp, it is critical to reduce the number of times your hands go back and forth between keyboard and mouse. **OpenCutList** supports keyboard shortcuts for many operations.

## Menu Shortcuts

The menu entries of OpenCutList make it possible to add SketchUp keyboard shortcuts. In the shortcut window of SketchUp you can filter by "opencutlist" to get a list of possible targets for a shortcut.

{% hint style="warning" %}
These shortcuts do not exist by default, because they could interfere with existing shortcuts.
{% endhint %}

## Minimize OpenCutList

To minimize the main window of **OpenCutList**, simply hit the **\<ESC>** key. To maximize the window, add a keyboard shortcut for "Generate Parts List".

## Smart Paint, Smart Axes and Smart Export Tools

Inside of a tool, you may use **\<TAB>** to go to the next sub-tool or **\<SHIFT>+\<TAB>** for the previous tool.

To get to the next option inside of a sub-tool (Paint edges 1 2 4), you may use **\<CTRL>+\<TAB>**.

## Right-click Menu

When a component is selected, a right-click menu to edit the parts properties or its axes is available.


# Frequently Asked Questions

A list of frequently asked questions.

### Common Problems

#### Does OpenCutList do tiling?

Tiling is the process of filing a space or volume with elements. Usually the tiling area is larger than the area to be tiled, resulting in some waste. Typically tiling may also produce a pattern, depending on the orientation and placement of the tiles.

**OpenCutList** cannot do tiling, but [**Curic Face Array**](https://curic.gumroad.com/l/face_array?layout=profile) is compatible with OpenCutList.

#### How can I change the language?

Check [**Preferences**](/getting-started/installing/preferences).

#### How does OpenCutList know which dimension is the length of a part?

The local axes of a component are used to find out which dimension shall be considered the length, width or thickness of a part.

#### The dimensions of a component are wrong in the Parts List

The dimensions of components are taken from the *bounding box*. Depending on how you draw your component, the bounding box may not be aligned with the component axis. Check out [SketchUp Skill Builder: Group axis and bounding box](https://www.youtube.com/watch?v=2UnzHwAt7mc) to learn about relocating the local axis to align the bounding box with your component.

The [**Option** ](/features/parts/options)*Automatic orientation of parts*, tells **OpenCutList** to interpret the dimension of the part using the largest dimension as length, the smallest dimension as thickness and the remaining dimension as width. You can edit the properties of a part, change the order and lock the orientation of the local axes. If *Automatic orientation of parts* is not enabled, the length is read along the <mark style="color:red;">red axis</mark>, width along the <mark style="color:green;">green axis</mark> and thickness on the <mark style="color:blue;">blue axis</mark>. Depending on how you draw your volume, SketchUp might not place the local axes the way you would like them.

These local axes can be changed in SketchUp, in the [**Properties of the Part**](/features/parts/parts-list/edit-part) or by using the Smart Axes Tool.

#### I cannot define material in the plugin

On the [**Materials** ](/features/applying-materials)tab of **OpenCutList**, add a new material and configure its type. Alternatively or if you already have material on your components, you may define the material within SketchUp, then it will appear in the **Materials** tab, where you will have to configure a few additional parameters. This information will be used to compute raw dimensions (using the oversize) and select the correct thickness. Also price and weight attributes can be added to the material.

#### Why is my material not configured?

If you have just applied material defined in SketchUp, **OpenCutList** lacks the additional parameters it needs to exactly compute the **Parts List**. Check out the tab [**Materials** ](/features/applying-materials#configuring-material)to enter this information for all materials used in your model.

#### The available thickness/size does not correspond to my material

It is not possible to make an exhaustive list of all thicknesses, sizes and personal preferences. For each material we have listed *default* sizes, which you have to adapt to your local market availability. There is one set for metric units in *mm* and one for *imperial* (fractional) units in inches listing a limited set of parameters. You can save your customization and restore it at any time. You can also revert to the original defaults.

#### How do I define the grain direction?

On material of type [**Solid Wood**](/features/applying-materials#solid-wood), the grain direction is assumed to run along the length, e.g. the **first** dimension (<mark style="color:red;">red axis</mark>) of your component.

On material of type [**Sheet Good**](/features/applying-materials#sheet-good), there may be no grain direction (like for MDF sheets) or a grain direction along the length of the sheet. Some material do have the grain running across the sheet (plywoods). In that case, simply swap length and width so that the first dimension represents the grain direction.

#### The highlight arrow shows the back, how do I change this?

Using the context menu Flip Along and selecting the blue axis (if the thickness is on the blue axis) will flip the front and back face of a part.

#### The highlight arrow points into the wrong direction, how do I change this?

Using the context menu Flip Along and selecting the red axis (if the length is on the red axis) will change the direction of the arrow.

#### I have a \~ (tilde) in front of some of the dimensions

This happens when the dimensions are not exact with respect to the precision of your model. See the menu `Tools -> Model Info -> Units` or the [**Preferences**](/getting-started/installing/preferences#selecting-the-unit-of-length-and-precision). Enable the *length snapping* and configure it to the same value as *precision* to minimize the effect. However there are situations where this will almost always happen (because you cut a curve or a bevel or because you changed the units of your model after creating your components).

#### How do I add texture to the OpenCutList material?

**OpenCutList** material **is** SketchUp material with some attributes attached to it. Textures cannot be added directly from **OpenCutList** to the material, but you can edit the material directly in SketchUp if you want to customize its appearance. It is important to configure the direction of your texture in **OpenCutList**.

#### I applied material to my component, but I want some faces to have different materials

**OpenCutList** selects the top level material of the component to assign the part to a group. You may define other materials to the faces of the component. If you do this on all faces of the part, the color of the component material will not be visible anymore.

#### I applied material to all the faces of my component, OpenCutList still says *No Material defined*

Material must be applied to the component, assigning it to all faces is cumbersome and unnecessary.

In the [**Options**](/features/parts/options#general-tab), you can enable *Smart assignment of material*, in that case material from a child (face) or parent (enclosing group) of a component will be selected as the material for a component.

#### My panel parts are displayed in different groups, even though they all have the same thickness

This may happen when your drawing is not precise enough. Increase the displayed precision in the model info to the maximum, menu `Tools -> Model Info -> Units` or in [**Preferences**](/getting-started/installing/preferences#selecting-the-unit-of-length-and-precision). You should now see that parts have different thicknesses. If you use fractional inches, and a \~ (tilde) is displayed in front of the thickness, switch to decimal inches to see the difference.

#### OpenCutList only uses one size of panels or length of board?

OpenCutList can either use panels/boards from a stock (we call them **Panel Offcuts**) or a **Standard Panel**. The offcuts have quantities associated with them and **OpenCutList** will use them in a particular order to place the parts. If OpenCutList cannot place a part in any of the offcuts, it will issue a warning.

If a **Standard Panel** is defined (only a single panel/board is possible), **OpenCutList** will generate as many panels as necessary to place all the parts in an efficient manner. If a part is larger than an offcut or the standard panel, it will issue a warning.

Due to **algorithmic complexity/time constraints** it is currently  not possible to have **OpenCutList** select from multiple standard panels/boards to find the optimal mix of panels/boards. In general a larger panel/longer board will yield a better result.

{% hint style="danger" %}
The fact that only a **single panel/board** can be defined as **Standard Panel/Board** is not a bug!
{% endhint %}

### North America only Problems

#### My model unit is fractional, do I need to enter nominal or actual dimensions?

In North America, there is a distinction between the **nominal** and **actual** size of many wood products (rough wood, dimensional lumber, wood panels). SketchUp and **OpenCutList** work with <mark style="color:red;">**actual dimensions**</mark>, therefore you need to enter actual sizes and not nominal sizes.

For dimensional lumber (softwood), when the nominal size is 2 x 4 (2 by 4), the actual size will be at least 1-1/2 x 3-1/2 at 19 % maximum-moisture content.

Here are a few examples from [Archtoolbox](https://www.archtoolbox.com/materials-systems/wood-plastic-composites/dimensional-lumber-sizes-nominal-vs-actual.html).

| Nominal Size (inches) | Actual Size (inches) | Actual Size (mm) |
| --------------------- | -------------------- | ---------------- |
| 1 x 2                 | 3/4 x 1 1/2          | 19 x 38          |
| 1 x 4                 | 3/4 x 3 1/2          | 19 x 89          |
| 2 x 4                 | 1 1/2 x 3 1/2        | 38 x 89          |
| 2 x 8                 | 1 1/2 x 7 1/4        | 38 x 184         |
| 4 x 4                 | 3 1/2 x 3 1/2        | 89 x 89          |
| 4 x 8                 | 3 1/2 x 7 1/4        | 89 x 184         |

See also [American Softwood Lumber Standard, June 2010](https://www.nist.gov/system/files/documents/2017/06/13/ps20-10.pdf).

#### My model unit is fractional, do I need to enter nominal or actual dimensions for my panel?

When you plan to use a panel (OSB, Plywood, ...), make sure you note the correct dimensions. Often the hardware store will list the panel with an indication like this:

Birch Plywood **(Common: 3/4 in. x 2 ft. x 4 ft.; Actual: 0.728 in. x 23.75 in. x 47.75 in.)**

This means that instead of 0.75 in. the panel's thickness is only 0.728 in., not much difference, but 2 ft. x 4 ft. is missing 1/4 in. You need to take this into account when setting up the trimming size for the panel.

#### The volume of solid wood is labeled **FBM**, what does that mean?

Rough wood volumes are usually measured in FBM (for "foot, board measure"). One board foot equals 1 ft x 1 ft x 1 in or 12 in x 12 in x 1 in. A volume in FBM is 12 times larger than the volume in ft³. See also the [National Hardwood Lumber Association Grading Rules](https://www.nhla.com/nhla-services/hardwood-industry-rules/).

#### Is 4 ft. x 8 ft. the same as 8 ft. x 4 ft.?

It depends! In **OpenCutList**, the larger dimension or the dimension of the grain direction is the **length** of the panel, the other being the width. If your material has no grain (like MDF) it probably does not matter. For material like Baltic Birch Plywood, the grain may run along the largest dimension or across the board.


# More Questions and Bugs

The primary place to ask questions and find answers to frequently asked questions is the Forum.

### Forum on OpenCollective

A good place to look for help is the **Forum on OpenCollective,** which is available under the **More** link. To be able to participate in the **Forum**, you will need to create a free account. Use the link **Start a topic...** to be redirected to OpenCollective.

### Found a Bug

If you find bugs, consult [Issues on github](https://github.com/lairdubois/lairdubois-opencutlist-sketchup-extension/issues) first. Open an issue if updating to the latest version does not solve your problem. If you are not familiar with github, you may also send an email via the link under **Report a bug**.

![Link to open your mail client](/files/-Ml8wFoo6oVF9wcRU1lb)


# General

Translations for **OpenCutList** are managed in [Transifex](https://explore.transifex.com/opencutlist/opencutlist/).

## Helping as a Translator

If you wish to become a translator for a language not yet supported by **OpenCutList**, please contact us before asking for a new language in Transifex (you can send an email to <opencutlist@lairdubois.fr>). Be aware that we require a continuing support for the language after its first release.

If you would like to help improve translations, sign up with Transifex.

## Source Language

The source language of **OpenCutList** is **French**, but it is translated/verified by the developers in **English**/**German**. Most translators will choose one of the three languages as a starting point for their translation. We want to make sure that the messages are as correct as possible in all supported languages.

{% hint style="info" %}
Even small translation errors should be corrected. You can send us an email, work with us on correcting the terms, even if you don't want to sign up with Transifex.
{% endhint %}

## Variants of Languages

Many languages have more or less significant variations. French is not the same in Quebec, Switzerland or France. For the sake of simplicity, we will only support a single two-digit language code. French is `fr`, Spanish is `es`, Portuguese is `pt`, ...

We hope that the translators will agree on a term that is understood by all users of a given language.

## Conditions of Acceptance

A language will be accepted and released with **OpenCutList**, <mark style="color:red;">**if and only if it is deemed complete**</mark>. Languages that are only partially translated will not be released until completion.

If support for a language is discontinued, we will remove it from the releases until sufficient support for it is available again.


# Transifex Help

## Transifex Start

Once you are logged in to Transifex, you will notice a blue button in the upper right corner reading: <mark style="color:blue;">**Translate**</mark>. Hit the button to get into the main translation interface.

At the top **select the language** you want to translate to. You will see two columns, the left column contains the terms in French and the right column the terms in the selected language.

You can add a **second source language** by clicking on the three dots at the right top of the window. Using

The **Filters** at the top of the two columns will help you filter things.

See also this [Transifex article](https://help.transifex.com/en/articles/6318216-translating-with-the-web-editor) about the webeditor.

## Developer Versions of OpenCutList

In the developer version of OpenCutList, there is an additional language `zz_[language code]` with numbers prefixing the messages. These numbers correspond to the line number for the string in Transifex. The line number can be found under the button next to the source term in the left column.

{% hint style="warning" %}
The developer version is not a **signed** extension. It can be downloaded from github. The exact URL will be communicated to translators.
{% endhint %}

Clicking on the blue horizontal line in Transifex and ALT-e will show an input box where this line number can be entered. This does not quite work with Chrome, but <mark style="color:red;">Transifex is completely immune to suggestions</mark>.

## Tools

Apart from his knowledge, there is a number of tools that can help the translator to select the most appropriate term.

* The [**Microsoft Language Portal**](https://www.microsoft.com/en-us/language).
* [**Deepl Translator**](https://www.deepl.com/translator).
* [**Google Translate**](https://translate.google.com/).

Sometimes a short sentence must be translated back and forth a few times before the best translation is found.

## Special Terms

Sentences may contain code that is used by **OpenCutList** to fill in information. In the example below, `number` should not be translated.&#x20;

```
The number '{{ number }}' recorded on this part 
cannot be used because it is already assigned
```

We will check that the term `'{{ number }}'` remains intact in the translated version and correct possible mistakes.

Another example where the term in `*$t(...)*` should not be translated.

```
Waste ratio for *$t(tab.materials.type_1)*
```

## Verification

We run a **checker** to avoid mistakes like adjacent spaces, unbalanced brackets, …, but there is always a slight chance that something was not detected.

## History of Terms

Translated terms are kept in memory. When a term has changed in the source language, the translation will be removed. This may happen if we correct a typo that does not change the meaning of the term. In that case, the original translation can be reactivated from the History menu.


# Become a Tester

As OpenCutList continues to grow, it's becoming an increasingly comprehensive and complex tool. For the development team, it's difficult—and sometimes impossible—to avoid missing a few minor bugs before a new release.

This is exactly where **your support can be a real help to the project**. By becoming a tester, you contribute directly to improving the software's stability and quality.

**Here's how you can help**:

1. Download and Install the current *DEV build* [here](https://www.lairdubois.fr/opencutlist/download-dev).
2. Share your feedback, feature requests and report any unexpected behavior or bug you find by writing to us in the SketchUp [forum](https://forums.sketchup.com/t/explore-the-opencutlist-lab/341006) or by email at: <opencutlist@lairdubois.fr>.

Your collaboration is invaluable for the future of OpenCutList!

## FAQ

### What is a DEV build ?

A Development Build (DEV Build) of OpenCutList is a version compiled directly from the latest source code release.

This version is not signed by Trimble. This technical difference allows us to push out updates quickly and regularly, ensuring you get the fastest possible fixes and the newest features without the delay of the official signing process.

This version contains the latest features. However, these features may not be fully complete or translated in all languages.

### How to Update ?

The update process is similar to the official release. If a new build is available, an orange dot indicates it in the bottom left corner of the OpenCutList window.

<figure><img src="/files/2ufF1ksjq8lY7njiFttb" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
Make sure you always have an up-to-date version before reporting a bug.
{% endhint %}

Not all changes are necessarily indicated in the *ChangeLog*. Just make sure the **build number** is the most recent one.

{% hint style="info" %}
A little reading tip: the build number is actually the compilation date in format `YYYYMMDDHHMM`
{% endhint %}

<figure><img src="/files/ek5judWl64N6AjFMeU0h" alt=""><figcaption></figcaption></figure>

### Can I use a DEV Build in production ?

While we do our best to never release a broken version, it's clear that this version will be more prone to bugs. Use it wisely. And rest assured that the best way to test software is in the real world.

And if it makes you feel better, our team uses it for production.


