---
title: File Preparation
slug: software/file-preparation
description: Learn how to prepare CAD files for successful lattice generation in Carbon Design Engine with this comprehensive document.
docTags: 
createdAt: 2024-06-28T17:59:25.657Z
---

Design Engine parts begin in your CAD program of choice and are exported as an STL or STEP file to be uploaded into the software. Learn how to prepare your CAD file to achieve the best results for your application.

# General File Preparation

## Origin

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
![Symmetry around the world origin](https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/6M7Hn52KqnBpB42JHalsk_origin-symmetry-labeled.png)
:::

:::VerticalSplitItem
- Recommend thinking of **symmetry around the world origin&#x20;**&#x66;or best results.
- Note that incoming coordinates are maintained in export regardless of where your model resides relative to the world origin.
:::
::::

## Solid Models

The Carbon® Design Engine requires **solid models**, or fully **closed polysurfaces** (if using a surface-based CAD program).

The lattice generation converts all positive space into a lattice. Negative space is not considered.&#x20;

### Shell Model

This model is built as a **hollow shell.&#x20;**&#x54;he lattice generation assesses the shell only and **fails&#x20;**&#x62;ecause the strut and cell size dimensions do not fit in the shell thickness.

![Shell model fails as lattice](https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/AlYw-tORIBiMV8CZZKGSZ_cad-shell-labeled.png "Shell model fails as lattice")

Do you want to lattice a shell? If this is the intention, Design Engine can get you there with parameters that are small enough.

:::hint{type="warning"}
Note that smaller cell sizes may create a lattice with holes too small to properly clean.
:::

![Shell may lattice with smaller parameters](https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/aVaz2ZfpgrYIx61cCS0-y_cad-lattice-shell-labeled.png "Shell may lattice with smaller parameters")

### Solid Model

The same design space built as a solid model generates a complete lattice.

![Solid model successfully lattices](https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/xnk0d7-TIdVfHfAPXKRkr_cad-solid-labeled.png "Solid model successfully lattices")

### Polysurface Model

Surface modeling CAD software is also acceptable. Though built as surfaces around a hollow core, the surfaces are a fully closed polysurface. When exported, a closed polysurface is read as a solid model.

![Closed polysurface model successfully lattices](https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/x8S_enbBTxk9h6PDk9hJ-_cad-closed-surface-section-labeled.png "Closed polysurface model successfully lattices")

## Partially Latticed Parts

Some applications may benefit from a partial lattice, while still being printed as one part. One of the common reasons to partially lattice a part is for **lightweighting** (to reduce mass). The lightweighting example below lists the steps to achieve a partial lattice.

**How to partially lattice a part**

- Create the area(s) to be latticed as a **separate part(s) in the CAD file.**
- Lattice the part requiring lightweighting (the <font color="#ff9900">orange</font> part in this example)&#x20;
- [Combine - AI Error](docId\:qgtfrFw3wkjEOb0eY5hYv) the lattice with the rest of the part in Design Engine

![Two parts in CAD combined after latticing](https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/M75aN06MUDjPymOT2R6wM_partial-lattice.png "Two parts in CAD combined after latticing")

## Design Space Offset

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
![The lattice generation builds outwards by 1/2 the strut diameter.](https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/CkMBZmgbXHE9Q9tH5__MN_wristpad-orange-design-space.png)
:::

:::VerticalSplitItem
The lattice generation builds **outwards&#x20;**&#x62;y 1/2 the strut diameter.

The boundary mesh (imported design space) is shown in <font color="#ff9900">**orange**</font>, while the generated lattice is shown in <font color="#32c49a">**green**</font>, protruding from the boundary mesh by 1/2 the strut diameter.
:::
::::

**If the design space is a hard boundary**, one option is to **offset the design space inwards by 1/2 the strut diameter&#x20;**&#x69;n CAD.

Alternatively, use the [Offset](docId:5VOJDsScE3JSUfQR1Wl_Z) feature in Design Engine.

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
![Default lattice generation builds outwards](https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/eOA3saSOe-cLFWNMbRb2d_design-space-offset-green.png "Default lattice generation builds outwards")
:::

:::VerticalSplitItem
![Offset design space inwards by 1/2 the strut diameter](https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/vCKAc6U3OqtY-grdyiiPb_design-space-offset-in-cad-green.png "Offset design space inwards by 1/2 the strut diameter")
:::
::::

## Export from CAD as STL or STEP

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
Parts must be an **STL&#x20;**&#x6F;&#x72;**&#x20;STEP file** type to import into Carbon Design Engine.

