
# IPCB_BoardOutline interface

The board outline of a PCB document, the closed polygon that defines the extents or boundary of the board.

```csharp
public interface IPCB_BoardOutline : IPCB_Polygon
```

**Namespace:** PCB · **Assembly:** Altium.SDK.Interfaces

**Inherits:** [IPCB_Primitive](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md) → [IPCB_Group](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md) → [IPCB_Polygon](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md)

## Remarks

The board outline shape determines the extents of the power planes for plane edge pull-back, and the board edge when design data is exported.

The outline's shape is given by its segments ([`PointCount`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#pointcount), `Segments`). Its child objects are the pull-back tracks and arcs on the internal plane layers. Assigning most of the inherited pour settings, such as [`RemoveDead`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#removedead), [`UseOctagons`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#useoctagons), `Grid`, [`TrackSize`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#tracksize), [`MinTrack`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#mintrack), [`BorderWidth`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#borderwidth), [`PolyHatchStyle`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#polyhatchstyle), `Name`, [`PourIndex`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#pourindex), [`IgnoreViolations`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#ignoreviolations) and the neck and island settings, does nothing on a board outline; [`ArcApproximation`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#arcapproximation) is the exception and applies to the board outline too.

`IPCB_BoardOutline` inherits from [`IPCB_Polygon`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md), which in turn inherits from [`IPCB_Group`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md). Besides the inherited polygon members, it provides members that rebuild the outline's derived data after its shape has changed, return the outline as an [`IPCB_GeometricPolygon`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_GeometricPolygon.md), and manage the bending lines and split lines that divide the board into board regions.

