
# IPCB_LibComponent interface

A footprint (library component) in a PCB library document.

```csharp
public interface IPCB_LibComponent : 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

A PCB library document holds a list of footprints, the "pages" of the library, and each of them is represented by an `IPCB_LibComponent`. Get them from the [`IPCB_Library`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Library.md): with [`IPCB_Library.GetComponent`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Library.md#getcomponent), [`IPCB_Library.GetComponentByName`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Library.md#getcomponentbyname), or with an [`IPCB_LibraryIterator`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LibraryIterator.md) created by [`IPCB_Library.LibraryIterator_Create`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Library.md#libraryiterator_create) and released by [`IPCB_Library.LibraryIterator_Destroy`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Library.md#libraryiterator_destroy). The footprint in focus in the library editor is [`IPCB_Library.CurrentComponent`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Library.md#currentcomponent).

`IPCB_LibComponent` is derived from [`IPCB_Group`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Group.md). A footprint is composed of child objects such as pads and tracks, which you fetch with the footprint's own [`IPCB_GroupIterator`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_GroupIterator.md).

The primitives of the current footprint are placed on the library's board ([`IPCB_Library.Board`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Library.md#board)) for display and editing; [`TransferAllPrimitivesOntoBoard`](#transferallprimitivesontoboard) and [`TransferAllPrimitivesBackFromBoard`](#transferallprimitivesbackfromboard) move them between the footprint and that board.

## Example

Write the name, height and description of every footprint in the current PCB library to a CSV report.

```csharp
using System.Collections.Generic;
using System.IO;
using DXP;
using PCB;

IPCB_Library currentLib = PCB.GlobalVars.PCBServer?.GetCurrentPCBLibrary();
if (currentLib == null)
    return;

string fileName = Path.Combine(Path.GetDirectoryName(currentLib.GetState_Board().GetState_FileName()), "PCBLib_Report.csv");
string s = "";
var footprintList = new List<string>();
IPCB_LibraryIterator footprintIterator = currentLib.LibraryIterator_Create();
footprintIterator.SetState_FilterAll();
try
{
    var footprint = footprintIterator.FirstPCBObject() as IPCB_LibComponent;
    while (footprint != null)
    {
        // The height is reported in mils when the display unit is metric,
        // and in millimeters otherwise.
        if (currentLib.GetState_Board().GetState_DisplayUnit() == TUnit.eMetric)
            s = footprint.GetState_Pattern()
                + ","
                + EDP.Utils.CoordToMils(footprint.GetState_Height())
                + ","
                + footprint.GetState_Description();
        else
            s = footprint.GetState_Pattern()
                + ","
                + EDP.Utils.CoordToMMs(footprint.GetState_Height())
                + ","
                + footprint.GetState_Description();
        footprintList.Add(s);
        footprint = footprintIterator.NextPCBObject() as IPCB_LibComponent;
    }
}
finally
{
    currentLib.LibraryIterator_Destroy(ref footprintIterator);
    File.WriteAllLines(fileName, footprintList);
}

// Display the saved report.
IClient client = DXP.GlobalVars.Client;
IServerDocument reportDocument = client.OpenDocument("Text", fileName);
if (reportDocument != null)
    client.ShowDocument(reportDocument);
