
# IPCB_Component interface

A component on a PCB document, a footprint from a PCB library (or an integrated library) placed with a designator and an optional comment. A footprint can be linked to a schematic component.

```csharp
public interface IPCB_Component : IPCB_Group
```

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

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

## Remarks

Components are defined by footprints, which are stored in a PCB library. When a footprint is placed in the workspace, it is assigned a designator (and optional comment). It is then referred to as a component. A component is composed of primitives (normally tracks, arcs, and pads). The origin in the library editor defines the reference point of a footprint.

The reference point of a component is set by [`XLocation`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#xlocation) and [`YLocation`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#ylocation), inherited from [`IPCB_Group`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md). You can obtain the bounding rectangle of the component and calculate its mid point to rotate the component about its center if desired.

`Rotation` rotates the component about its reference point, therefore assigning `Rotation` and calling [`RotateAroundXY`](#rotatearoundxy) are equivalent only if the point you pass to [`RotateAroundXY`](#rotatearoundxy) is the reference point of the component.

A component is a group object and therefore composes of child objects such as arcs and tracks. You use a group iterator ([`GroupIterator_Create`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#groupiterator_create)) to fetch the child objects for that component.

## Properties

| Property | Type | Access | Description |
| --- | --- | --- | --- |
| [Axis](#axis) | [IPCB_Axis](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Axis.md) | get | The axis of the component at the given index. |
| [AxisCount](#axiscount) | `int` | get | The number of axes of the component. |
| [ChannelOffset](#channeloffset) | `int` | get; set | The `ChannelOffset` represents the Channel Offset parameter for the component. |
| [Comment](#comment) | [IPCB_Text](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Text.md) | get | The comment text object of the component. |
| [CommentAutoPos](#commentautopos) | [TTextAutoposition](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TTextAutoposition.md) | get; set | The position of the comment text relative to the component. |
| [CommentOn](#commenton) | `bool` | get; set | Whether the comment text of the component is visible. |
| [ComponentKind](#componentkind) | [TComponentKind](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/TComponentKind.md) | get; set | The kind of the component, which decides how it takes part in synchronization, electrical checks and the BOM. |
| [DefaultPCB3DModel](#defaultpcb3dmodel) | `string` | get; set | The name of the default PCB 3D model linked to this component. |
| [EnablePartSwapping](#enablepartswapping) | `bool` | get; set | The property denotes the part swapping. |
| [EnablePinSwapping](#enablepinswapping) | `bool` | get; set | The property denotes the pin swapping for the pins of this component. |
| [FlippedOnLayer](#flippedonlayer) | `bool` | get; set | Not supported; reading always returns false, and assigning a value has no effect. |
| [FootprintConfigurableParameters_Encoded](#footprintconfigurableparameters_encoded) | `string` | get; set |  |
| [FootprintConfiguratorName](#footprintconfiguratorname) | `string` | get; set |  |
| [FootprintDescription](#footprintdescription) | `string` | get; set | The description of the component's footprint. |
| [FPGADisplayMode](#fpgadisplaymode) | [TFPGADisplayMode](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TFPGADisplayMode.md) | get; set |  |
| [GroupNum](#groupnum) | `int` | get; set | This property is not used internally. |
| [Height](#height) | `int` | get; set | The height of the component, in internal units (10,000 per mil). |
| [IsBGA](#isbga) | `bool` | get | Whether the component has been recognized as a ball grid array (BGA) package. |
| [ItemGUID](#itemguid) | `string` | get; set |  |
| [ItemRevisionGUID](#itemrevisionguid) | `string` | get; set |  |
| [JumpersVisible](#jumpersvisible) | `bool` | get; set |  |
| [LockStrings](#lockstrings) | `bool` | get; set | Whether the component's name and comment texts are locked, so that they cannot be moved independently of the component. |
| [ModelHash](#modelhash) | `string` | get | A hash of the 3D models in the component's bodies. |
| [Name](#name) | [IPCB_Text](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Text.md) | get | The designator text object of the component. |
| [NameAutoPos](#nameautopos) | [TTextAutoposition](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TTextAutoposition.md) | get; set | The position of the name (designator) text relative to the component. |
| [NameOn](#nameon) | `bool` | get; set | Whether the name (designator) text of the component is visible. |
| [PackageSpecificHash](#packagespecifichash) | `string` | get | A hash value computed from the component's primitives. |
| [Pattern](#pattern) | `string` | get; set | The name of the component's footprint. |
| [Rotation](#rotation) | `double` | get; set | The angle of the component with respect to the horizontal axis, in degrees. |
| [SourceCompDesignItemID](#sourcecompdesignitemid) | `string` | get; set | The design item ID of the source component; [`SourceLibReference`](#sourcelibreference) reads and assigns the same value. |
| [SourceComponentLibrary](#sourcecomponentlibrary) | `string` | get; set | This source library field denotes the integrated library where the PCB component comes from. |
| [SourceDescription](#sourcedescription) | `string` | get; set | This property can include a descriptive account of the reference link to a source component or a device name. |
| [SourceDesignator](#sourcedesignator) | `string` | get; set | This property represents the current designator of the source component from the corresponding schematic. |
| [SourceFootprintLibrary](#sourcefootprintlibrary) | `string` | get; set | The library the component's footprint comes from. |
| [SourceHierarchicalPath](#sourcehierarchicalpath) | `string` | get; set | This property uniquely identifies the source reference path to the PCB component. |
| [SourceLibReference](#sourcelibreference) | `string` | get; set | The same value as [`SourceCompDesignItemID`](#sourcecompdesignitemid); reading and assigning this property reads and assigns [`SourceCompDesignItemID`](#sourcecompdesignitemid). |
| [SourceUniqueId](#sourceuniqueid) | `string` | get; set | Unique IDs (UIDs) are used to match each schematic component to the corresponding PCB component. |
| [VaultGUID](#vaultguid) | `string` | get; set |  |

### Axis

The axis of the component at the given index.

```csharp
IPCB_Axis GetState_Axis(int argI);
```

**Type:** [IPCB_Axis](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Axis.md) · **Access:** read-only · **Index:** `argI` (`int`): The zero-based index of the axis, less than [`AxisCount`](#axiscount).

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

### AxisCount

The number of axes of the component.

```csharp
int GetState_AxisCount();
```

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

### ChannelOffset

The `ChannelOffset` represents the Channel Offset parameter for the component. A channel offset denotes where the component is in a room especially when a room is being copied and a copy is created on the same document. The copies of rooms containing components are created based on their offsets.

```csharp
int GetState_ChannelOffset();
void SetState_ChannelOffset(int argValue);
```

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

### Comment

The comment text object of the component.

```csharp
IPCB_Text GetState_Comment();
```

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

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

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

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

### CommentAutoPos

The position of the comment text relative to the component.

```csharp
TTextAutoposition GetState_CommentAutoPos();
void SetState_CommentAutoPos(TTextAutoposition argValue);
```

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

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

Assigning a value does not move the text; [`ChangeCommentAutoposition`](#changecommentautoposition) sets the position and moves the text.

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

### CommentOn

Whether the comment text of the component is visible.

```csharp
bool GetState_CommentOn();
void SetState_CommentOn(bool argValue);
```

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

### ComponentKind

The kind of the component, which decides how it takes part in synchronization, electrical checks and the BOM.

```csharp
TComponentKind GetState_ComponentKind();
void SetState_ComponentKind(TComponentKind argValue);
```

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

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

`EDP.TComponentKind.eComponentKind_Standard`: these components possess standard electrical properties, are always synchronized and are the type most commonly used on a board.

`EDP.TComponentKind.eComponentKind_Mechanical`: these components do not have electrical properties and will appear in the BOM. They are synchronized if the same components exist on both the schematic and PCB documents. An example is a heatsink.

`EDP.TComponentKind.eComponentKind_Graphical`: these components are not used during synchronization or checked for electrical errors. These components are used, for example, when adding company logos to documents.

`EDP.TComponentKind.eComponentKind_NetTie_BOM`: these components short two or more different nets for routing; they appear in the BOM and are maintained during synchronization.

`EDP.TComponentKind.eComponentKind_NetTie_NoBOM`: these components short two or more different nets for routing; they do not appear in the BOM and are maintained during synchronization.

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

### DefaultPCB3DModel

The name of the default PCB 3D model linked to this component.

```csharp
string GetState_DefaultPCB3DModel();
void SetState_DefaultPCB3DModel(string argValue);
```

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

### EnablePartSwapping

The property denotes the part swapping. Components can have multi-parts and in this case, these multi parts can be swapped if the `EnablePartSwapping` is set to true.

```csharp
bool GetState_EnablePartSwapping();
void SetState_EnablePartSwapping(bool argValue);
```

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

### EnablePinSwapping

The property denotes the pin swapping for the pins of this component. In this case, these pins can be swapped if the `EnablePinSwapping` is set to true.

```csharp
bool GetState_EnablePinSwapping();
void SetState_EnablePinSwapping(bool argValue);
```

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

### FlippedOnLayer

Not supported; reading always returns false, and assigning a value has no effect.

```csharp
bool GetState_FlippedOnLayer();
void SetState_FlippedOnLayer(bool argValue);
```

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

### FootprintConfigurableParameters_Encoded

*No description yet.*

```csharp
string GetState_FootprintConfigurableParameters_Encoded();
void SetState_FootprintConfigurableParameters_Encoded(string argValue);
```

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

### FootprintConfiguratorName

*No description yet.*

```csharp
string GetState_FootprintConfiguratorName();
void SetState_FootprintConfiguratorName(string argValue);
```

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

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

### FootprintDescription

The description of the component's footprint.

```csharp
string GetState_FootprintDescription();
void SetState_FootprintDescription(string argValue);
```

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

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

### FPGADisplayMode

*No description yet.*

```csharp
TFPGADisplayMode GetState_FPGADisplayMode();
void SetState_FPGADisplayMode(TFPGADisplayMode argValue);
```

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

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

### GroupNum

This property is not used internally. Can use for specific purposes such as a tag or an index.

```csharp
int GetState_GroupNum();
void SetState_GroupNum(int argValue);
```

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

### Height

The height of the component, in internal units (10,000 per mil). It is used for the 3D viewer which works out the heights of components before displaying components in a 3D view.

```csharp
int GetState_Height();
void SetState_Height(int argValue);
```

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

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

### IsBGA

Whether the component has been recognized as a ball grid array (BGA) package.

```csharp
bool GetState_IsBGA();
```

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

### ItemGUID

*No description yet.*

```csharp
string GetState_ItemGUID();
void SetState_ItemGUID(string argValue);
```

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

### ItemRevisionGUID

*No description yet.*

```csharp
string GetState_ItemRevisionGUID();
void SetState_ItemRevisionGUID(string argValue);
```

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

### JumpersVisible

*No description yet.*

```csharp
bool GetState_JumpersVisible();
void SetState_JumpersVisible(bool argValue);
```

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

### LockStrings

Whether the component's name and comment texts are locked, so that they cannot be moved independently of the component.

```csharp
bool GetState_LockStrings();
void SetState_LockStrings(bool argValue);
```

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

### ModelHash

A hash of the 3D models in the component's bodies.

```csharp
string GetState_ModelHash();
```

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

The hash covers each model with its origin, rotations and vertical offset. It is an empty string when no component body of the component has a 3D model.

### Name

The designator text object of the component.

```csharp
IPCB_Text GetState_Name();
```

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

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

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

### NameAutoPos

The position of the name (designator) text relative to the component.

```csharp
TTextAutoposition GetState_NameAutoPos();
void SetState_NameAutoPos(TTextAutoposition argValue);
```

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

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

Assigning a value does not move the text; [`ChangeNameAutoposition`](#changenameautoposition) sets the position and moves the text.

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

### NameOn

Whether the name (designator) text of the component is visible.

```csharp
bool GetState_NameOn();
void SetState_NameOn(bool argValue);
```

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

### PackageSpecificHash

A hash value computed from the component's primitives.

```csharp
string GetState_PackageSpecificHash();
```

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

### Pattern

The name of the component's footprint.

```csharp
string GetState_Pattern();
void SetState_Pattern(string argValue);
```

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

Leading and trailing spaces are removed from an assigned value.

### Rotation

The angle of the component with respect to the horizontal axis, in degrees.

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

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

Assigning a different value rotates the component, with its primitives, about its reference point ([`XLocation`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#xlocation), [`YLocation`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#ylocation)) by the difference.

### SourceCompDesignItemID

The design item ID of the source component; [`SourceLibReference`](#sourcelibreference) reads and assigns the same value.

```csharp
string GetState_SourceCompDesignItemID();
void SetState_SourceCompDesignItemID(string argValue);
```

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

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

### SourceComponentLibrary

This source library field denotes the integrated library where the PCB component comes from. Note: When a schematic is transferred to a blank PCB using the Update command, the source reference links for each PCB footprint is populated with source library path names.

```csharp
string GetState_SourceComponentLibrary();
void SetState_SourceComponentLibrary(string argValue);
```

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

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

### SourceDescription

This property can include a descriptive account of the reference link to a source component or a device name.

```csharp
string GetState_SourceDescription();
void SetState_SourceDescription(string argValue);
```

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

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

### SourceDesignator

This property represents the current designator of the source component from the corresponding schematic.

```csharp
string GetState_SourceDesignator();
void SetState_SourceDesignator(string argValue);
```

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

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

### SourceFootprintLibrary

The library the component's footprint comes from.

```csharp
string GetState_SourceFootprintLibrary();
void SetState_SourceFootprintLibrary(string argValue);
```

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

Footprints are stored in PCB library files or integrated libraries, which can be edited using the PCB Library Editor to create new footprints or edit existing ones. [`LoadCompFromLibrary`](#loadcompfromlibrary) reads the footprint from this library when `Pattern` is a plain footprint name.

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

### SourceHierarchicalPath

This property uniquely identifies the source reference path to the PCB component. The path can be multi-level depending on whether it is a multi channel (sheet symbols) or a normal design (schematic sheets).

```csharp
string GetState_SourceHierarchicalPath();
void SetState_SourceHierarchicalPath(string argValue);
```

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

### SourceLibReference

The same value as [`SourceCompDesignItemID`](#sourcecompdesignitemid); reading and assigning this property reads and assigns [`SourceCompDesignItemID`](#sourcecompdesignitemid).

```csharp
string GetState_SourceLibReference();
void SetState_SourceLibReference(string argValue);
```

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

### SourceUniqueId

Unique IDs (UIDs) are used to match each schematic component to the corresponding PCB component.

```csharp
string GetState_SourceUniqueId();
void SetState_SourceUniqueId(string argValue);
```

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

The Unique Identifier (UID) is a system generated value that uniquely identifies the source component.

### VaultGUID

*No description yet.*

```csharp
string GetState_VaultGUID();
void SetState_VaultGUID(string argValue);
```

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

## Methods

| Method | Returns | Description |
| --- | --- | --- |
| [AddAxis](#addaxis) | [IPCB_Axis](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Axis.md) | Adds a new axis to the component and returns it. |
| [AutoPosition_NameComment](#autoposition_namecomment) | `void` | Places the name and the comment of the component at their automatic positions. |
| [AutoPosition_NameComment_APILike](#autoposition_namecomment_apilike) | `void` |  |
| [BoundingRectangleNoNameComment](#boundingrectanglenonamecomment) | [CoordRect](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/CoordRect.md) | Returns the bounding rectangle of the component without its name and comment texts. |
| [BoundingRectangleNoNameCommentForSignals](#boundingrectanglenonamecommentforsignals) | [CoordRect](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/CoordRect.md) | Returns the bounding rectangle of the component's tracks, arcs, pads and regions, without its name and comment texts. |
| [ChangeAutopositionNameComment](#changeautopositionnamecomment) | `void` | Places the name and the comment again at their automatic positions ([`NameAutoPos`](#nameautopos), [`CommentAutoPos`](#commentautopos)). |
| [ChangeCommentAutoposition](#changecommentautoposition) | `bool` | Sets [`CommentAutoPos`](#commentautopos) to the given position and moves the comment text there. |
| [ChangeNameAutoposition](#changenameautoposition) | `bool` | Sets [`NameAutoPos`](#nameautopos) to the given position and moves the name text there. |
| [ClearAxes](#clearaxes) | `void` | Removes all axes from the component. |
| [FlipComponent](#flipcomponent) | `void` | Moves the component from the top layer to the bottom layer, or from the bottom layer to the top layer. |
| [Getstate_PadByName](#getstate_padbyname) | [IPCB_Primitive](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md) | Returns the first pad of the component with the given name, or null when the component has no such pad. |
| [IsConfigurableFootprint](#isconfigurablefootprint) | `bool` |  |
| [IsFitted](#isfitted) | `bool` | Returns whether the component is fitted in the current variant of the board. |
| [IsPackageEqual](#ispackageequal) | `bool` | Returns whether the given component has the same package as this component, comparing their primitives. |
| [IsPackageEqualEx](#ispackageequalex) | `bool` | Returns whether the given component has the same package as this component, using the given comparison options. |
| [LoadCompFromLibrary](#loadcompfromlibrary) | `bool` | Reloads the component's primitives from the library footprint named by `Pattern`. |
| [LoadFromLibrary](#loadfromlibrary) | `bool` | Loads the component's primitives from the library footprint described by a parameter string. |
| [Rebuild](#rebuild) | `void` | Reloads the component from the library footprint named by `Pattern` and applies the component's rotation again. |
| [ResetDisplacement](#resetdisplacement) | `void` | Resets the component's displacement to the identity transformation. |
| [RotateAroundXY](#rotatearoundxy) | `void` | Rotates the component about a point. |
| [SaveModelToFile](#savemodeltofile) | `bool` | Saves the component's 3D model to a file. |
| [SaveModelToFileAsPart](#savemodeltofileaspart) | `bool` | Saves the component's 3D model to a file as a part. |
| [SaveModelToOccDoc](#savemodeltooccdoc) | `bool` | Writes the component's 3D model into the given document. |
| [SetState_XSizeYSize_1](#setstate_xsizeysize_1) | `bool` |  |

### AddAxis

Adds a new axis to the component and returns it.

```csharp
IPCB_Axis AddAxis();
```

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

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

### AutoPosition_NameComment

Places the name and the comment of the component at their automatic positions.

```csharp
void AutoPosition_NameComment();
```

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

A name or comment whose position ([`NameAutoPos`](#nameautopos), [`CommentAutoPos`](#commentautopos)) is `TTextAutoposition.eAutoPos_Manual` is placed at the top left and keeps its manual setting.

### AutoPosition_NameComment_APILike

*No description yet.*

```csharp
void AutoPosition_NameComment_APILike();
```

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

### BoundingRectangleNoNameComment

Returns the bounding rectangle of the component without its name and comment texts.

```csharp
CoordRect BoundingRectangleNoNameComment();
```

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

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

### BoundingRectangleNoNameCommentForSignals

Returns the bounding rectangle of the component's tracks, arcs, pads and regions, without its name and comment texts.

```csharp
CoordRect BoundingRectangleNoNameCommentForSignals();
```

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

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

A pad contributes its shapes on the top and the bottom layer. When the component has none of these primitives, the rectangle is a 10 mil square centered on the reference point.

### ChangeAutopositionNameComment

Places the name and the comment again at their automatic positions ([`NameAutoPos`](#nameautopos), [`CommentAutoPos`](#commentautopos)).

```csharp
void ChangeAutopositionNameComment();
```

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

A name or comment whose position is `TTextAutoposition.eAutoPos_Manual` is left where it is.

### ChangeCommentAutoposition

Sets [`CommentAutoPos`](#commentautopos) to the given position and moves the comment text there.

```csharp
bool ChangeCommentAutoposition(TTextAutoposition argValue);
bool ChangeCommentAutoposition(int argValue);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argValue` | [TTextAutoposition](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TTextAutoposition.md) | value | The position of the comment text relative to the component. |

**Returns:** `bool`

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

While [`CommentOn`](#commenton) is false the position is only stored and the text is not moved. Returns false when the text could not be placed, or when the comment is hidden and the position is `TTextAutoposition.eAutoPos_Manual`.

### ChangeNameAutoposition

Sets [`NameAutoPos`](#nameautopos) to the given position and moves the name text there.

```csharp
bool ChangeNameAutoposition(TTextAutoposition argValue);
bool ChangeNameAutoposition(int argValue);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argValue` | [TTextAutoposition](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TTextAutoposition.md) | value | The position of the name text relative to the component. |

**Returns:** `bool`

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

While [`NameOn`](#nameon) is false the position is only stored and the text is not moved. Returns false when the text could not be placed, or when the name is hidden and the position is `TTextAutoposition.eAutoPos_Manual`.

### ClearAxes

Removes all axes from the component.

```csharp
void ClearAxes();
```

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

### FlipComponent

Moves the component from the top layer to the bottom layer, or from the bottom layer to the top layer.

```csharp
void FlipComponent();
```

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

A component on any other layer is left unchanged.

### Getstate_PadByName

Returns the first pad of the component with the given name, or null when the component has no such pad.

```csharp
IPCB_Primitive Getstate_PadByName(string argS);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argS` | `string` | value | The pad name to look for; the comparison is case-sensitive. |

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

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

### IsConfigurableFootprint

*No description yet.*

```csharp
bool IsConfigurableFootprint();
```

**Returns:** `bool`

### IsFitted

Returns whether the component is fitted in the current variant of the board.

```csharp
bool IsFitted();
```

**Returns:** `bool`

### IsPackageEqual

Returns whether the given component has the same package as this component, comparing their primitives.

```csharp
bool IsPackageEqual(IPCB_Component argComp);
bool IsPackageEqual(object argComp);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argComp` | [IPCB_Component](#) | value | The component to compare with. |

**Returns:** `bool`

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

Returns false when the given component is null.

### IsPackageEqualEx

Returns whether the given component has the same package as this component, using the given comparison options.

```csharp
bool IsPackageEqualEx(IPCB_Component argComp, TPackageCompareOptionSet argOptions);
bool IsPackageEqualEx(object argComp, ITransportSet argOptions);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argComp` | [IPCB_Component](#) | value | The component to compare with. |
| `argOptions` | [TPackageCompareOptionSet](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TPackageCompareOptionSet.md) | value | The comparison options. |

**Returns:** `bool`

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

Returns false when the given component is null. [`IsPackageEqual`](#ispackageequal) compares with no options.

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

### LoadCompFromLibrary

Reloads the component's primitives from the library footprint named by `Pattern`.

```csharp
bool LoadCompFromLibrary();
```

**Returns:** `bool`

Returns true when it succeeds.

When `Pattern` is a plain footprint name, the footprint is read from the library file in [`SourceFootprintLibrary`](#sourcefootprintlibrary); when it cannot be loaded from there, the open library documents are searched. The component keeps its location, layer and rotation. It takes [`SourceFootprintLibrary`](#sourcefootprintlibrary), [`FootprintDescription`](#footprintdescription), [`DefaultPCB3DModel`](#defaultpcb3dmodel), [`VaultGUID`](#vaultguid), [`ItemGUID`](#itemguid), [`ItemRevisionGUID`](#itemrevisionguid) and [`ComponentKind`](#componentkind) from the library footprint, and `Height` when the footprint's height is not 0.

### LoadFromLibrary

Loads the component's primitives from the library footprint described by a parameter string.

```csharp
bool LoadFromLibrary(string argParams);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argParams` | `string` | value | The parameters that identify the library and the footprint, as `Name=Value` pairs separated by `\|`, for example `FileName=<library path>\|Footprint=<footprint name>`. |

**Returns:** `bool`

Returns true when it succeeds.

The SDK examples create a component with [`IPCB_ServerInterface.PCBObjectFactory`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_ServerInterface.md#pcbobjectfactory), assign its `Board`, call this method with `FileName=<library path>|Footprint=<footprint name>`, then set its layer and location and add it to the board with [`IPCB_Board.AddPCBObject`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Board.md#addpcbobject).

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

### Rebuild

Reloads the component from the library footprint named by `Pattern` and applies the component's rotation again.

```csharp
void Rebuild();
```

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

### ResetDisplacement

Resets the component's displacement to the identity transformation.

```csharp
void ResetDisplacement();
```

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

### RotateAroundXY

Rotates the component 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`)

The component's primitives, its reference point ([`XLocation`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#xlocation), [`YLocation`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#ylocation)) and its `Rotation` change by the rotation. To rotate the component in place, pass its reference point, or assign `Rotation`.

**See also:** [IPCB_Component.Rotation](#rotation)

### SaveModelToFile

Saves the component's 3D model to a file.

```csharp
bool SaveModelToFile(string argFullPath);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argFullPath` | `string` | value | The full path of the file to write. |

**Returns:** `bool`

Whether the model is saved as a part depends on a PCB editor setting; use [`SaveModelToFileAsPart`](#savemodeltofileaspart) to always save it as a part.

The SDK examples load a footprint with [`LoadFromLibrary`](#loadfromlibrary), add the component to a board and call this method with a `.stp` path to write a STEP file.

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

### SaveModelToFileAsPart

Saves the component's 3D model to a file as a part.

```csharp
bool SaveModelToFileAsPart(string argFullPath);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argFullPath` | `string` | value | The full path of the file to write. |

**Returns:** `bool`

### SaveModelToOccDoc

Writes the component's 3D model into the given document.

```csharp
bool SaveModelToOccDoc(IOCCDocument argOccDoc);
bool SaveModelToOccDoc(object argOccDoc);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argOccDoc` | [IOCCDocument](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IOCCDocument.md) | value | The document that receives the model. |

**Returns:** `bool`

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

### SetState_XSizeYSize_1

*No description yet.*

```csharp
bool SetState_XSizeYSize_1();
```

**Returns:** `bool`

## Inherited members

- From [IPCB_Group](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md): [AddPCBObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#addpcbobject), [FastSetState_XSizeYSize](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#fastsetstate_xsizeysize), [FreePrimitives](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#freeprimitives), [GetPrimitiveAt](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#getprimitiveat), [GetPrimitiveCount](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#getprimitivecount), [GroupIterator_Create](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#groupiterator_create), [GroupIterator_Destroy](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#groupiterator_destroy), [LayerUsed](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#layerused), [PrimitiveLock](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#primitivelock), [RemovePCBObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#removepcbobject), [ReplicateWithChildren](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#replicatewithchildren), [SetState_LayersUsedArray](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#setstate_layersusedarray), [SetState_XSizeYSize](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#setstate_xsizeysize), [XLocation](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#xlocation), [YLocation](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md#ylocation)
- From [IPCB_Primitive](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md): [AllowGlobalEdit](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#allowglobaledit), [BeginModify](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#beginmodify), [Board](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#board), [BoundingRectangle](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#boundingrectangle), [BoundingRectangleChildren](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#boundingrectanglechildren), [BoundingRectangleForPainting](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#boundingrectangleforpainting), [BoundingRectangleForSelection](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#boundingrectangleforselection), [CancelModify](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#cancelmodify), [Component](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#component), [Coordinate](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#coordinate), [DescriptorString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#descriptorstring), [DetailString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#detailstring), [Dimension](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#dimension), [DrawAsPreview](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#drawaspreview), [DRCError](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#drcerror), [Enabled](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled), [Enabled_Direct](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled_direct), [Enabled_vComponent](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled_vcomponent), [Enabled_vCoordinate](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled_vcoordinate), [Enabled_vDimension](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled_vdimension), [Enabled_vNet](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled_vnet), [Enabled_vPolygon](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled_vpolygon), [EnableDraw](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabledraw), [EndModify](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#endmodify), [Export_ToParameters](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#export_toparameters), [FlipXY](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#flipxy), [GraphicallyInvalidate](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#graphicallyinvalidate), [Handle](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#handle), [Identifier](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#identifier), [InBoard](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#inboard), [InComponent](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#incomponent), [InCoordinate](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#incoordinate), [Index](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#index), [InDimension](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#indimension), [InNet](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#innet), [InPolygon](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#inpolygon), [InSelectionMemory](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#inselectionmemory), [IsAssyTestPoint_Bottom](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#isassytestpoint_bottom), [IsAssyTestPoint_Top](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#isassytestpoint_top), [IsElectricalPrim](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#iselectricalprim), [IsFreePrimitive](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#isfreeprimitive), [IsHidden](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#ishidden), [IsKeepout](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#iskeepout), [IsPreRoute](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#ispreroute), [IsSaveable](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#issaveable), [IsTenting](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#istenting), [IsTenting_Bottom](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#istenting_bottom), [IsTenting_Top](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#istenting_top), [IsTestPoint_Bottom](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#istestpoint_bottom), [IsTestPoint_Top](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#istestpoint_top), [Layer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#layer), [MiscFlag1](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#miscflag1), [MiscFlag2](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#miscflag2), [MiscFlag3](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#miscflag3), [Moveable](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#moveable), [MoveByXY](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#movebyxy), [MoveToXY](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#movetoxy), [Net](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#net), [ObjectID](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#objectid), [ObjectIDString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#objectidstring), [PadCacheRobotFlag](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#padcacherobotflag), [PasteMaskExpansion](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#pastemaskexpansion), [Polygon](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#polygon), [PolygonOutline](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#polygonoutline), [PowerPlaneClearance](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#powerplaneclearance), [PowerPlaneConnectStyle](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#powerplaneconnectstyle), [PowerPlaneReliefExpansion](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#powerplanereliefexpansion), [Preview](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#preview), [ReliefAirGap](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#reliefairgap), [ReliefConductorWidth](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#reliefconductorwidth), [ReliefEntries](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#reliefentries), [Replicate](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#replicate), [RequiredParamterSpace](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#requiredparamterspace), [RotateBy](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#rotateby), [Selected](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#selected), [SolderMaskExpansion](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#soldermaskexpansion), [SwapLayerPairs](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#swaplayerpairs), [TearDrop](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#teardrop), [UnionIndex](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#unionindex), [UniqueId](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#uniqueid), [UniqueID](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#uniqueid-1), [Used](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#used), [UserRouted](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#userrouted), [V7Layer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#v7layer), [ViewableObjectID](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#viewableobjectid)

## Returned by

[IPCB_Board.GetPcbComponentByRefDes](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Board.md#getpcbcomponentbyrefdes), [IPCB_FullComponent.GetFootprint](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_FullComponent.md#getfootprint), [IPCB_Primitive.Component](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#component)

## Accepted by

[IPCB_ComponentPainterView.SetComponentByHandle](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_ComponentPainterView.md#setcomponentbyhandle), [IFootprintConfigurator.CreateFootprint](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/IFootprintConfigurator.md#createfootprint)

## Examples

Used in the SDK examples: [Extension_BOMManager](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_BOMManager/Source%20Code/PcbBom.cs#L43), [Extension_BOMManager](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_BOMManager/Source%20Code/PcbComponent.cs#L13), [Extension_PCBUndoRedo](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_PCBUndoRedo/Source%20Code/Commands.cs#L47), [Extension_PcbLibComponentToSTEP](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_PcbLibComponentToSTEP/Source%20Code/Commands.cs#L43), [Extension_PlaceAndMovePcbComponent](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_PlaceAndMovePcbComponent/Source%20Code/Commands.cs#L34).