Iterate the child objects with a group iterator ([`IPCB_Group.GroupIterator_Create`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#groupiterator_create)).

The board outline of a board is returned by the [`IPCB_Board.BoardOutline`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Board.md#boardoutline) property.

Each new PCB document in Altium Designer is created with a board outline, so if you wish to update a board outline of a PCB document, you modify the vertices of the existing board outline and then update the board outline.

## Example

Show the width and height of the board outline of the current board.

```csharp
using PCB;

IPCB_Board pcbBoard = PCB.GlobalVars.PCBServer?.GetCurrentPCBBoard();
if (pcbBoard == null)
    return;
pcbBoard.GetState_BoardOutline().Invalidate();
pcbBoard.GetState_BoardOutline().Rebuild();
pcbBoard.GetState_BoardOutline().Validate();
// The BoundingRectangle method is defined in IPCB_Primitive interface
CoordRect br = pcbBoard.GetState_BoardOutline().BoundingRectangle();
DXP.Utils.ShowMessage(
    "Board Outline Width : " + EDP.Utils.CoordUnitToString(br.Right - br.Left, pcbBoard.GetState_DisplayUnit()) + "\r" +
    "Board Outline Height : " + EDP.Utils.CoordUnitToString(br.Top - br.Bottom, pcbBoard.GetState_DisplayUnit()));
```

## Properties

| Property | Type | Access | Description |
| --- | --- | --- | --- |
| [BendingLine](#bendingline) | [IPCB_BendingLine](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_BendingLine.md) | get | Returns the bending line at the given index. |
| [BendingLinesCount](#bendinglinescount) | `int` | get | The number of bending lines defined on the board outline. |
| [HitPrimitive_1](#hitprimitive_1) | `bool` | get | Whether the given primitive touches the board outline or lies inside it. |
| [SplitLine](#splitline) | [IPCB_SplitBoardRegionLine](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_SplitBoardRegionLine.md) | get | Returns the split line at the given index. |
| [SplitLineCount](#splitlinecount) | `int` | get | The number of split lines defined on the board outline. |

### BendingLine

Returns the bending line at the given index.

```csharp
IPCB_BendingLine GetState_BendingLine(int argIndex);
```

**Type:** [IPCB_BendingLine](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_BendingLine.md) · **Access:** read-only · **Index:** `argIndex` (`int`): The zero-based index of the bending line, from 0 to [`BendingLinesCount`](#bendinglinescount) - 1.

The accessors are extension methods of `IPCB_BoardOutlineHelper` (`using PCB;`).

### BendingLinesCount

The number of bending lines defined on the board outline.

```csharp
int GetState_BendingLinesCount();
```

**Type:** `int` · **Access:** read-only

### HitPrimitive_1

Whether the given primitive touches the board outline or lies inside it.

```csharp
bool GetState_HitPrimitive_1(IPCB_Primitive argPrimitive);
```

**Type:** `bool` · **Access:** read-only · **Index:** `argPrimitive` ([IPCB_Primitive](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md))

The accessors are extension methods of `IPCB_BoardOutlineHelper` (`using PCB;`).

The primitive's layer is ignored; the primitive is tested as if it were on the multi-layer.

### SplitLine

Returns the split line at the given index.

```csharp
IPCB_SplitBoardRegionLine GetState_SplitLine(int argIndex);
```

**Type:** [IPCB_SplitBoardRegionLine](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_SplitBoardRegionLine.md) · **Access:** read-only · **Index:** `argIndex` (`int`): The zero-based index of the split line, from 0 to [`SplitLineCount`](#splitlinecount) - 1.

The accessors are extension methods of `IPCB_BoardOutlineHelper` (`using PCB;`).

### SplitLineCount

The number of split lines defined on the board outline.

```csharp
int GetState_SplitLineCount();
```

**Type:** `int` · **Access:** read-only

## Methods

| Method | Returns | Description |
| --- | --- | --- |
| [BoardOutline_GeometricPolygon](#boardoutline_geometricpolygon) | [IPCB_GeometricPolygon](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_GeometricPolygon.md) | Returns the shape of the board outline as an [`IPCB_GeometricPolygon`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_GeometricPolygon.md). |
| [BuildFromObjects_ReturnGeometricPolygon](#buildfromobjects_returngeometricpolygon) | [IPCB_GeometricPolygon](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_GeometricPolygon.md) | Builds a board outline shape from the tracks and arcs on the given layer and returns it as an [`IPCB_GeometricPolygon`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_GeometricPolygon.md). |
| [ClipWithPolyRegShapes](#clipwithpolyregshapes) | [IPCB_PolyRegShapesClipResult](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_PolyRegShapesClipResult.md) | Subtracts the board cutouts, and optionally pad and via holes and the cutouts of embedded boards, from the board outline and returns the resulting shapes as an [`IPCB_PolyRegShapesClipResult`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_PolyRegShapesClipResult.md). |
| [CreateBendingLine](#createbendingline) | [IPCB_BendingLine](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_BendingLine.md) | Creates a bending line on the board outline and returns it. |
| [CreateSplitLine](#createsplitline) | [IPCB_SplitBoardRegionLine](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_SplitBoardRegionLine.md) | Creates a split line on the board outline, which divides the board into separate board regions, and returns it. |
| [DeleteBendingLine](#deletebendingline) | `void` | Removes the given bending line from the board outline. |
| [DeleteSplitLine](#deletesplitline) | `void` | Removes the given split line from the board outline. |
| [Invalidate](#invalidate) | `void` | Marks the cached data that the board outline derives from its shape, for all layers, as out of date. |
| [InvalidatePlane](#invalidateplane) | `void` | Marks the cached data of the board outline for one layer as out of date, because the outline has been modified and this layer needs to be rebuilt. |
| [Rebuild_1](#rebuild_1) | `void` | Rebuilds the board outline after its shape has been changed, which potentially affects the internal and split planes that are connected to the outline. |
| [RebuildRegion](#rebuildregion) | `void` | Rebuilds the regions of the board outline, optionally with the board cutouts subtracted, and then rebuilds the board outline as [`Rebuild_1`](#rebuild_1) does. |
| [Set3DLock](#set3dlock) | `void` | Sets which board region stays fixed when the board is folded in 3D. |
| [Validate](#validate) | `void` | Refreshes the board outline and its connections to the internal and split planes after the outline has been altered programmatically. |

### BoardOutline_GeometricPolygon

Returns the shape of the board outline as an [`IPCB_GeometricPolygon`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_GeometricPolygon.md).

```csharp
IPCB_GeometricPolygon BoardOutline_GeometricPolygon();
```

**Returns:** [IPCB_GeometricPolygon](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_GeometricPolygon.md)

Extension method of `IPCB_BoardOutlineHelper` (`using PCB;`).

Arcs of the outline are approximated with the outline's [`ArcApproximation`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#arcapproximation).

### BuildFromObjects_ReturnGeometricPolygon

Builds a board outline shape from the tracks and arcs on the given layer and returns it as an [`IPCB_GeometricPolygon`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_GeometricPolygon.md).

```csharp
IPCB_GeometricPolygon BuildFromObjects_ReturnGeometricPolygon(V7_LayerBase argLayer);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argLayer` | [V7_LayerBase](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/V7_LayerBase.md) | value | The keep-out or mechanical layer whose tracks and arcs define the shape. |

**Returns:** [IPCB_GeometricPolygon](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_GeometricPolygon.md)

Extension method of `IPCB_BoardOutlineHelper` (`using PCB;`).

Returns null unless the layer is a keep-out or mechanical layer. When the tracks and arcs do not form one closed shape, the largest region they enclose is returned; null is returned when no region is found. The stored shape of the board outline is not changed.

### ClipWithPolyRegShapes

Subtracts the board cutouts, and optionally pad and via holes and the cutouts of embedded boards, from the board outline and returns the resulting shapes as an [`IPCB_PolyRegShapesClipResult`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_PolyRegShapesClipResult.md).

```csharp
IPCB_PolyRegShapesClipResult ClipWithPolyRegShapes(bool argUseHolesFromViaPad, bool argUseEmbedded);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argUseHolesFromViaPad` | `bool` | value | Whether the holes of pads and vias are subtracted too. |
| `argUseEmbedded` | `bool` | value | Whether the cutouts of the boards placed as embedded boards are subtracted too, repeated for each row and column of the embedded board array. |

**Returns:** [IPCB_PolyRegShapesClipResult](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_PolyRegShapesClipResult.md)

Extension method of `IPCB_BoardOutlineHelper` (`using PCB;`).

Returns null when the board outline has no shape. When there is nothing to subtract, the result contains one new polygon with the shape of the board outline.

### CreateBendingLine

Creates a bending line on the board outline and returns it.

```csharp
IPCB_BendingLine CreateBendingLine(CoordPoint argFromPoint, CoordPoint argToPoint, int argFoldIndex, int argRadius, double argAngle);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argFromPoint` | [CoordPoint](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/CoordPoint.md) | value | The start point of the bending line, in internal units (10,000 per mil). |
| `argToPoint` | [CoordPoint](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/CoordPoint.md) | value | The end point of the bending line, in internal units (10,000 per mil). |
| `argFoldIndex` | `int` | value | The fold index of the bending line ([`IPCB_BendingLine.FoldIndex`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_BendingLine.md#foldindex)). |
| `argRadius` | `int` | value | The bend radius, in internal units (10,000 per mil). |
| `argAngle` | `double` | value | The bend angle, in degrees. |

**Returns:** [IPCB_BendingLine](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_BendingLine.md)

Extension method of `IPCB_BoardOutlineHelper` (`using PCB;`).

Returns null unless rigid-flex is enabled for the board. The bending line is given a generated name.

### CreateSplitLine

Creates a split line on the board outline, which divides the board into separate board regions, and returns it.

```csharp
IPCB_SplitBoardRegionLine CreateSplitLine(CoordPoint argFromPoint, CoordPoint argToPoint);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argFromPoint` | [CoordPoint](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/CoordPoint.md) | value | The start point of the split line, in internal units (10,000 per mil). |
| `argToPoint` | [CoordPoint](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/CoordPoint.md) | value | The end point of the split line, in internal units (10,000 per mil). |

**Returns:** [IPCB_SplitBoardRegionLine](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_SplitBoardRegionLine.md)

Extension method of `IPCB_BoardOutlineHelper` (`using PCB;`).

### DeleteBendingLine

Removes the given bending line from the board outline.

```csharp
void DeleteBendingLine(IPCB_BendingLine argBendingLine);
void DeleteBendingLine(object argBendingLine);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argBendingLine` | [IPCB_BendingLine](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_BendingLine.md) | value |

**Returns:** nothing (`void`)

The first overload is an extension method of `IPCB_BoardOutlineHelper` (`using PCB;`) with typed parameters; the second is declared by the interface.

Does nothing when the bending line does not belong to the board outline.

### DeleteSplitLine

Removes the given split line from the board outline.

```csharp
void DeleteSplitLine(IPCB_SplitBoardRegionLine argSplitLine);
void DeleteSplitLine(object argSplitLine);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argSplitLine` | [IPCB_SplitBoardRegionLine](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_SplitBoardRegionLine.md) | value |

**Returns:** nothing (`void`)

The first overload is an extension method of `IPCB_BoardOutlineHelper` (`using PCB;`) with typed parameters; the second is declared by the interface.

Does nothing when the split line does not belong to the board outline.

### Invalidate

Marks the cached data that the board outline derives from its shape, for all layers, as out of date.

```csharp
void Invalidate();
```

**Returns:** nothing (`void`)

It only discards the cached data; `Validate` rebuilds it.

**See also:** [IPCB_BoardOutline.Validate](#validate)

### InvalidatePlane

Marks the cached data of the board outline for one layer as out of date, because the outline has been modified and this layer needs to be rebuilt.

```csharp
void InvalidatePlane(TV6_Layer argLayer);
void InvalidatePlane(int argLayer);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argLayer` | [TV6_Layer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TV6_Layer.md) | value | The layer whose cached data is discarded. |

**Returns:** nothing (`void`)

The first overload is an extension method of `IPCB_BoardOutlineHelper` (`using PCB;`) with typed parameters; the second is declared by the interface.

The cached data of other layers is kept.

### Rebuild_1

Rebuilds the board outline after its shape has been changed, which potentially affects the internal and split planes that are connected to the outline.

```csharp
void Rebuild_1();
```

**Returns:** nothing (`void`)

It rebuilds the outline's region with the board cutouts as holes, the board's default board region and the pull back primitives on the internal plane layers. It also deletes all bending lines of the board outline.

### RebuildRegion

Rebuilds the regions of the board outline, optionally with the board cutouts subtracted, and then rebuilds the board outline as [`Rebuild_1`](#rebuild_1) does.

```csharp
void RebuildRegion(bool argUseCutouts, bool argUseEmbeddedBoardCutouts, bool argUseRouteToolLayer);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argUseCutouts` | `bool` | value | Whether the board cutouts of the board are subtracted. |
| `argUseEmbeddedBoardCutouts` | `bool` | value | Whether the cutouts of embedded boards are subtracted too; applies only when `argUseCutouts` is true. |
| `argUseRouteToolLayer` | `bool` | value | Whether the primitives on the board's route tool path layer are subtracted as well. |

**Returns:** nothing (`void`)

The existing regions of the board outline are deleted first; new regions are created only when there is at least one cutout to subtract. Like [`Rebuild_1`](#rebuild_1), it deletes all bending lines of the board outline.

### Set3DLock

Sets which board region stays fixed when the board is folded in 3D.

```csharp
void Set3DLock(bool argValue, IPCB_BoardRegion argPrefferedRegion);
void Set3DLock(bool argValue, object argPrefferedRegion);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argValue` | `bool` | value | Whether to lock the given region. |
| `argPrefferedRegion` | [IPCB_BoardRegion](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_BoardRegion.md) | value | The board region to lock; may be null. |

**Returns:** nothing (`void`)

The first overload is an extension method of `IPCB_BoardOutlineHelper` (`using PCB;`) with typed parameters; the second is declared by the interface.

When `argValue` is true and a region is given, that region is locked and all other board regions are unlocked. Otherwise the lock is reassigned automatically: a single board region is locked, or else the largest board region whose layer stack is not flexible.

### Validate

Refreshes the board outline and its connections to the internal and split planes after the outline has been altered programmatically.

```csharp
void Validate();
```

**Returns:** nothing (`void`)

`Validate` rebuilds the board's default board region and the pull back primitives on the internal plane layers itself, so calling `Invalidate` and then `Validate` is sufficient after the vertices of a board outline have been modified programmatically. Unlike [`Rebuild_1`](#rebuild_1), it keeps the bending lines of the board outline.

## Inherited members

- From [IPCB_Polygon](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md): [AcceptsLayer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#acceptslayer), [ArcApproximation](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#arcapproximation), [ArcPourMode](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#arcpourmode), [AreaSize](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#areasize), [AutoGenerateName](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#autogeneratename), [AvoidObsticles](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#avoidobsticles), [BorderWidth](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#borderwidth), [ClipAcuteCorners](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#clipacutecorners), [CopperPourInvalid](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#copperpourinvalid), [CopperPourValidate](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#copperpourvalidate), [DrawDeadCopper](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#drawdeadcopper), [DrawRemovedIslands](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#drawremovedislands), [DrawRemovedNecks](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#drawremovednecks), [ExpandOutline](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#expandoutline), [GetDefaultName](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#getdefaultname), [Grid](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#grid), [GrowPolyshape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#growpolyshape), [HitPrimitive](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#hitprimitive), [IgnoreViolations](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#ignoreviolations), [InRepour](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#inrepour), [Internal_xBoundingRectangle](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#internal_xboundingrectangle), [IslandAreaThreshold](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#islandareathreshold), [MinTrack](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#mintrack), [MitreCorners](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#mitrecorners), [Name](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#name), [NeckWidthThreshold](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#neckwidththreshold), [PointCount](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#pointcount), [PointInPolygon](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#pointinpolygon), [PolygonType](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#polygontype), [PolyHatchStyle](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#polyhatchstyle), [Poured](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#poured), [PourIndex](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#pourindex), [PourOver](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#pourover), [PrimitiveInsidePoly](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#primitiveinsidepoly), [Rebuild](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#rebuild), [RemoveDead](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#removedead), [RemoveIslandsByArea](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#removeislandsbyarea), [RemoveNarrowNecks](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#removenarrownecks), [RotateAroundXY](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#rotatearoundxy), [Segments](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#segments), [SetState_AutoNameInvalidate](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#setstate_autonameinvalidate), [SetState_CopperPourInvalid](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#setstate_copperpourinvalid), [SetState_CopperPourValid](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#setstate_copperpourvalid), [SetState_XSizeYSize_1](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#setstate_xsizeysize_1), [StrictHitTest](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#stricthittest), [TrackSize](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#tracksize), [UseOctagons](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#useoctagons), [XBoundingRectangle](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md#xboundingrectangle)
- From [IPCB_Group](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md): [AddPCBObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#addpcbobject), [FastSetState_XSizeYSize](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#fastsetstate_xsizeysize), [FreePrimitives](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#freeprimitives), [GetPrimitiveAt](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#getprimitiveat), [GetPrimitiveCount](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#getprimitivecount), [GroupIterator_Create](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#groupiterator_create), [GroupIterator_Destroy](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#groupiterator_destroy), [LayerUsed](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#layerused), [PrimitiveLock](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#primitivelock), [RemovePCBObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#removepcbobject), [ReplicateWithChildren](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#replicatewithchildren), [SetState_LayersUsedArray](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#setstate_layersusedarray), [SetState_XSizeYSize](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#setstate_xsizeysize), [XLocation](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#xlocation), [YLocation](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#ylocation)
- From [IPCB_Primitive](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md): [AllowGlobalEdit](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#allowglobaledit), [BeginModify](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#beginmodify), [Board](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#board), [BoundingRectangle](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#boundingrectangle), [BoundingRectangleChildren](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#boundingrectanglechildren), [BoundingRectangleForPainting](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#boundingrectangleforpainting), [BoundingRectangleForSelection](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#boundingrectangleforselection), [CancelModify](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#cancelmodify), [Component](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#component), [Coordinate](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#coordinate), [DescriptorString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#descriptorstring), [DetailString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#detailstring), [Dimension](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#dimension), [DrawAsPreview](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#drawaspreview), [DRCError](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#drcerror), [Enabled](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled), [Enabled_Direct](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled_direct), [Enabled_vComponent](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled_vcomponent), [Enabled_vCoordinate](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled_vcoordinate), [Enabled_vDimension](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled_vdimension), [Enabled_vNet](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled_vnet), [Enabled_vPolygon](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled_vpolygon), [EnableDraw](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabledraw), [EndModify](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#endmodify), [Export_ToParameters](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#export_toparameters), [FlipXY](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#flipxy), [GraphicallyInvalidate](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#graphicallyinvalidate), [Handle](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#handle), [Identifier](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#identifier), [InBoard](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#inboard), [InComponent](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#incomponent), [InCoordinate](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#incoordinate), [Index](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#index), [InDimension](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#indimension), [InNet](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#innet), [InPolygon](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#inpolygon), [InSelectionMemory](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#inselectionmemory), [IsAssyTestPoint_Bottom](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#isassytestpoint_bottom), [IsAssyTestPoint_Top](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#isassytestpoint_top), [IsElectricalPrim](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#iselectricalprim), [IsFreePrimitive](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#isfreeprimitive), [IsHidden](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#ishidden), [IsKeepout](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#iskeepout), [IsPreRoute](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#ispreroute), [IsSaveable](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#issaveable), [IsTenting](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#istenting), [IsTenting_Bottom](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#istenting_bottom), [IsTenting_Top](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#istenting_top), [IsTestPoint_Bottom](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#istestpoint_bottom), [IsTestPoint_Top](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#istestpoint_top), [Layer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#layer), [MiscFlag1](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#miscflag1), [MiscFlag2](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#miscflag2), [MiscFlag3](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#miscflag3), [Moveable](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#moveable), [MoveByXY](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#movebyxy), [MoveToXY](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#movetoxy), [Net](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#net), [ObjectID](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#objectid), [ObjectIDString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#objectidstring), [PadCacheRobotFlag](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#padcacherobotflag), [PasteMaskExpansion](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#pastemaskexpansion), [Polygon](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#polygon), [PolygonOutline](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#polygonoutline), [PowerPlaneClearance](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#powerplaneclearance), [PowerPlaneConnectStyle](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#powerplaneconnectstyle), [PowerPlaneReliefExpansion](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#powerplanereliefexpansion), [Preview](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#preview), [ReliefAirGap](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#reliefairgap), [ReliefConductorWidth](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#reliefconductorwidth), [ReliefEntries](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#reliefentries), [Replicate](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#replicate), [RequiredParamterSpace](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#requiredparamterspace), [RotateBy](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#rotateby), [Selected](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#selected), [SolderMaskExpansion](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#soldermaskexpansion), [SwapLayerPairs](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#swaplayerpairs), [TearDrop](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#teardrop), [UnionIndex](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#unionindex), [UniqueId](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#uniqueid), [UniqueID](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#uniqueid-1), [Used](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#used), [UserRouted](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#userrouted), [V7Layer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#v7layer), [ViewableObjectID](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#viewableobjectid)

## Returned by

[IPCB_Board.BoardOutline](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Board.md#boardoutline), [IPCB_Board.CreateBoardOutline](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Board.md#createboardoutline)
