### Syntax

- shapeO(
*frontWidth, rightWidth, backWidth, leftWidth*) {*selector operator operations*|*...*}

### Parameters

*frontWidth*—*float*Depth of front wing.*rightWidth*—*float*Width of right wing.*backWidth*—*float*Depth of rear wing.*leftWidth*—*float*Width of left wing.*selector*—*selector*- shape—The setback polygon.
- remainder—Selects the remainder of the polygon.

*operator*—*float*The operator defines how the setback polygons are used to generate successor shapes. This also applies to shapes with more than one faces. Valid operators are:- : —each polygon is put into a new shape.
- =—all polygons corresponding to the selector are combined into one new shape.

*operations*—*float*A sequence of CGA operations to execute.

### Description

The shapeO operation selects a number of edges, depending on predefined spatial selectors, and set them back by a user-defined distance.

##### Note:

This operation is another way of applying setbacks.

shapeO(frontWidth, rightWidth, backWidth, leftWidth) { selector operator operations | ... }

can also be achieved with the setback operation and the comp function:

setback( comp(fe) { front=frontWidth | right=rightWidth | back=backWidth | left=leftWidth } ) { selector operator operations | ... }

### Related

### Examples

A block filled with O-shapes:

```
attr myFrontDepth = 5
attr myRightWidth = 3
attr myBackDepth = 2
attr myLeftWidth = 11
LotInner -->
Lot
Lot -->
offset(-3, inside)
shapeO(myFrontDepth,myRightWidth,myBackDepth,myLeftWidth)
{ shape : Footprint | remainder : NIL }
Footprint -->
extrude(rand(10,20))
color(1,0,0)
```