
# IPCB_ConfinementConstraint interface

A room on a PCB document, a design rule that defines a region in which the components in its scope must be placed, or from which they are kept out.

```csharp
public interface IPCB_ConfinementConstraint : IPCB_Rule
```

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

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

## Remarks

The rule kind is `TRuleKind.eRule_ConfinementConstraint`. The region is a polygon on one layer ([`ConstraintLayer`](#constraintlayer)), described by [`PointCount`](#pointcount) and `Segments`; assigning [`BoundingRectangle`](#boundingrectangle) makes it a rectangle.

## Properties

| Property | Type | Access | Description |
| --- | --- | --- | --- |
| [BoundingRectangle](#boundingrectangle) | [CoordRect](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/CoordRect.md) | get; set | The smallest rectangle that encloses the vertices of the room's region, in internal units (10,000 per mil). |
| [ConstraintLayer](#constraintlayer) | [TV6_Layer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TV6_Layer.md) | get; set | The layer of the room's region. |
| [Kind](#kind) | [TConfinementStyle](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TConfinementStyle.md) | get; set | Whether the components in the rule's scope must be inside the region or outside it. |
| [LockComponents](#lockcomponents) | `bool` | get; set | Whether the room locks the components in its first scope ([`Scope1Expression`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#scope1expression)). |
| [PointCount](#pointcount) | `int` | get; set | The number of vertices of the room's region. |
| [Segments](#segments) | [PolySegment](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/PolySegment.md) | get; set | A segment of the room's region, with its vertex and, for an arc, its center, radius and angles. |
| [XLocation](#xlocation) | `int` | get; set | The x-coordinate of the left edge of the room's bounding rectangle ([`BoundingRectangle`](#boundingrectangle)), in internal units (10,000 per mil). |
| [YLocation](#ylocation) | `int` | get; set | The y-coordinate of the bottom edge of the room's bounding rectangle ([`BoundingRectangle`](#boundingrectangle)), in internal units (10,000 per mil). |

### BoundingRectangle

The smallest rectangle that encloses the vertices of the room's region, in internal units (10,000 per mil).

```csharp
CoordRect GetState_BoundingRectangle();
void SetState_BoundingRectangle(CoordRect argBR);
```

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

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

It is all zeros when the region has no vertices. Assigning a rectangle replaces the region with a rectangle of four vertices; the corners can be given in either order.

### ConstraintLayer

The layer of the room's region.

```csharp
TV6_Layer GetState_ConstraintLayer();
void SetState_ConstraintLayer(TV6_Layer argValue);
```

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

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

A new rule is on `TV6_Layer.eV6_TopLayer`. Assigning a layer also sets the rule's `Layer`.

### Kind

Whether the components in the rule's scope must be inside the region or outside it.

```csharp
TConfinementStyle GetState_Kind();
void SetState_Kind(TConfinementStyle argValue);
```

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

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

A new rule has `TConfinementStyle.eConfineIn`. Only components are checked against the rule: with `TConfinementStyle.eConfineIn` a component violates it when the region does not contain the component, with `TConfinementStyle.eConfineOut` when the component overlaps the region.

### LockComponents

Whether the room locks the components in its first scope ([`Scope1Expression`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#scope1expression)).

```csharp
bool GetState_LockComponents();
void SetState_LockComponents(bool argValue);
```

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

The default is false. While it is true and the rule is enabled ([`DRCEnabled`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#drcenabled)), the room's components cannot be moved in the PCB editor.

### PointCount

The number of vertices of the room's region.

```csharp
int GetState_PointCount();
void SetState_PointCount(int argValue);
```

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

A rectangle assigned through [`BoundingRectangle`](#boundingrectangle) has 4.

### Segments

A segment of the room's region, with its vertex and, for an arc, its center, radius and angles.

```csharp
PolySegment GetState_Segments(int argI);
void SetState_Segments(int argI, PolySegment argValue);
```

**Type:** [PolySegment](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/PolySegment.md) · **Access:** read/write · **Index:** `argI` (`int`): The index of the segment.

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

Indexes from 0 to [`PointCount`](#pointcount) are accepted; reading any other index returns a segment whose values are all zero, and assigning one does nothing. Index [`PointCount`](#pointcount) is the closing segment, which repeats the first one. Set [`PointCount`](#pointcount) before assigning segments beyond the current count.

### XLocation

The x-coordinate of the left edge of the room's bounding rectangle ([`BoundingRectangle`](#boundingrectangle)), in internal units (10,000 per mil).

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

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

### YLocation

The y-coordinate of the bottom edge of the room's bounding rectangle ([`BoundingRectangle`](#boundingrectangle)), in internal units (10,000 per mil).

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

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

## Methods

| Method | Returns | Description |
| --- | --- | --- |
| [ArrangeComponents](#arrangecomponents) | `bool` | Arranges the components in the room's first scope ([`Scope1Expression`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#scope1expression)) inside the room's bounding rectangle. |
| [GetConfinedComponents](#getconfinedcomponents) | `bool` | Adds the components of the board that are in the rule's first scope ([`Scope1Expression`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#scope1expression)) to a list. |
| [RotateAroundXY](#rotatearoundxy) | `void` | Rotates the room's region around a point. |

### ArrangeComponents

Arranges the components in the room's first scope ([`Scope1Expression`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#scope1expression)) inside the room's bounding rectangle.

```csharp
bool ArrangeComponents();
```

**Returns:** `bool`

Only movable components (`Moveable`) on the top and bottom layers are arranged. Returns false when the rule is not on a board or the board has no graphical view; otherwise returns true.

### GetConfinedComponents

Adds the components of the board that are in the rule's first scope ([`Scope1Expression`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#scope1expression)) to a list.

```csharp
bool GetConfinedComponents(IInterfaceList argComponents);
bool GetConfinedComponents(object argComponents);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argComponents` | [IInterfaceList](https://altiumdeveloper.github.io/ad-sdk-docs/reference/dxp/IInterfaceList.md) | value | The list that receives the components ([`IPCB_Component`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Component.md) objects). |

**Returns:** `bool`

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

Returns false, leaving the list unchanged, when the list is null or the rule is not on a board; otherwise returns true. No components are added while the rule is not enabled for checking ([`DRCEnabled`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#drcenabled) is false).

### RotateAroundXY

Rotates the room's region around a point.

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

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argX` | `int` | value | The x-coordinate of the center of rotation, in internal units (10,000 per mil). |
| `argY` | `int` | value | The y-coordinate of the center of rotation, in internal units (10,000 per mil). |
| `argngle` | `double` | value | The rotation angle, in degrees, counterclockwise. |

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

A rotation by a whole multiple of 360 degrees does nothing.

## Inherited members

- From [IPCB_Rule](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md): [ActualCheck](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#actualcheck), [ActualCheck_1](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#actualcheck_1), [CheckBinaryScope](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#checkbinaryscope), [CheckUnaryScope](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#checkunaryscope), [CollisionExpansion](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#collisionexpansion), [Comment](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#comment), [DataSummaryString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#datasummarystring), [DefinedByLogicalDocument](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#definedbylogicaldocument), [DRCEnabled](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#drcenabled), [Export_ToParameters_1](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#export_toparameters_1), [GetWhatsThisHelpString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#getwhatsthishelpstring), [IsUnary](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#isunary), [LayerKind](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#layerkind), [Name](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#name), [NetScope](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#netscope), [NetScopeMatches](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#netscopematches), [Priority](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#priority), [RuleKind](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#rulekind), [Scope1Expression](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#scope1expression), [Scope1Includes](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#scope1includes), [Scope2Expression](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#scope2expression), [Scope2Includes](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#scope2includes), [ScopeDescriptorString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#scopedescriptorstring), [ScopeKindIsValid](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#scopekindisvalid), [ShortDescriptorString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#shortdescriptorstring), [ViolationDescriptorString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#violationdescriptorstring)
- 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), [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)