```

## Properties

| Property | Type | Access | Description |
| --- | --- | --- | --- |
| [Description](#description) | `string` | get; set | The description of the footprint. |
| [Height](#height) | `int` | get; set | The height of the footprint, in internal units (10,000 per mil). |
| [ItemGUID](#itemguid) | `string` | get; set | The GUID of the server Item that the footprint is linked to for release. |
| [ItemRevisionGUID](#itemrevisionguid) | `string` | get; set | The GUID of the Item revision that the footprint is linked to for release. |
| [Pattern](#pattern) | `string` | get; set | The name (pattern) of the footprint. |

### Description

The description of the footprint.

```csharp
string GetState_Description();
void SetState_Description(string argValue);
```

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

### Height

The height of the footprint, in internal units (10,000 per mil).

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

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

### ItemGUID

The GUID of the server Item that the footprint is linked to for release.

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

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

### ItemRevisionGUID

The GUID of the Item revision that the footprint is linked to for release.

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

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

### Pattern

The name (pattern) of the 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.

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

## Methods

| Method | Returns | Description |
| --- | --- | --- |
| [CopyTo](#copyto) | `void` | Copies the footprint's primitives and properties into another footprint. |
| [ReleasableInterface](#releasableinterface) | `object` |  |
| [SaveModelToFile](#savemodeltofile) | `bool` | Exports the 3D models of the footprint's 3D bodies to a file. |
| [SaveToFile](#savetofile) | `void` | Saves the footprint on its own to a PCB library file. |
| [TransferAllPrimitivesBackFromBoard](#transferallprimitivesbackfromboard) | `void` | Moves the primitives on the library's board into the footprint; the reverse of [`TransferAllPrimitivesOntoBoard`](#transferallprimitivesontoboard). |
| [TransferAllPrimitivesOntoBoard](#transferallprimitivesontoboard) | `void` | Places the footprint's primitives on the library's board, where they are displayed and edited. |

### CopyTo

Copies the footprint's primitives and properties into another footprint.

```csharp
void CopyTo(IPCB_LibComponent argP, TCopyMode argCopyMode);
void CopyTo(object argP, int argCopyMode);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argP` | [IPCB_LibComponent](#) | value | The footprint to copy into. |
| `argCopyMode` | [TCopyMode](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TCopyMode.md) | value | The copy mode used to replicate each primitive. |

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

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

Each child primitive of this footprint is replicated with the given copy mode and added to the target footprint. The description, height, [`ItemGUID`](#itemguid) and [`ItemRevisionGUID`](#itemrevisionguid) are copied to the target as well.

### ReleasableInterface

*No description yet.*

```csharp
object ReleasableInterface();
```

**Returns:** `object`

### SaveModelToFile

Exports the 3D models of the footprint's 3D bodies to a file.

```csharp
bool SaveModelToFile(string argFilename, bool argSaveAsPart);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argFilename` | `string` | value | The path of the file to write. |
| `argSaveAsPart` | `bool` | value | `false` exports the models to a STEP file; `true` saves them as a part. |

**Returns:** `bool`

The models are positioned relative to the footprint's location. Nothing is written when none of the footprint's 3D bodies has a model. The returned value is not set and does not indicate whether a file was written.

### SaveToFile

Saves the footprint on its own to a PCB library file.

```csharp
void SaveToFile(string argVFSAddress);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argVFSAddress` | `string` | value | The path of the PCB library file to write. |

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

The file holds a library that contains only this footprint. When the footprint is the current footprint of its library, its primitives are taken back from the library's board for the save and placed on the board again afterwards.

### TransferAllPrimitivesBackFromBoard

Moves the primitives on the library's board into the footprint; the reverse of [`TransferAllPrimitivesOntoBoard`](#transferallprimitivesontoboard).

```csharp
void TransferAllPrimitivesBackFromBoard();
```

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

The primitives on the board, on all layers, become child objects of the footprint and are deselected. They are moved by the negative of the board origin, so that the footprint's coordinates are relative to the board origin.

### TransferAllPrimitivesOntoBoard

Places the footprint's primitives on the library's board, where they are displayed and edited.

```csharp
void TransferAllPrimitivesOntoBoard();
```

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

The primitives are moved by 50,000 mils in X and Y, and the board origin is set to that point, so that the footprint's coordinates are relative to the board origin.

## 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_Library.AddComponent](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Library.md#addcomponent), [IPCB_Library.CreateNewComponent](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Library.md#createnewcomponent), [IPCB_Library.CurrentComponent](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Library.md#currentcomponent), [IPCB_Library.GetComponent](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Library.md#getcomponent), [IPCB_Library.GetComponentByName](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Library.md#getcomponentbyname), [IPCB_ServerInterface.CreatePCBLibComp](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_ServerInterface.md#createpcblibcomp), [IPCB_ServerInterface.LoadCompFromLibrary](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_ServerInterface.md#loadcompfromlibrary)

## Accepted by

[IPCB_ComponentPainterView.SetComponentByHandle_1](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_ComponentPainterView.md#setcomponentbyhandle_1), [IPCB_Library.DeRegisterComponent](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Library.md#deregistercomponent), [IPCB_Library.RegisterComponent](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Library.md#registercomponent), [IPCB_Library.RemoveComponent](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Library.md#removecomponent), [IPCB_ServerInterface.DestroyPCBLibComp](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_ServerInterface.md#destroypcblibcomp)

## Examples

Used in the SDK examples: [Extension_CreatePCBLib](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_CreatePCBLib/Source%20Code/Commands.cs#L46), [Extension_PcbLibComponentToSTEP](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_PcbLibComponentToSTEP/Source%20Code/Commands.cs#L40), [Extension_PcbLibToImage](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_PcbLibToImage/Source%20Code/Commands.cs#L52).
