# Cutouts

For each **plane** (face) there is an array in which you can specify per line where cutouts should come, what the **`origin`** of such a recess is, what shape the recess should have (*Rectangle*, *RoundedRect*, *Circle*, *CircleWithFlats*, *CircleWithKey* or *Polygon*).&#x20;

Depending on the **plane**, the first element is the position on the **X-axis** (lid-, base-, left- or rightPlane) or the **Y-axis** (front- or backPlane) and the second element is the position on the **Y-axis** (lid-, base-, left- or rightPlane) and the **Z-axis** (front-, back-, left- or rightPlane).&#x20;

```
===================================================================
  *** Cutouts ***
    There are 6 cutouts one for each surface:
      cutoutsBase, cutoutsLid, cutoutsFront, cutoutsBack, cutoutsLeft, cutoutsRight
-------------------------------------------------------------------
  Default origin = yappCoordPCB

                        Required                Not Used        Note
----------------------+-----------------------+---------------+------------------------------------
  yappRectangle       | width, length         | radius        |
  yappCircle          | radius                | width, length |
  yappRoundedRect     | width, length, radius |               |     
  yappCircleWithFlats | width, radius         | length        | length=distance
                      |                       |               | between flats
  yappCircleWithKey   | width, length, radius |               | width = key width 
                      |                       |               | length=key depth
  yappPolygon         | width, length         | radius        | yappPolygonDef object
                      |                       |               | must be provided
----------------------+-----------------------+---------------+------------------------------------

  Parameters:
   Required:
    p(0) = from Back
    p(1) = from Left
    p(2) = width
    p(3) = length
    p(4) = radius
    p(5) = shape : { yappRectangle | yappCircle | yappPolygon | yappRoundedRect 
                    | yappCircleWithFlats | yappCircleWithKey }
  Optional:
    p(6) = depth : Default = 0/Auto : 0 = Auto (plane thickness)
    p(7) = angle : Default = 0
    n(a) = { yappPolygonDef } : Required if shape = yappPolygon specified -
    n(b) = { yappMaskDef } : If a yappMaskDef object is added it will be used as a mask 
                             for the cutout.
    n(c) = { [yappMaskDef, hOffset, vOffset, rotation] } : If a list for a mask is added 
                              it will be used as a mask for the cutout. With the Rotation 
                              and offsets applied. This can be used to fine tune the mask
                              placement within the opening.
    n(d) = { <yappCoordPCB> | yappCoordBox | yappCoordBoxInside }
    n(e) = { <yappOrigin>, yappCenter }
    n(f) = { <yappGlobalOrigin>, yappAltOrigin } // Only affects Top(lid), Back and Right Faces
    n(g) = [yappPCBName, "XXX"] : Specify a PCB. Defaults to [yappPCBName, "Main"]
    n(h) = { yappFromInside } Make the cut from the inside towards the outside
-------------------------------------------------------------------

```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://mrwheel-docs.gitbook.io/yappgenerator_en/cutouts.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
