
# IPCB_Pad4 interface

Extends [`IPCB_Pad3`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad3.md) with the hole size on each layer, the pad's top and bottom layers, separate top and bottom paste mask settings, and queries and operations for custom pad shapes.

```csharp
public interface IPCB_Pad4 : IPCB_Pad3
```

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

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

## Properties

| Property | Type | Access | Description |
| --- | --- | --- | --- |
| [BottomLayer](#bottomlayer) | [V7_LayerBase](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/V7_LayerBase.md) | get | The bottom layer of the pad's layer span. |
| [HoleSizeOnLayer](#holesizeonlayer) | `int` | get | The diameter of the pad's hole on the given layer, in internal units (10,000 per mil). |
| [IsBottomPasteEnabled](#isbottompasteenabled) | `bool` | get; set | Whether the pad has a paste mask opening on the bottom side. |
| [IsTopPasteEnabled](#istoppasteenabled) | `bool` | get; set | Whether the pad has a paste mask opening on the top side. |
| [TopLayer](#toplayer) | [V7_LayerBase](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/V7_LayerBase.md) | get | The top layer of the pad's layer span. |

### BottomLayer

The bottom layer of the pad's layer span.

```csharp
V7_LayerBase GetState_BottomLayer();
```

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

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

For a pad on a signal layer or on `TV6_Layer.eV6_MultiLayer`, this is the bottom signal layer of the board's layer stack; for a pad on another layer, the bottom layer of the layer stack. For a pad that is not on a board, it is the bottom layer.

### HoleSizeOnLayer

The diameter of the pad's hole on the given layer, in internal units (10,000 per mil).

```csharp
int GetProperty_HoleSizeOnLayer(V7_LayerBase argLayer);
```

**Type:** `int` · **Access:** read-only · **Index:** `argLayer` ([V7_LayerBase](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/V7_LayerBase.md)): The layer to query.

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

Equals [`HoleSize`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#holesize) on every layer unless the pad has counter holes ([`IsCounterHole`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad3.md#iscounterhole)). Then, on each electrical layer that a counter hole reaches, the value is the counter hole's diameter at that layer's depth when that diameter is larger.

### IsBottomPasteEnabled

Whether the pad has a paste mask opening on the bottom side.

```csharp
bool GetState_IsBottomPasteEnabled();
void SetState_IsBottomPasteEnabled(bool argValue);
```

**Type:** `bool` · **Access:** read/write

When the pad's layer supports a paste mask for through-hole pads, the bottom setting is independent of [`IsTopPasteEnabled`](#istoppasteenabled); otherwise both properties read and set the same paste mask setting of the pad.

### IsTopPasteEnabled

Whether the pad has a paste mask opening on the top side.

```csharp
bool GetState_IsTopPasteEnabled();
void SetState_IsTopPasteEnabled(bool argValue);
```

**Type:** `bool` · **Access:** read/write

When the pad's layer supports a paste mask for through-hole pads, the top setting is independent of [`IsBottomPasteEnabled`](#isbottompasteenabled); otherwise both properties read and set the same paste mask setting of the pad.

### TopLayer

The top layer of the pad's layer span.

```csharp
V7_LayerBase GetState_TopLayer();
```

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

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

For a pad on a signal layer or on `TV6_Layer.eV6_MultiLayer`, this is the top signal layer of the board's layer stack; for a pad on another layer, the top layer of the layer stack. For a pad that is not on a board, it is the top layer.

## Methods

| Method | Returns | Description |
| --- | --- | --- |
| [GetSourceLayerAndExpansion](#getsourcelayerandexpansion) | `bool` | Returns the layer whose shape the pad uses on the given layer, and the mask expansion applied to that shape. |
| [HasCornerRadiusChamfer](#hascornerradiuschamfer) | `bool` | Returns whether the pad has rounded or chamfered corners on any layer. |
| [HasCustomChamferedRectangle](#hascustomchamferedrectangle) | `bool` | Returns whether the pad has a custom shape of kind `TShapeSubKind.eChamferedRectangle` on any layer. |
| [HasCustomDonut](#hascustomdonut) | `bool` | Returns whether the pad has a custom shape of kind `TShapeSubKind.eDonut` on any layer. |
| [HasCustomMaskDonutShapes](#hascustommaskdonutshapes) | `bool` | Returns whether the pad has a custom donut shape (`TShapeSubKind.eDonut`) on its top or bottom paste mask or solder mask layer. |
| [HasCustomMaskShapes](#hascustommaskshapes) | `bool` | Returns whether the pad has its own shape on its top or bottom paste mask or solder mask layer. |
| [HasCustomRoundedRectangle](#hascustomroundedrectangle) | `bool` | Returns whether the pad has a custom shape of kind `TShapeSubKind.eRoundedRectangle` on any layer. |
| [HasCustomShapes](#hascustomshapes) | `bool` | Returns whether the pad has a custom shape (`TShape.eCustomShape`) on any layer of its stack. |
| [LinkCustomShape](#linkcustomshape) | `void` | Makes a primitive the pad's custom shape on the primitive's layer. |
| [SwapMaskLayersIfNeeded](#swapmasklayersifneeded) | `void` | Swaps the pad's top and bottom custom mask shapes when the pad has moved to a signal layer on the other side of the board. |
| [TransformFingerToCorner](#transformfingertocorner) | `void` | Converts a finger-shaped custom shape on the given layer into a rectangle with two rounded or chamfered corners. |
| [UpdatePadStructureOnLayer](#updatepadstructureonlayer) | `void` | Recreates the pad's default shape on the given layer and re-applies the layer's custom thermal reliefs to the new shape. |
| [UpdateSizeForRoundedAndChamferedShapes](#updatesizeforroundedandchamferedshapes) | `void` | Sets the pad's stack size on the given layer from its custom rounded or chamfered rectangle. |

### GetSourceLayerAndExpansion

Returns the layer whose shape the pad uses on the given layer, and the mask expansion applied to that shape.

```csharp
bool GetSourceLayerAndExpansion(V7_LayerBase argLayer, ref V7_LayerBase argSourceLayer, ref int argExpansion);
bool GetSourceLayerAndExpansion(IV7_Layer argLayer, ref IV7_Layer argSourceLayer, ref int argExpansion);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argLayer` | [V7_LayerBase](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/V7_LayerBase.md) | value | The layer to query. |
| `argSourceLayer` | [V7_LayerBase](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/V7_LayerBase.md) | ref | Receives the layer whose shape the pad uses on `argLayer`. |
| `argExpansion` | `int` | ref | Receives the mask expansion applied on `argLayer`, in internal units (10,000 per mil). |

**Returns:** `bool`

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

For a solder mask or paste mask layer other than the pad's own layer, the source layer of a pad on `TV6_Layer.eV6_MultiLayer` is the top or bottom signal layer (on the same side as the mask layer), and the source layer of any other pad is the pad's own layer; the expansion is the pad's solder mask or paste mask expansion for that layer, and the method returns false when the pad has no mask expansion on that layer.

For any other layer, the source layer is the given layer, the expansion is 0 and the method returns true.

### HasCornerRadiusChamfer

Returns whether the pad has rounded or chamfered corners on any layer.

```csharp
bool HasCornerRadiusChamfer();
```

**Returns:** `bool`

Returns true when the pad has a rounded rectangular shape (`TShape.eRoundedRectangular`) on a layer of its stack, or when [`HasCustomRoundedRectangle`](#hascustomroundedrectangle) or [`HasCustomChamferedRectangle`](#hascustomchamferedrectangle) returns true.

### HasCustomChamferedRectangle

Returns whether the pad has a custom shape of kind `TShapeSubKind.eChamferedRectangle` on any layer.

```csharp
bool HasCustomChamferedRectangle();
```

**Returns:** `bool`

Only layers whose stack shape is `TShape.eCustomShape` count.

### HasCustomDonut

Returns whether the pad has a custom shape of kind `TShapeSubKind.eDonut` on any layer.

```csharp
bool HasCustomDonut();
```

**Returns:** `bool`

Only layers whose stack shape is `TShape.eCustomShape` count.

### HasCustomMaskDonutShapes

Returns whether the pad has a custom donut shape (`TShapeSubKind.eDonut`) on its top or bottom paste mask or solder mask layer.

```csharp
bool HasCustomMaskDonutShapes();
```

**Returns:** `bool`

A layer counts only when its stack shape is `TShape.eCustomShape`.

### HasCustomMaskShapes

Returns whether the pad has its own shape on its top or bottom paste mask or solder mask layer.

```csharp
bool HasCustomMaskShapes();
```

**Returns:** `bool`

Returns true when [`StackShapeOnLayer`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#stackshapeonlayer) is not `TShape.eNoShape` for at least one of these four layers. Returns false for a pad that is neither on a signal layer nor on `TV6_Layer.eV6_MultiLayer`.

### HasCustomRoundedRectangle

Returns whether the pad has a custom shape of kind `TShapeSubKind.eRoundedRectangle` on any layer.

```csharp
bool HasCustomRoundedRectangle();
```

**Returns:** `bool`

Only layers whose stack shape is `TShape.eCustomShape` count.

### HasCustomShapes

Returns whether the pad has a custom shape (`TShape.eCustomShape`) on any layer of its stack.

```csharp
bool HasCustomShapes();
```

**Returns:** `bool`

### LinkCustomShape

Makes a primitive the pad's custom shape on the primitive's layer.

```csharp
void LinkCustomShape(IPCB_Primitive argPrimitive);
void LinkCustomShape(object argPrimitive);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argPrimitive` | [IPCB_Primitive](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md) | value | The primitive that becomes the custom shape. Passing null does nothing. |

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

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

Does nothing when the primitive is on `TV6_Layer.eV6_MultiLayer` or when the pad already has a custom shape on the primitive's layer.

The shape is stored for the layer of the pad stack that the primitive's layer maps to: the top layer for a simple pad (`TPadMode.ePadMode_Simple`), mid layer 1 for any mid layer of a local stack (`TPadMode.ePadMode_LocalStack`), and the primitive's own layer otherwise. The stack shape on that layer becomes `TShape.eCustomShape`.

### SwapMaskLayersIfNeeded

Swaps the pad's top and bottom custom mask shapes when the pad has moved to a signal layer on the other side of the board.

```csharp
void SwapMaskLayersIfNeeded();
```

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

Does nothing for a pad that is not on a board, or when the pad's previous and current layers are not both signal layers.

### TransformFingerToCorner

Converts a finger-shaped custom shape on the given layer into a rectangle with two rounded or chamfered corners.

```csharp
void TransformFingerToCorner(V7_LayerBase argLayer);
void TransformFingerToCorner(IV7_Layer argLayer);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argLayer` | [V7_LayerBase](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/V7_LayerBase.md) | value | The layer whose custom shape is converted. |

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

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

A rounded finger (`TShapeSubKind.eRoundedFinger`) becomes a rounded rectangle (`TShapeSubKind.eRoundedRectangle`) with a corner radius of 100%, and an octagonal finger (`TShapeSubKind.eOctagonalFinger`) becomes a chamfered rectangle (`TShapeSubKind.eChamferedRectangle`) with a corner size of 50%. Only the top right and bottom right corners are rounded or chamfered. Does nothing for other shapes.

### UpdatePadStructureOnLayer

Recreates the pad's default shape on the given layer and re-applies the layer's custom thermal reliefs to the new shape.

```csharp
void UpdatePadStructureOnLayer(V7_LayerBase argLayer);
void UpdatePadStructureOnLayer(IV7_Layer argLayer);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argLayer` | [V7_LayerBase](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/V7_LayerBase.md) | value | The layer to update. |

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

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

### UpdateSizeForRoundedAndChamferedShapes

Sets the pad's stack size on the given layer from its custom rounded or chamfered rectangle.

```csharp
void UpdateSizeForRoundedAndChamferedShapes(V7_LayerBase argLayer);
void UpdateSizeForRoundedAndChamferedShapes(IV7_Layer argLayer);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argLayer` | [V7_LayerBase](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/V7_LayerBase.md) | value | The layer to update. |

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

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

When the custom shape on the layer is a `TShapeSubKind.eRoundedRectangle` or `TShapeSubKind.eChamferedRectangle`, [`XStackSizeOnLayer`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#xstacksizeonlayer) and [`YStackSizeOnLayer`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#ystacksizeonlayer) for that layer are set to the width and height of the shape's bounding rectangle. Does nothing for other shapes.

## Inherited members

- From [IPCB_Pad3](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad3.md): [CounterHoles](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad3.md#counterholes), [GetCounterHoleDiameters](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad3.md#getcounterholediameters), [IsCounterHole](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad3.md#iscounterhole)
- From [IPCB_Pad2](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad2.md): [CornerRadiusOnLayer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad2.md#cornerradiusonlayer), [CRPercentageOnLayer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad2.md#crpercentageonlayer), [StackCRPctOnLayer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad2.md#stackcrpctonlayer)
- From [IPCB_Pad](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md): [BotShape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#botshape), [BotXSize](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#botxsize), [BotYSize](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#botysize), [BoundingRectangleOnLayer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#boundingrectangleonlayer), [Cache](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#cache), [ClearStackSizeAndShapes](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#clearstacksizeandshapes), [DefinitionLayerIterator](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#definitionlayeriterator), [DrillType](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#drilltype), [HoleNegativeTolerance](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#holenegativetolerance), [HolePositiveTolerance](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#holepositivetolerance), [HoleRotation](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#holerotation), [HoleSize](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#holesize), [HoleType](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#holetype), [HoleWidth](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#holewidth), [InvalidateCache](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#invalidatecache), [InvalidateSizeShape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#invalidatesizeshape), [IsConnectedToPlane](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#isconnectedtoplane), [IsPadStack](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#ispadstack), [IsSurfaceMount](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#issurfacemount), [IsVirtualPin](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#isvirtualpin), [JumperID](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#jumperid), [MidShape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#midshape), [MidXSize](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#midxsize), [MidYSize](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#midysize), [Mode](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#mode), [Name](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#name), [OwnerPart_ID](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#ownerpart_id), [PinDescriptorString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#pindescriptorstring), [PlaneConnectionStyleForLayer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#planeconnectionstyleforlayer), [Plated](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#plated), [ReValidateSizeShape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#revalidatesizeshape), [RotateAroundXY](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#rotatearoundxy), [Rotation](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#rotation), [ShapeOnLayer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#shapeonlayer), [SolderMaskExpansionFromHoleEdge](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#soldermaskexpansionfromholeedge), [SolderMaskExpansionFromHoleEdgeWithRule](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#soldermaskexpansionfromholeedgewithrule), [StackShapeOnLayer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#stackshapeonlayer), [SwapID_Pad](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#swapid_pad), [SwapID_Part](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#swapid_part), [SwappedPadName](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#swappedpadname), [TemplateLink](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#templatelink), [TopShape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#topshape), [TopXSize](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#topxsize), [TopYSize](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#topysize), [UpdateCache](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#updatecache), [ValidateSizeShape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#validatesizeshape), [WidthOnLayer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#widthonlayer), [XLocation](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#xlocation), [XPadOffsetOnLayer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#xpadoffsetonlayer), [XSizeOnLayer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#xsizeonlayer), [XStackSizeOnLayer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#xstacksizeonlayer), [YLocation](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#ylocation), [YPadOffsetOnLayer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#ypadoffsetonlayer), [YSizeOnLayer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#ysizeonlayer), [YStackSizeOnLayer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad.md#ystacksizeonlayer)
- 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)
