# Customization

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

### Native Columns

<figure><img src="https://2764382921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MUSHuV5bThAGZxy7OHb-1972196547%2Fuploads%2FybtnwNcDkRWlc8GW7rOt%2FCapture%20d%E2%80%99e%CC%81cran%202022-09-11%20a%CC%80%2016.12.39.png?alt=media&#x26;token=ff457dbe-a7d2-4771-b90e-22291e577d99" 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="https://2764382921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MUSHuV5bThAGZxy7OHb-1972196547%2Fuploads%2F2GMWj96TKubRqhZFK05H%2FCapture%20d%E2%80%99e%CC%81cran%202022-09-11%20a%CC%80%2016.20.27.png?alt=media&#x26;token=cfd30f83-fb04-4a3c-9ea0-51a1367138df" 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="https://2764382921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MUSHuV5bThAGZxy7OHb-1972196547%2Fuploads%2FAbf9rFROwybeb4eSzMsh%2FCapture%20d%E2%80%99e%CC%81cran%202022-09-11%20a%CC%80%2016.13.21.png?alt=media&#x26;token=826c57ac-e0af-47b5-9b0b-c22f94854eb7" 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="https://2764382921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MUSHuV5bThAGZxy7OHb-1972196547%2Fuploads%2FLgMIFGthmTOCNlncgpCL%2FCapture%20d%E2%80%99e%CC%81cran%202022-10-05%20a%CC%80%2008.21.11.png?alt=media&#x26;token=85316f8a-2577-468a-8de5-e8a8b383b44e" 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 %}