File size limit is **500MB**
:::

:::VerticalSplitItem
![File size limit is 500MB](https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/BHHHoO58qYUo5ss-1vk3R_file-size-limit.png)
:::
::::

:::hint{type="warning"}
All STEP files will be converted to an STL upon import. Meshes cannot be downloaded in STEP format (STL, PLY, and OBJ are the available download format options).
:::

## Exporting Multiple Parts

If you are exporting multiple parts (for the [Combine - AI Error](docId\:qgtfrFw3wkjEOb0eY5hYv) tool or for [Zones](docId\:eFk8RIevt0JGCmQHe2IFV)), make sure you **export parts from an assembly** rather than from individual part files. This ensures that parts are sharing the same coordinates.

**Example export from Solidworks**

- From an assembly, click Save As...
- Select STL as file type
- Click Options
- Ensure that all components are saved as separate STL files <font color="#d32f4a">**DO NOT check the single file box**</font>
- Number of files should match number of parts

![Example export from Solidworks](https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/X_uPyB4osYi6m2h1MFj5P_file-export-from-solidworks-v0101.gif)

# Multi-Zone File Preparation

## Begin with a Single Design Space

Before defining separated zones, Design Engine requires a **singularly defined design space** to understand the **external boundaries** of the part to be latticed.

This single design space will be the **input mesh**.

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
![Single solid model](https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/WlboEiHfiIy5tGQzNZHQr_button-full-part-solid-in-cad.png "Single solid model")
:::

:::VerticalSplitItem
![Design Engine reads the boundaries for latticing](https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/hTWwwVEOuhrSCQ1h7UQyO_button-boundary.gif "Design Engine reads the boundaries for latticing")
:::
::::

## Create Zones

There are two options to set up your lattice for multiple zones.&#x20;

1. Use the **Add Shape&#x20;**&#x74;ool in Design Engine.
2. Set up zones in your **CAD file&#x20;**&#x61;nd maintain a copy of the single design space for the input mesh.

:::hint{type="info"}
Whichever option you use, read through the guidelines below to understand how to best define the zones for your application.&#x20;
:::

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
![Zones 1 and 2 in CAD](https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/Gsb_B3yIAG30_5h2XaRHx_button-2-zones.gif "Zones 1 and 2 in CAD")
:::

:::VerticalSplitItem
**Part Zones**

Break up the part into zones that require different performance specifications.

**Intended Goal**

- <font color="#ff9900">**Zone 1**</font> - a highly compressible area - large cell size
- <font color="#05a9f4">**Zone 2**</font> - a stiff, structural area - small cell size
:::
::::

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
**Zone 1**

![Voronoi - 8 mm cell size - 1.0 mm strut diameter](https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/34QeCJ1E0qp4E64o8tFqx_button-zone-1-button-voronoi-8cs-1sd.png "Voronoi - 8 mm cell size - 1.0 mm strut diameter")
:::

:::VerticalSplitItem
**Zone 2**

![Voronoi - 4 mm cell size - 0.5 mm strut diameter](https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/ENDtK3H7KM8afDC9E9qNp_button-zone-2-frame-voronoi-4cs-0-5sd.png "Voronoi - 4 mm cell size - 0.5 mm strut diameter")
:::
::::

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
**Multi-Zone Results**

Is the multi-zone lattice what you expected?

The zones transition past their boundaries to create the most efficient structure between differing lattice parameters.

The results, therefore, do not have a sharp transition that may be expected when picturing each zone latticed separately.
:::

:::VerticalSplitItem
![Multi-Zone Results](https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/FkQTWo1R7gHiaCxoulW0B_button-2-zone.png)
:::
::::

## Managing Zone Transitions

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
![Zones Touching](https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/nA95i3Z_ZI8-isEUSREwJ_button-2-zone-blended.png)
:::

:::VerticalSplitItem
**Zones Touching**

- The example lattice above uses two zones that directly touch each other.&#x20;
- Every area in the overall design space is accounted for in zones.
- Each zone transitions outwards from its edges.
- The result is an overlapping blend of the parameters in each zone.
:::
::::

**Zones Not Touching**

The resulting lattice can be manipulated by providing space for transitions without overlapping.

- In this example, Zone 1 has been made smaller to create the gray transition space between zones.
- Only a portion of the overall design space is accounted for in zones.
- Each zone transitions outwards from its edges without overlapping the other zone's transition space.
  - A **minimum of one cell size distance** is needed for each zone's outward transition in this fashion.
- The result appears less blended by providing transition space.

