
# IPCB_Pad interface

A pad, the connection point of a component pin and of signal tracks, either on a single layer or multi-layer.

```csharp
public interface IPCB_Pad : IPCB_Primitive
```

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

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

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

## Remarks

On a multi-layer pad, the shape and size on the top, middle and bottom layers can be assigned independently to define a pad stack. Surface mount components and edge connectors have single-layer pads on the top or bottom layer.

A pad is defined in one of three modes (`Mode`): simple, top-middle-bottom, or full stack, which allows different sizes and shapes on all signal layers. The corner radius of rounded rectangular pads is given by [`IPCB_Pad2`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Pad2.md).

## Example

Create a pad with custom pad cache settings on a new PCB document.

```csharp
using DXP;
using PCB;

// Create a new PCB document.
var workspace = DXP.GlobalVars.Client.GetDXPWorkspace() as EDP.IWorkspace;
if (workspace == null)
    return;
workspace.DM_CreateNewDocument("PCB");
IPCB_ServerInterface pcbServer = PCB.GlobalVars.PCBServer;
if (pcbServer == null)
    return;
IPCB_Board board = pcbServer.GetCurrentPCBBoard();
if (board == null)
    return;

// Create a pad object.
var pad = pcbServer.PCBObjectFactory(TObjectId.ePadObject, TDimensionKind.eNoDimension, TObjectCreationMode.eCreate_Default) as IPCB_Pad;
pad.SetState_XLocation(EDP.Utils.MilsToCoord(3000));
pad.SetState_YLocation(EDP.Utils.MilsToCoord(3000));

// Set up a pad cache which has common values.
V7_PadCache padCache = pad.GetState_Cache();
padCache.ReliefAirGap = EDP.Utils.MilsToCoord(11);
padCache.PowerPlaneReliefExpansion = EDP.Utils.MilsToCoord(11);
padCache.PowerPlaneClearance = EDP.Utils.MilsToCoord(11);
padCache.ReliefConductorWidth = EDP.Utils.MilsToCoord(11);
padCache.SolderMaskExpansion = EDP.Utils.MilsToCoord(11);
padCache.SolderMaskExpansionValid = TCacheState.eCacheManual;
padCache.PasteMaskExpansion = EDP.Utils.MilsToCoord(11);
padCache.PasteMaskExpansionValid = TCacheState.eCacheManual;

// Assign the new pad cache to the pad.
pad.SetState_Cache(padCache);
int topLayerWidth = pad.GetState_WidthOnLayer(TV6_Layer.eV6_BottomLayer);
board.AddPCBObject(pad);

// Refresh the PCB document.
string parameters = "";
DXP.Utils.SetParamterValue(ref parameters, "Action", "All");
DXP.Utils.RunCommand("PCB:Zoom", parameters);
```

## Properties

