
# IComponent interface

The [`IChannelClass`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IChannelClass.md) interface is a PCB Channel class object interface for an existing Channel Class on a PCB document. An existing Channel (room) class contains members of specific components.

```csharp
public interface IComponent : IPart
```

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

**Inherits:** [IDMObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md) → [IPart](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md)

## Remarks

Each component within a Channel Class object can either be a member or not. The 'All Components' Channel Class exists in every PCB document by default, it includes all Components in the document.

It is not possible to change which components are members of that Channel class, but the user has full control over which components are members of any other Channel classes (which are created and named by the User)

## Methods

| Method | Returns | Description |
| --- | --- | --- |
| [DM_DoCrossProbe](#dm_docrossprobe) | `void` |  |
| [DM_IncrementallyUpdatePhysicalDesignators](#dm_incrementallyupdatephysicaldesignators) | `void` |  |
| [DM_NexusDeviceId](#dm_nexusdeviceid) | `string` |  |
| [DM_PhysicalComponentCount](#dm_physicalcomponentcount) | `int` | The method returns the number of physical components. |
| [DM_PhysicalComponents](#dm_physicalcomponents) | [IComponent](#) | The method returns the indexed physical component. |
| [DM_PhysicalPath](#dm_physicalpath) | `string` | The method returns the full physical path for this component. |
| [DM_SubPartCount](#dm_subpartcount) | `int` | The method returns the number of parts for this multi-part component. |
| [DM_SubParts](#dm_subparts) | [IPart](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md) | The method returns the indexed sub-part of a multi-part component. |
| [DM_UniqueId_1](#dm_uniqueid_1) | `string` |  |
| [DM_UniqueIdName_1](#dm_uniqueidname_1) | `string` |  |
| [DM_UniqueIdPath_1](#dm_uniqueidpath_1) | `string` |  |

### DM_DoCrossProbe

*No description yet.*

```csharp
void DM_DoCrossProbe();
```

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

### DM_IncrementallyUpdatePhysicalDesignators

*No description yet.*

```csharp
void DM_IncrementallyUpdatePhysicalDesignators(bool argNewHasDesignatorRecord, bool argNewDesignatorLocked, string argNewPhysicalDesignator);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argNewHasDesignatorRecord` | `bool` | value |
| `argNewDesignatorLocked` | `bool` | value |
| `argNewPhysicalDesignator` | `string` | value |

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

### DM_NexusDeviceId

*No description yet.*

```csharp
string DM_NexusDeviceId();
```

**Returns:** `string`

### DM_PhysicalComponentCount

The method returns the number of physical components.

```csharp
int DM_PhysicalComponentCount();
```

**Returns:** `int`

### DM_PhysicalComponents

The method returns the indexed physical component. Use this in conjunction with the [`DM_PhysicalComponentCount`](#dm_physicalcomponentcount) method.

```csharp
IComponent DM_PhysicalComponents(int argIndex);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argIndex` | `int` | value |

**Returns:** [IComponent](#)

Extension method of `IComponentHelper` (`using EDP;`).

### DM_PhysicalPath

The method returns the full physical path for this component. For example the string can consist of the schematic filename \ channel name and instance.

```csharp
string DM_PhysicalPath();
```

**Returns:** `string`

### DM_SubPartCount

The method returns the number of parts for this multi-part component. A standalone component returns 1 (only one part for a standalone component).

```csharp
int DM_SubPartCount();
```

**Returns:** `int`

### DM_SubParts

The method returns the indexed sub-part of a multi-part component. Use the [`DM_SubPartCount`](#dm_subpartcount) method.

```csharp
IPart DM_SubParts(int argIndex);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argIndex` | `int` | value |

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

Extension method of `IComponentHelper` (`using EDP;`).

### DM_UniqueId_1

*No description yet.*

```csharp
string DM_UniqueId_1();
```

**Returns:** `string`

### DM_UniqueIdName_1

*No description yet.*

```csharp
string DM_UniqueIdName_1();
```

**Returns:** `string`

### DM_UniqueIdPath_1

*No description yet.*

```csharp
string DM_UniqueIdPath_1();
```

**Returns:** `string`

## Inherited members

- From [IPart](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md): [DM_AddConfigurationParameters](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_addconfigurationparameters), [DM_AssignedDesignator](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_assigneddesignator), [DM_CalculatedDesignator](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_calculateddesignator), [DM_CenterLocationX](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_centerlocationx), [DM_CenterLocationY](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_centerlocationy), [DM_ChannelOffset](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_channeloffset), [DM_ChildProjectSheet](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_childprojectsheet), [DM_ChildVHDLEntity](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_childvhdlentity), [DM_Comment](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_comment), [DM_ComponentKind](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_componentkind), [DM_ConfigurationParameters](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_configurationparameters), [DM_ConfiguratorName](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_configuratorname), [DM_CurrentImplementation](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_currentimplementation), [DM_Description](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_description), [DM_DesignatorLocationX](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_designatorlocationx), [DM_DesignatorLocationY](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_designatorlocationy), [DM_DesignatorLocked](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_designatorlocked), [DM_DisplayMode](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_displaymode), [DM_FirstPinLocationX](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_firstpinlocationx), [DM_FirstPinLocationY](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_firstpinlocationy), [DM_Footprint](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_footprint), [DM_FullLogicalDesignator](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_fulllogicaldesignator), [DM_FullLogicalDesignatorForDisplay](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_fulllogicaldesignatorfordisplay), [DM_FullPhysicalDesignator](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_fullphysicaldesignator), [DM_FullPhysicalDesignatorForDisplay](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_fullphysicaldesignatorfordisplay), [DM_Height](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_height), [DM_ImplementationCount](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_implementationcount), [DM_Implementations](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_implementations), [DM_InstanceCount](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_instancecount), [DM_Layer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_layer), [DM_LibraryReference](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_libraryreference), [DM_LogicalDesignator](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_logicaldesignator), [DM_LogicalOwnerDocument](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_logicalownerdocument), [DM_MaxPartCount](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_maxpartcount), [DM_NewDesignator](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_newdesignator), [DM_NewPartId](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_newpartid), [DM_PartID](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_partid), [DM_PartIdLocked](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_partidlocked), [DM_PartType](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_parttype), [DM_PhysicalDesignator](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_physicaldesignator), [DM_PinCount](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_pincount), [DM_Pins](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_pins), [DM_ReferenceLocationX](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_referencelocationx), [DM_ReferenceLocationY](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_referencelocationy), [DM_Rotation](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_rotation), [DM_SetExternalPartHandle](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_setexternalparthandle), [DM_SourceDesignator](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_sourcedesignator), [DM_SourceHierarchicalPath](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_sourcehierarchicalpath), [DM_SourceLibraryName](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_sourcelibraryname), [DM_SourceUniqueId](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_sourceuniqueid), [DM_SubProject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_subproject), [DM_UniqueId](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_uniqueid), [DM_UniqueIdName](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_uniqueidname), [DM_UniqueIdPath](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md#dm_uniqueidpath)
- From [IDMObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md): [DM_CalculateParameterValue](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_calculateparametervalue), [DM_CurrentSheetInstanceNumber](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_currentsheetinstancenumber), [DM_FullCrossProbeString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_fullcrossprobestring), [DM_GeneralField](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_generalfield), [DM_GetVCSProject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_getvcsproject), [DM_ImageIndex](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_imageindex), [DM_IsFormulaString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_isformulastring), [DM_IsInferredObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_isinferredobject), [DM_LocationString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_locationstring), [DM_LocationX](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_locationx), [DM_LocationY](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_locationy), [DM_LongDescriptorString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_longdescriptorstring), [DM_NetIndex_Flat](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_netindex_flat), [DM_NetIndex_Sheet](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_netindex_sheet), [DM_NetIndex_SubNet](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_netindex_subnet), [DM_ObjectKindString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_objectkindstring), [DM_ObjectKindStringForCrossProbe](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_objectkindstringforcrossprobe), [DM_OwnerDocument](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_ownerdocument), [DM_OwnerDocumentFullPath](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_ownerdocumentfullpath), [DM_OwnerDocumentName](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_ownerdocumentname), [DM_ParameterCount](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_parametercount), [DM_Parameters](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_parameters), [DM_PcbHandle](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_pcbhandle), [DM_PCBObjectHandle](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_pcbobjecthandle), [DM_PCBObjectInterface](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_pcbobjectinterface), [DM_PrimaryCrossProbeString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_primarycrossprobestring), [DM_SchHandle](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_schhandle), [DM_SCHObjectHandle](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_schobjecthandle), [DM_SCHObjectInterface](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_schobjectinterface), [DM_SecondaryCrossProbeString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_secondarycrossprobestring), [DM_SetVCSProject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_setvcsproject), [DM_SheetIndex_Logical](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_sheetindex_logical), [DM_SheetIndex_Physical](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_sheetindex_physical), [DM_ShortDescriptorString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_shortdescriptorstring), [DM_ValidForNavigation](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_validfornavigation), [DM_VHDLEntity](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md#dm_vhdlentity)

## Returned by

[IComponentMappings.DM_MatchedSourceComponent](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IComponentMappings.md#dm_matchedsourcecomponent), [IComponentMappings.DM_MatchedTargetComponent](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IComponentMappings.md#dm_matchedtargetcomponent), [IComponentMappings.DM_UnmatchedSourceComponent](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IComponentMappings.md#dm_unmatchedsourcecomponent), [IComponentMappings.DM_UnmatchedTargetComponent](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IComponentMappings.md#dm_unmatchedtargetcomponent), [IDocument.DM_Components](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDocument.md#dm_components), [IDocument.DM_UniqueComponents](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDocument.md#dm_uniquecomponents)

## Accepted by

[IChangeManager.DM_CreateECO_SwapPin](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IChangeManager.md#dm_createeco_swappin), [IComponentVariation.DM_CalculatedAlternatePart](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IComponentVariation.md#dm_calculatedalternatepart), [IHighlightedDocument.HL_Register_Component](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IHighlightedDocument.md#hl_register_component), [IParameterVariation.DM_CalculatedValue](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IParameterVariation.md#dm_calculatedvalue), [IProjectProperties.DM_DesignatorRecord_ECOChangeComponentDesignator](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IProjectProperties.md#dm_designatorrecord_ecochangecomponentdesignator)

## Examples

Used in the SDK examples: [Extension_AddVariant](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_AddVariant/Source%20Code/Commands.cs#L59), [Extension_BOMManager](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_BOMManager/Source%20Code/ProjectBom.cs#L106), [Extension_BOMManager](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_BOMManager/Source%20Code/ProjectComponent.cs#L12), [Extension_CreateVariantComponent](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_CreateVariantComponent/Source%20Code/Commands.cs#L56), [Extension_HierarchicalDesign](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_HierarchicalDesign/Source%20Code/Commands.cs#L38).
