
# IPCB_Group interface

The base interface of PCB objects that contain other primitives: [`IPCB_Component`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Component.md), [`IPCB_LibComponent`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LibComponent.md), [`IPCB_Net`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Net.md), [`IPCB_Polygon`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md), [`IPCB_SplitPlane`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_SplitPlane.md), [`IPCB_Coordinate`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Coordinate.md), [`IPCB_Dimension`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Dimension.md) and their descendant interfaces.

```csharp
public interface IPCB_Group : 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_Component](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Component.md), [IPCB_Coordinate](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Coordinate.md), [IPCB_Dimension](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Dimension.md), [IPCB_LibComponent](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LibComponent.md), [IPCB_Net](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Net.md), [IPCB_Polygon](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Polygon.md), [IPCB_SplitPlane](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_SplitPlane.md)

## Remarks

A group is composed of child primitives such as arcs, tracks and fills: for example, a polygon consists of tracks and arcs, and a footprint in a PCB library of arcs, pads and tracks.

[`GroupIterator_Create`](#groupiterator_create) and [`GroupIterator_Destroy`](#groupiterator_destroy) iterate over the child primitives; [`AddPCBObject`](#addpcbobject) and [`RemovePCBObject`](#removepcbobject) add and remove them. [`XLocation`](#xlocation) and [`YLocation`](#ylocation) are the reference point of the group.

## Properties

| Property | Type | Access | Description |
| --- | --- | --- | --- |
| [LayerUsed](#layerused) | `bool` | get; set | Whether a child primitive of the group is on the given layer. |
| [PrimitiveLock](#primitivelock) | `bool` | get; set | Whether the child primitives of the group can be edited individually or only as part of the group. |
| [XLocation](#xlocation) | `int` | get; set | The X coordinate of the reference point of the group, in internal units (10,000 per mil). |
| [YLocation](#ylocation) | `int` | get; set | The Y coordinate of the reference point of the group, in internal units (10,000 per mil). |

### LayerUsed

Whether a child primitive of the group is on the given layer.

```csharp
bool GetState_LayerUsed(TV6_Layer argL);
void SetState_LayerUsed(TV6_Layer argL, bool argValue);
```

**Type:** `bool` · **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_GroupHelper` (`using PCB;`).