| Property | Type | Access | Description |
| --- | --- | --- | --- |
| [BotShape](#botshape) | [TShape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TShape.md) | get; set | The shape of the pad on the bottom layer of a top-middle-bottom stack. |
| [BotXSize](#botxsize) | `int` | get; set | The X size of the pad on the bottom layer of a top-middle-bottom stack. |
| [BotYSize](#botysize) | `int` | get; set | The Y size of the pad on the bottom layer of a top-middle-bottom stack. |
| [Cache](#cache) | [V7_PadCache](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/V7_PadCache.md) | get; set | The pad's cache of values derived from design rules, such as plane connection style, power plane clearance, relief settings and solder and paste mask expansion, each with its own validity state. |
| [DrillType](#drilltype) | [TExtendedDrillType](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TExtendedDrillType.md) | get; set | The method used to drill the pad's hole. |
| [HoleNegativeTolerance](#holenegativetolerance) | `int` | get; set | The negative tolerance of the pad's hole size, in internal units (10,000 per mil). |
| [HolePositiveTolerance](#holepositivetolerance) | `int` | get; set | The positive tolerance of the pad's hole size, in internal units (10,000 per mil). |
| [HoleRotation](#holerotation) | `double` | get; set | The rotation of the hole within the pad, which applies to square and slotted holes. |
| [HoleSize](#holesize) | `int` | get; set | The size of the pad's hole, through which component pins or wires are passed and soldered in place, in internal units (10,000 per mil). |
| [HoleType](#holetype) | [TExtendedHoleType](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TExtendedHoleType.md) | get; set | The shape of the pad's hole. |
| [HoleWidth](#holewidth) | `int` | get; set | The width of the pad's hole, in internal units (10,000 per mil), used by square and slotted holes. |
| [IsConnectedToPlane](#isconnectedtoplane) | `bool` | get; set | Whether the pad is connected to the internal plane on the given layer. |
| [JumperID](#jumperid) | `int` | get; set | The jumper identifier of the pad; 0 means the pad is not part of a jumper. |
| [MidShape](#midshape) | [TShape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TShape.md) | get; set | The shape of the pad on the middle layers of a top-middle-bottom stack. |
| [MidXSize](#midxsize) | `int` | get; set | The X size of the pad on the middle layers of a top-middle-bottom stack. |
| [MidYSize](#midysize) | `int` | get; set | The Y size of the pad on the middle layers of a top-middle-bottom stack. |
| [Mode](#mode) | [TPadMode](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TPadMode.md) | get; set | The kind of pad stack; a simple pad, a top-middle-bottom stack, or a full stack. |
| [Name](#name) | `string` | get; set | The designator of the pad. |
| [OwnerPart_ID](#ownerpart_id) | `int` | get; set | The identifier of the component part that owns the pad, used for gate and pin swapping. |
| [PinDescriptorString](#pindescriptorstring) | `string` | get | This property obtains the description of the pin which represents the pad of a component. |
| [Plated](#plated) | `bool` | get; set | Whether the pad is plated. |
| [Rotation](#rotation) | `double` | get; set | The rotation of the pad, in degrees. |
| [ShapeOnLayer](#shapeonlayer) | [TShape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TShape.md) | get | This property determines what shape the pad is on this specified layer. |
| [SolderMaskExpansionFromHoleEdge](#soldermaskexpansionfromholeedge) | `bool` | get; set | Whether the pad's solder mask expansion is measured from the edge of the hole instead of the edge of the copper. |
| [StackShapeOnLayer](#stackshapeonlayer) | [TShape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TShape.md) | get; set | This property determines what shape the pad stack is on that layer. |
| [SwapID_Pad](#swapid_pad) | `string` | get; set | The pin swap identifier of the pad, used for gate and pin swapping. |
| [SwapID_Part](#swapid_part) | `string` | get; set | The part swap identifier of the pad, used for gate and pin swapping. |
| [SwappedPadName](#swappedpadname) | `string` | get; set | The name of the pad after gate and pin swapping. |
| [TemplateLink](#templatelink) | [IPCB_PadViaTemplateLink](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_PadViaTemplateLink.md) | get | The link from the pad to a pad and via template. |
| [TopShape](#topshape) | [TShape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TShape.md) | get; set | The shape of the pad on the top layer. |
| [TopXSize](#topxsize) | `int` | get; set | The X size of the pad on the top layer. |
| [TopYSize](#topysize) | `int` | get; set | The Y size of the pad on the top layer. |
| [WidthOnLayer](#widthonlayer) | `int` | get | The width of the pad on the given layer, the smaller of its X and Y sizes on that layer. |
| [XLocation](#xlocation) | `int` | get; set | The X coordinate of the pad's location, in internal units (10,000 per mil). |
| [XPadOffsetOnLayer](#xpadoffsetonlayer) | `int` | get; set | The offset in X of the pad's copper shape from the pad's location on the given layer, in internal units (10,000 per mil). |
| [XSizeOnLayer](#xsizeonlayer) | `int` | get | This property determines what size in X direction the pad is on this specified layer. |
| [XStackSizeOnLayer](#xstacksizeonlayer) | `int` | get; set | The X size of the pad on the given layer of a full stack (`TPadMode.ePadMode_ExternalStack`). |
| [YLocation](#ylocation) | `int` | get; set | The Y coordinate of the pad's location, in internal units (10,000 per mil). |
| [YPadOffsetOnLayer](#ypadoffsetonlayer) | `int` | get; set | The offset in Y of the pad's copper shape from the pad's location on the given layer, in internal units (10,000 per mil). |
| [YSizeOnLayer](#ysizeonlayer) | `int` | get | This property determines what size in Y direction the pad is on this specified layer. |
| [YStackSizeOnLayer](#ystacksizeonlayer) | `int` | get; set | The Y size of the pad on the given layer of a full stack (`TPadMode.ePadMode_ExternalStack`). |

### BotShape

The shape of the pad on the bottom layer of a top-middle-bottom stack.

```csharp
TShape GetState_BotShape();
void SetState_BotShape(TShape argValue);
```

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

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

Assigning a value has no effect while `Mode` is `TPadMode.ePadMode_Simple`.

**See also:** [TShape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TShape.md)

### BotXSize

The X size of the pad on the bottom layer of a top-middle-bottom stack.

```csharp
int GetState_BotXSize();
void SetState_BotXSize(int argValue);
```

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

Assigning a value has no effect while `Mode` is `TPadMode.ePadMode_Simple`.

### BotYSize

The Y size of the pad on the bottom layer of a top-middle-bottom stack.

```csharp
int GetState_BotYSize();
void SetState_BotYSize(int argValue);
```

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

Assigning a value has no effect while `Mode` is `TPadMode.ePadMode_Simple`.

### Cache

The pad's cache of values derived from design rules, such as plane connection style, power plane clearance, relief settings and solder and paste mask expansion, each with its own validity state.

```csharp
V7_PadCache GetState_Cache();
void SetState_Cache(V7_PadCache argValue);
```

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

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

Assigning a cache does not change the pad's tenting settings or whether its paste mask is enabled; they keep their previous values.

To change the cache, read `Cache`, change a field (for example set `SolderMaskExpansionValid` to `TCacheState.eCacheManual` and `UseSeparateExpansions` to true) and assign it back.

**Examples:** [Extension_Pad_SolderMask](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_Pad_SolderMask/Source%20Code/Commands.cs#L45)

### DrillType

The method used to drill the pad's hole.

```csharp
TExtendedDrillType GetState_DrillType();
void SetState_DrillType(TExtendedDrillType argDrillType);
```

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

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

This attribute is used by the manufacturing output files such as the CAM files.

### HoleNegativeTolerance

The negative tolerance of the pad's hole size, in internal units (10,000 per mil).

```csharp
int GetState_HoleNegativeTolerance();
void SetState_HoleNegativeTolerance(int argValue);
```

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

A negative value is stored as its absolute value. Setting the pad's `Layer` to any layer other than `TV6_Layer.eV6_MultiLayer` resets both hole tolerances to `int.MaxValue`.

### HolePositiveTolerance

The positive tolerance of the pad's hole size, in internal units (10,000 per mil).

```csharp
int GetState_HolePositiveTolerance();
void SetState_HolePositiveTolerance(int argValue);
```

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

A negative value is stored as its absolute value. Setting the pad's `Layer` to any layer other than `TV6_Layer.eV6_MultiLayer` resets both hole tolerances to `int.MaxValue`.

### HoleRotation

The rotation of the hole within the pad, which applies to square and slotted holes.

```csharp
double GetState_HoleRotation();
void SetState_HoleRotation(double argHRotation);
```

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

### HoleSize

The size of the pad's hole, through which component pins or wires are passed and soldered in place, in internal units (10,000 per mil).

```csharp
int GetState_HoleSize();
void SetState_HoleSize(int argValue);
```

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

### HoleType

The shape of the pad's hole.

```csharp
TExtendedHoleType GetState_HoleType();
void SetState_HoleType(TExtendedHoleType argHoleType);
```

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

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

There are three hole types - Round Hole, Square Hole and Slotted Hole.

**See also:** [TExtendedHoleType](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TExtendedHoleType.md)

### HoleWidth

The width of the pad's hole, in internal units (10,000 per mil), used by square and slotted holes.

```csharp
int GetState_HoleWidth();
void SetState_HoleWidth(int argHoleWidth);
```

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

For a slotted hole, and for a square hole when `HoleWidth` is not 0, the hole's size in X is `HoleWidth` and its size in Y is [`HoleSize`](#holesize); otherwise both are [`HoleSize`](#holesize).

### IsConnectedToPlane

Whether the pad is connected to the internal plane on the given layer.

```csharp
bool GetState_IsConnectedToPlane(TV6_Layer argLayer);
void SetState_IsConnectedToPlane(TV6_Layer argLayer, bool argValue);
```

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

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

Returns false for a layer that is not an internal plane layer, and while the pad's plane connections have not been calculated (`PlanesValid` of `Cache` is `TCacheState.eCacheInvalid`). Assigning a value for a layer that is not an internal plane layer does nothing.

### JumperID

The jumper identifier of the pad; 0 means the pad is not part of a jumper.

```csharp
int GetState_JumperID();
void SetState_JumperID(int argValue);
```

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

When connectivity is analysed, pads of the same component that have the same non-zero `JumperID` are treated as joined by a jumper.

### MidShape

The shape of the pad on the middle layers of a top-middle-bottom stack.

```csharp
TShape GetState_MidShape();
void SetState_MidShape(TShape argValue);
```

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

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

Assigning a value has no effect while `Mode` is `TPadMode.ePadMode_Simple`.

**See also:** [TShape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TShape.md)

### MidXSize

The X size of the pad on the middle layers of a top-middle-bottom stack.

```csharp
int GetState_MidXSize();
void SetState_MidXSize(int argValue);
```

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

Assigning a value has no effect while `Mode` is `TPadMode.ePadMode_Simple`.

### MidYSize

The Y size of the pad on the middle layers of a top-middle-bottom stack.

```csharp
int GetState_MidYSize();
void SetState_MidYSize(int argValue);
```

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

Assigning a value has no effect while `Mode` is `TPadMode.ePadMode_Simple`.

### Mode

The kind of pad stack; a simple pad, a top-middle-bottom stack, or a full stack.

```csharp
TPadMode GetState_Mode();
void SetState_Mode(TPadMode argMode);
```

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

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

With `TPadMode.ePadMode_Simple`, the size and shape of the pad are [`TopXSize`](#topxsize), [`TopYSize`](#topysize) and [`TopShape`](#topshape).

With `TPadMode.ePadMode_LocalStack` (top-middle-bottom), they are the top, middle and bottom properties ([`TopXSize`](#topxsize), [`MidXSize`](#midxsize), [`BotXSize`](#botxsize) and so on).

With `TPadMode.ePadMode_ExternalStack` (full stack), they are [`XStackSizeOnLayer`](#xstacksizeonlayer), [`YStackSizeOnLayer`](#ystacksizeonlayer) and [`StackShapeOnLayer`](#stackshapeonlayer).

**See also:** [TPadMode](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TPadMode.md), [IPCB_Pad.IsPadStack](#ispadstack)

### Name

The designator of the pad.

```csharp
string GetState_Name();
void SetState_Name(string argValue);
```

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

**Examples:** [Extension_Pad_SolderMask](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_Pad_SolderMask/Source%20Code/Commands.cs#L43)

### OwnerPart_ID

The identifier of the component part that owns the pad, used for gate and pin swapping.

```csharp
int GetState_OwnerPart_ID();
void SetState_OwnerPart_ID(int argValue);
```

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

### PinDescriptorString

This property obtains the description of the pin which represents the pad of a component.

```csharp
string GetState_PinDescriptorString();
```

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

The value is the designator of the pad's component, a hyphen and the pad's `Name`; for a pad that is not part of a component it is `Free-` followed by the pad's `Name`. `Identifier` returns the same value.

### Plated

Whether the pad is plated.

```csharp
bool GetState_Plated();
void SetState_Plated(bool argValue);
```

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

### Rotation

The rotation of the pad, in degrees.

```csharp
double GetState_Rotation();
void SetState_Rotation(double argValue);
```

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

Assigning a new value rotates the pad about its location by the difference between the new and the old angle. 0 and 360 are treated as the same angle.

### ShapeOnLayer

This property determines what shape the pad is on this specified layer.

```csharp
TShape GetState_ShapeOnLayer(V7_LayerBase argL);
```

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

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

On an internal plane layer where the pad's hole straddles planes, returns `TShape.eRounded`.

**See also:** [TShape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TShape.md)

### SolderMaskExpansionFromHoleEdge

Whether the pad's solder mask expansion is measured from the edge of the hole instead of the edge of the copper.

```csharp
bool GetState_SolderMaskExpansionFromHoleEdge();
void SetState_SolderMaskExpansionFromHoleEdge(bool argValue);
```

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

The setting applies only to a multi-layer pad whose solder mask expansion is set manually; when the expansion comes from the design rules, the applicable rule decides. [`SolderMaskExpansionFromHoleEdgeWithRule`](#soldermaskexpansionfromholeedgewithrule) returns the setting that applies.

### StackShapeOnLayer

This property determines what shape the pad stack is on that layer.

```csharp
TShape GetState_StackShapeOnLayer(V7_LayerBase argL);
void SetState_StackShapeOnLayer(V7_LayerBase argL, TShape argValue);
```

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

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

Assigning a value for a signal layer has no effect when `Mode` is `TPadMode.ePadMode_Simple` and the layer is not the top layer, or when `Mode` is `TPadMode.ePadMode_LocalStack` and the layer is an internal signal layer other than the first one.

**See also:** [TShape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TShape.md)

### SwapID_Pad

The pin swap identifier of the pad, used for gate and pin swapping.

```csharp
string GetState_SwapID_Pad();
void SetState_SwapID_Pad(string argValue);
```

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

### SwapID_Part

The part swap identifier of the pad, used for gate and pin swapping.

```csharp
string GetState_SwapID_Part();
void SetState_SwapID_Part(string argValue);
```

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

### SwappedPadName

The name of the pad after gate and pin swapping.

```csharp
string GetState_SwappedPadName();
void SetState_SwappedPadName(string argValue);
```

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

### TemplateLink

The link from the pad to a pad and via template.

```csharp
IPCB_PadViaTemplateLink GetState_TemplateLink();
```

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

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

The SDK examples re-link a pad to another template by reading `TemplateLink` between [`BeginModify`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#beginmodify) and [`EndModify`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#endmodify) and assigning new `LibraryID` and `TemplateID` values to the returned link.

### TopShape

The shape of the pad on the top layer.

```csharp
TShape GetState_TopShape();
void SetState_TopShape(TShape argValue);
```

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

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

In a simple pad (`TPadMode.ePadMode_Simple`) it is the shape on all layers.

**See also:** [TShape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TShape.md)

### TopXSize

The X size of the pad on the top layer.

```csharp
int GetState_TopXSize();
void SetState_TopXSize(int argValue);
```

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

In a simple pad (`TPadMode.ePadMode_Simple`) it is the X size on all layers.

### TopYSize

The Y size of the pad on the top layer.

```csharp
int GetState_TopYSize();
void SetState_TopYSize(int argValue);
```

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

In a simple pad (`TPadMode.ePadMode_Simple`) it is the Y size on all layers.

### WidthOnLayer

The width of the pad on the given layer, the smaller of its X and Y sizes on that layer.

```csharp
int GetState_WidthOnLayer(TV6_Layer argL);
```

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

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

### XLocation

The X coordinate of the pad's location, in internal units (10,000 per mil).

```csharp
int GetState_XLocation();
void SetState_XLocation(int argX);
```

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

**Examples:** [Extension_PlacePad](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_PlacePad/Source%20Code/PlacePadCommand.cs#L40)

### XPadOffsetOnLayer

The offset in X of the pad's copper shape from the pad's location on the given layer, in internal units (10,000 per mil).

```csharp
int GetState_XPadOffsetOnLayer(TV6_Layer argL);
void SetState_XPadOffsetOnLayer(TV6_Layer argL, int argXOffset);
```

**Type:** `int` · **Access:** read/write · **Index:** `argL` ([TV6_Layer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TV6_Layer.md))

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

### XSizeOnLayer

This property determines what size in X direction the pad is on this specified layer.

```csharp
int GetState_XSizeOnLayer(V7_LayerBase argL);
```

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

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

On an internal plane layer where the pad's hole straddles planes, the value is the hole's size in X plus twice [`PowerPlaneClearance`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#powerplaneclearance), so that the pad is not connected to the plane.

### XStackSizeOnLayer

The X size of the pad on the given layer of a full stack (`TPadMode.ePadMode_ExternalStack`).

```csharp
int GetState_XStackSizeOnLayer(V7_LayerBase argL);
void SetState_XStackSizeOnLayer(V7_LayerBase argL, int argValue);
```

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

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

Assigning a value for a signal layer has no effect when `Mode` is `TPadMode.ePadMode_Simple` and the layer is not the top layer, or when `Mode` is `TPadMode.ePadMode_LocalStack` and the layer is an internal signal layer other than the first one.

**See also:** [TPadMode](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TPadMode.md)

### YLocation

The Y coordinate of the pad's location, in internal units (10,000 per mil).

```csharp
int GetState_YLocation();
void SetState_YLocation(int argY);
```

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

**Examples:** [Extension_PlacePad](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_PlacePad/Source%20Code/PlacePadCommand.cs#L41)

### YPadOffsetOnLayer

The offset in Y of the pad's copper shape from the pad's location on the given layer, in internal units (10,000 per mil).

```csharp
int GetState_YPadOffsetOnLayer(TV6_Layer argL);
void SetState_YPadOffsetOnLayer(TV6_Layer argL, int argYOffset);
```

**Type:** `int` · **Access:** read/write · **Index:** `argL` ([TV6_Layer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TV6_Layer.md))

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

### YSizeOnLayer

This property determines what size in Y direction the pad is on this specified layer.

```csharp
int GetState_YSizeOnLayer(V7_LayerBase argL);
```

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

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

On an internal plane layer where the pad's hole straddles planes, the value is the hole's size in Y (its [`HoleSize`](#holesize)) plus twice [`PowerPlaneClearance`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#powerplaneclearance), so that the pad is not connected to the plane.

### YStackSizeOnLayer

The Y size of the pad on the given layer of a full stack (`TPadMode.ePadMode_ExternalStack`).

```csharp
int GetState_YStackSizeOnLayer(V7_LayerBase argL);
void SetState_YStackSizeOnLayer(V7_LayerBase argL, int argValue);
```

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

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

Assigning a value for a signal layer has no effect when `Mode` is `TPadMode.ePadMode_Simple` and the layer is not the top layer, or when `Mode` is `TPadMode.ePadMode_LocalStack` and the layer is an internal signal layer other than the first one.

## Methods

| Method | Returns | Description |
| --- | --- | --- |
| [BoundingRectangleOnLayer](#boundingrectangleonlayer) | [CoordRect](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/CoordRect.md) | Returns the bounding rectangle of the pad on the given layer. |
| [ClearStackSizeAndShapes](#clearstacksizeandshapes) | `void` | Removes the per-layer sizes, shapes, corner radii and offsets stored for the pad. |
| [DefinitionLayerIterator](#definitionlayeriterator) | [IPCB_LayerIterator](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerIterator.md) | Returns an iterator over the layers for which the pad has a size, shape or corner radius stored. |
| [InvalidateCache](#invalidatecache) | `void` | Marks the pad's cached design rule values as out of date. |
| [InvalidateSizeShape](#invalidatesizeshape) | `void` | Marks the pad's calculated sizes and shapes as out of date. |
| [IsPadStack](#ispadstack) | `bool` | Returns whether the pad has different sizes or shapes on its layers. |
| [IsSurfaceMount](#issurfacemount) | `bool` | Returns whether the pad is a surface mount pad. |
| [IsVirtualPin](#isvirtualpin) | `bool` | Returns whether the pad is a virtual pin. |
| [PlaneConnectionStyleForLayer](#planeconnectionstyleforlayer) | [TPlaneConnectionStyle](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TPlaneConnectionStyle.md) | Returns how the pad connects to the given internal plane layer. |
| [ReValidateSizeShape](#revalidatesizeshape) | `void` | Marks the pad's calculated sizes and shapes as out of date and recalculates them. |
| [RotateAroundXY](#rotatearoundxy) | `void` | Rotates the pad about a point. |
| [SolderMaskExpansionFromHoleEdgeWithRule](#soldermaskexpansionfromholeedgewithrule) | `bool` | Returns whether the pad's solder mask expansion is measured from the edge of the hole, taking the design rules into account. |
| [UpdateCache](#updatecache) | `void` | Recalculates the pad's cached design rule values that are out of date. |
| [ValidateSizeShape](#validatesizeshape) | `void` | Recalculates the pad's calculated sizes and shapes if they are out of date. |

### BoundingRectangleOnLayer

Returns the bounding rectangle of the pad on the given layer.

```csharp
CoordRect BoundingRectangleOnLayer(TV6_Layer argLayer);
```

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

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

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

### ClearStackSizeAndShapes

Removes the per-layer sizes, shapes, corner radii and offsets stored for the pad.

```csharp
void ClearStackSizeAndShapes();
```

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

### DefinitionLayerIterator

Returns an iterator over the layers for which the pad has a size, shape or corner radius stored.

```csharp
IPCB_LayerIterator DefinitionLayerIterator();
```

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

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

### InvalidateCache

Marks the pad's cached design rule values as out of date.

```csharp
void InvalidateCache();
```

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

The pad's calculated sizes and shapes are marked out of date as well. [`UpdateCache`](#updatecache) recalculates the cached values.

### InvalidateSizeShape

Marks the pad's calculated sizes and shapes as out of date.

```csharp
void InvalidateSizeShape();
```

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

They are recalculated by [`ValidateSizeShape`](#validatesizeshape), which reading [`XSizeOnLayer`](#xsizeonlayer), [`YSizeOnLayer`](#ysizeonlayer), [`ShapeOnLayer`](#shapeonlayer) or [`IsPadStack`](#ispadstack) also does.

### IsPadStack

Returns whether the pad has different sizes or shapes on its layers.

```csharp
bool IsPadStack();
```

**Returns:** `bool`

Returns false when `Mode` is `TPadMode.ePadMode_Simple` and true when it is `TPadMode.ePadMode_ExternalStack`. For `TPadMode.ePadMode_LocalStack` it returns true only for a multi-layer pad whose top, middle and bottom layers differ in shape, X size or Y size. The pad's calculated sizes and shapes are brought up to date first. Use this method before you change the properties of a pad stack.

**See also:** [TPadMode](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TPadMode.md)

### IsSurfaceMount

Returns whether the pad is a surface mount pad.

```csharp
bool IsSurfaceMount();
```

**Returns:** `bool`

Returns true when the pad is on a signal layer (not `TV6_Layer.eV6_MultiLayer`) and either its hole has a size of 0 or `Mode` is `TPadMode.ePadMode_Simple`.

### IsVirtualPin

Returns whether the pad is a virtual pin.

```csharp
bool IsVirtualPin();
```

**Returns:** `bool`

Returns true when the pad's largest X size and largest Y size on its signal layers are both 1 internal unit.

### PlaneConnectionStyleForLayer

Returns how the pad connects to the given internal plane layer.

```csharp
TPlaneConnectionStyle PlaneConnectionStyleForLayer(TV6_Layer argLayer);
```

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

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

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

The style of the connection comes from the applicable Power Plane Connect Style design rule: `TPlaneConnectionStyle.ePlaneReliefConnect` (a thermal relief connection) or `TPlaneConnectionStyle.ePlaneDirectConnect` (solid copper).

The method returns `TPlaneConnectionStyle.ePlaneNoConnect` when the layer is not an internal plane layer, when the pad is not on `TV6_Layer.eV6_MultiLayer`, when the pad has no net, or when the pad is not connected to the plane on that layer.

**See also:** [TPlaneConnectionStyle](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TPlaneConnectionStyle.md)

### ReValidateSizeShape

Marks the pad's calculated sizes and shapes as out of date and recalculates them.

```csharp
void ReValidateSizeShape();
```

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

### RotateAroundXY

Rotates the pad about a point.

```csharp
void RotateAroundXY(int argX, int argY, double argngle);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argX` | `int` | value | The X coordinate of the point to rotate about, in internal units (10,000 per mil). |
| `argY` | `int` | value | The Y coordinate of the point to rotate about, in internal units (10,000 per mil). |
| `argngle` | `double` | value | The rotation angle, in degrees. |

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

To rotate the pad without moving it, pass its own location ([`XLocation`](#xlocation), [`YLocation`](#ylocation)) as the point, or use the `Rotation` property.

### SolderMaskExpansionFromHoleEdgeWithRule

Returns whether the pad's solder mask expansion is measured from the edge of the hole, taking the design rules into account.

```csharp
bool SolderMaskExpansionFromHoleEdgeWithRule();
```

**Returns:** `bool`

When the solder mask expansion comes from the design rules, the applicable rule decides; when it is set manually, the result is [`SolderMaskExpansionFromHoleEdge`](#soldermaskexpansionfromholeedge). Returns false for a pad that is not on `TV6_Layer.eV6_MultiLayer`, and for a pad whose solder mask expansion neither comes from the rules nor is set manually.

### UpdateCache

Recalculates the pad's cached design rule values that are out of date.

```csharp
void UpdateCache();
```

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

Covers the plane connection style and plane connections, the relief conductor width, entries and air gap, the paste mask and solder mask expansion, the power plane clearance and relief expansion, and the tenting of both sides. The pad's calculated sizes and shapes are brought up to date as well.

### ValidateSizeShape

Recalculates the pad's calculated sizes and shapes if they are out of date.

```csharp
void ValidateSizeShape();
```

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

Does nothing when they are up to date. [`ReValidateSizeShape`](#revalidatesizeshape) always recalculates them.

## Inherited members

- 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_FromTo.GetFromPad](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_FromTo.md#getfrompad), [IPCB_FromTo.GetToPad](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_FromTo.md#gettopad)

## Accepted by

[IPCB_ContourMaker.MakeContour_2](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_ContourMaker.md#makecontour_2), [IPCB_ContourMaker2.MakeContour_12](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_ContourMaker2.md#makecontour_12), [IPCB_Net.CancelGroupWarehouseRegistration](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Net.md#cancelgroupwarehouseregistration), [IPCB_Net.RegisterWithGroupWarehouse](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Net.md#registerwithgroupwarehouse)

## Examples

Used in the SDK examples: [Extension_Pad_SolderMask](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_Pad_SolderMask/Source%20Code/Commands.cs#L40), [Extension_PlacePad](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_PlacePad/Source%20Code/PlacePadCommand.cs#L24).