::Image[]{src="https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/DBBPdc104X6R0zEAZt31m_button-3-zone-transition.png" size="80" width="800" height="600" position="center" alt="Zones Not Touching" showCaption="false"}

**Results with Zones Not Touching**

Both of the lattice results below are using the same two zones, with the same gray transition area shown above.

- <font color="#ff9900">**Zone 1**</font> - Voronoi - 8 mm cell size - 1.0 mm strut diameter
- <font color="#05a9f4">**Zone 2**</font> - Voronoi - 4 mm cell size - 0.5 mm strut diameter

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
Non-touching zones **result 1**

![Non-touching zones result 1](https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/GEEzn5U2dv-NWK6k58Yhs_button-3-zone-voronoi-8cs-1sd.png)
:::

:::VerticalSplitItem
Non-touching zones **result 2**

![Non-touching zones result 2](https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/V7MBoHGeKCKgOdK7AlPF5_button-3-zone-voronoi-4cs-0-5sd.png)
:::
::::

::::hint{type="info"}
**Pop Quiz:&#x20;**&#x57;hy do you think the two resulting lattices look different?

:::ExpandableHeading
Answer

The **input mesh lattice parameters** provide Design Engine with guidelines that favor how the two defined zones will transition.

Recall that Design Engine requires a single design space that defines the external boundaries of the lattice. This is known as the **input mesh**. The input mesh defines the **favoring lattice parameters** for the resulting lattice, so the undefined gray transition area takes on the character of these parameters as the defined zones transition within.

- **Result 1&#x20;**- the boundary mesh uses the zone 1 parameters: 8 mm cell size - 1.0 mm strut diameter
- **Result 2&#x20;**- the boundary mesh uses the zone 2 parameters: 4 mm cell size - 0.5 mm strut diameter
:::
::::

## Managing Different Strut Sizes

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
![Result 1 Lattice](https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/6ppHBRHT2nkU65qbBCnI-_button-3-zone-voronoi-8cs-1sd.png)
:::

:::VerticalSplitItem
**Result 1** is the lattice we were looking for.

The multi-zone result meets the intended goal

- Compressible center
- Structural border

The two zones, however, are using **different strut sizes**. What effect does that have and will that work functionally for the part?
:::
::::

Lattice generation builds **outwards from the design space** by half of the strut diameter.

This means that the larger center struts (1.0 mm) protrude farther out than the border struts (0.5 mm). This is likely not an issue for the top of the part where the surface is curved.

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
The different strut sizes may be an **issue on the flat bottom of the part**, which is **no longer flat**.

<font color="#05a9f4">Section cuts shown in blue for emphasis</font>
:::

:::VerticalSplitItem
![Differing strut sizes create an uneven surface](https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/45PxaMp4u7HHQJK_5GpSR_button-strut-diff-v2.png "Differing strut sizes create an uneven surface")
:::
::::

There are **two main options** for managing different strut sizes on your latticed part:

- CAD Adjustment
- Design Engine Adjustment (in-app features)

### CAD Adjustment Option

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
Adjustments can be made in CAD (or with the Add Shape tool), rethinking how the zones are structured, by making sure a flat surface falls within one zone.

In this example, instead of a perimeter zone, we can make the blue zone a full base in the part.
:::

:::VerticalSplitItem
![Base Zone in CAD](https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/E_jOfggoFF1l_CdEP5sE7_button-bottom-v2.gif)
:::
::::

![Base Zone Latticed](https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/wqD3a1kFg2XgLfOyy5tfR_button-strut-diff-cad-bottom-v2.png "Base Zone Latticed")

### Design Engine Adjustment Options

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
[Apply Base](docId\:GOPjF6dmSrJFBPp1dSNCS) extrudes the cross section of the struts down to Z-zero.
:::

:::VerticalSplitItem
![Apply Base](https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/arNGukWAqiYKI6IzdFZq8_button-strut-diff-base-v2.png)
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
[Trim](docId\:uydTCMwoLksw6rwSV2yHA) removes all material outside the edges of the design space.
:::

:::VerticalSplitItem
![Trim](https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/fI7PFzC2JrbGREp80k5rh_button-strut-diff-trimmed-v2.png)
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
[Boundary Strut Diameter](docId\:LSZNA83JoRyttKyWgHkce) allows you to set the diameter for all surface struts, regardless of multi-zone parameters.
:::

:::VerticalSplitItem
![Boundary Strut Diameter](https://api.archbee.com/api/optimize/3CesIL2dYMCHPZvRjp8S0/PCj5XFvLKMgx79-MLGK_U_button-strut-diff-boundary-strut-diam-v2.png)
:::
::::