The value is valid after [`SetState_LayersUsedArray`](#setstate_layersusedarray) has run. Until the layer usage of the group has been built (by [`SetState_LayersUsedArray`](#setstate_layersusedarray) or by assigning a value), reading returns false.

### PrimitiveLock

Whether the child primitives of the group can be edited individually or only as part of the group.

```csharp
bool GetState_PrimitiveLock();
void SetState_PrimitiveLock(bool argValue);
```

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

### XLocation

The X coordinate of the reference point of the group, in internal units (10,000 per mil).

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

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

Assigning a different value moves the group with [`MoveToXY`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#movetoxy), keeping its Y coordinate.

**Examples:** [Extension_PCBUndoRedo](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_PCBUndoRedo/Source%20Code/Commands.cs#L49), [Extension_PcbLibComponentToSTEP](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_PcbLibComponentToSTEP/Source%20Code/Commands.cs#L47), [Extension_PlaceAndMovePcbComponent](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_PlaceAndMovePcbComponent/Source%20Code/Commands.cs#L39)

### YLocation

The Y coordinate of the reference point of the group, in internal units (10,000 per mil).

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

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

Assigning a different value moves the group with [`MoveToXY`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#movetoxy), keeping its X coordinate.

**Examples:** [Extension_PcbLibComponentToSTEP](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_PcbLibComponentToSTEP/Source%20Code/Commands.cs#L48), [Extension_PlaceAndMovePcbComponent](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_PlaceAndMovePcbComponent/Source%20Code/Commands.cs#L40)

## Methods

| Method | Returns | Description |
| --- | --- | --- |
| [AddPCBObject](#addpcbobject) | `void` | Adds a primitive to the group as a child primitive. |
| [FastSetState_XSizeYSize](#fastsetstate_xsizeysize) | `bool` |  |
| [FreePrimitives](#freeprimitives) | `void` | Destroys all child primitives of the group and leaves the group empty. |
| [GetPrimitiveAt](#getprimitiveat) | [IPCB_Primitive](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md) | Returns the child primitive at the given position among the group's children of the given object kind. |
| [GetPrimitiveCount](#getprimitivecount) | `int` | Returns the number of child primitives of the group whose object kind is in the given set. |
| [GroupIterator_Create](#groupiterator_create) | [IPCB_GroupIterator](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_GroupIterator.md) | Creates an iterator over the child primitives of the group. |
| [GroupIterator_Destroy](#groupiterator_destroy) | `void` | Releases an iterator created by [`GroupIterator_Create`](#groupiterator_create). |
| [RemovePCBObject](#removepcbobject) | `void` | Removes a child primitive from the group. |
| [ReplicateWithChildren](#replicatewithchildren) | [IPCB_Primitive](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md) | Returns a copy of the group that contains copies of all its child primitives. |
| [SetState_LayersUsedArray](#setstate_layersusedarray) | `void` | Rebuilds the layer usage of the group that [`LayerUsed`](#layerused) reports, marking the layer of every child primitive as used. |
| [SetState_XSizeYSize](#setstate_xsizeysize) | `bool` | Recalculates the size of every child primitive and then the bounds of the group. |

### AddPCBObject

Adds a primitive to the group as a child primitive.

```csharp
void AddPCBObject(IPCB_Primitive argPCBObject);
void AddPCBObject(object argPCBObject);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argPCBObject` | [IPCB_Primitive](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md) | value | The primitive to add: an arc, pad, via, track, connection, text, fill, rule, embedded board, region or component body. For null or any other kind of object the method does nothing. |

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

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

When the group is a component, a net or a polygon, the primitive is first removed from the component, net or polygon respectively that it belongs to. To place a new primitive in a footprint, add it to the library board with [`IPCB_Board.AddPCBObject`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Board.md#addpcbobject) and then to the footprint with `AddPCBObject`.

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

### FastSetState_XSizeYSize

*No description yet.*

```csharp
bool FastSetState_XSizeYSize();
```

**Returns:** `bool`

### FreePrimitives

Destroys all child primitives of the group and leaves the group empty.

```csharp
void FreePrimitives();
```

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

### GetPrimitiveAt

Returns the child primitive at the given position among the group's children of the given object kind.

```csharp
IPCB_Primitive GetPrimitiveAt(int argI, TObjectId argObjectId);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argI` | `int` | value | The position of the child primitive, starting at 1; [`GetPrimitiveCount`](#getprimitivecount) returns the number of children. |
| `argObjectId` | [TObjectId](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TObjectId.md) | value | The object kind of the child primitives. |

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

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

Returns null when the group has no child of that kind at the given position.

**See also:** [IPCB_Group.GroupIterator_Create](#groupiterator_create), [IPCB_GroupIterator](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_GroupIterator.md), [IPCB_Group.GroupIterator_Destroy](#groupiterator_destroy)

### GetPrimitiveCount

Returns the number of child primitives of the group whose object kind is in the given set.

```csharp
int GetPrimitiveCount(TObjectSet argObjectSet);
int GetPrimitiveCount(ITransportSet argObjectSet);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argObjectSet` | [TObjectSet](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TObjectSet.md) | value | The object kinds ([`TObjectId`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TObjectId.md) values) to count. |

**Returns:** `int`

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

### GroupIterator_Create

Creates an iterator over the child primitives of the group.

```csharp
IPCB_GroupIterator GroupIterator_Create();
```

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

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

Release the iterator with [`GroupIterator_Destroy`](#groupiterator_destroy).

### GroupIterator_Destroy

Releases an iterator created by [`GroupIterator_Create`](#groupiterator_create).

```csharp
void GroupIterator_Destroy(ref IPCB_GroupIterator argIterator);
void GroupIterator_Destroy(ref object argIterator);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argIterator` | [IPCB_GroupIterator](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_GroupIterator.md) | ref | The iterator to release; the variable is set to null. |

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

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

### RemovePCBObject

Removes a child primitive from the group.

```csharp
void RemovePCBObject(IPCB_Primitive argPCBObject);
void RemovePCBObject(object argPCBObject);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argPCBObject` | [IPCB_Primitive](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md) | value | The primitive to remove: an arc, pad, via, track, connection, text, fill, rule, embedded board, region or component body. For null or any other kind of object the method does nothing. |

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

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

### ReplicateWithChildren

Returns a copy of the group that contains copies of all its child primitives.

```csharp
IPCB_Primitive ReplicateWithChildren();
```

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

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

Add the copy to a board with [`IPCB_Board.AddPCBObject`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Board.md#addpcbobject).

### SetState_LayersUsedArray

Rebuilds the layer usage of the group that [`LayerUsed`](#layerused) reports, marking the layer of every child primitive as used.

```csharp
void SetState_LayersUsedArray();
```

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

When the group does not belong to a board, all layers are left marked as unused.

### SetState_XSizeYSize

Recalculates the size of every child primitive and then the bounds of the group.

```csharp
bool SetState_XSizeYSize();
```

**Returns:** `bool`

The selection rectangle of the group becomes the rectangle that encloses the selection rectangles of its child primitives.

## 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_BoardOutlineClearanceConstraint.GetObstacleTracks](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_BoardOutlineClearanceConstraint.md#getobstacletracks), [IPCB_Net.GetLogicalNet](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Net.md#getlogicalnet), [IPCB_Net.GetSubnets](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Net.md#getsubnets)

## Accepted by

[IPCB_PrimitiveComparator.CompareGroup](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_PrimitiveComparator.md#comparegroup)
