
# IDMObject interface

The `IDMObject` interface is the base object interface for all object interfaces used in the Work Space Manager system extension server for Altium Designer.

```csharp
public interface IDMObject
```

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

**Derived:** [IBaseConfiguration](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IBaseConfiguration.md), [IBlanket](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IBlanket.md), [IBus](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IBus.md), [IComponentImplementation](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IComponentImplementation.md), [IComponentMappings](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IComponentMappings.md), [IComponentVariation](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IComponentVariation.md), [IConstraint](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IConstraint.md), [IConstraintGroup](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IConstraintGroup.md), [IDM_FSMState](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDM_FSMState.md), [IDM_FSMTransition](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDM_FSMTransition.md), [IDeviceSheetFolder](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDeviceSheetFolder.md), [IDocument](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDocument.md), [IInstance](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IInstance.md), [ILine](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/ILine.md), [INet](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/INet.md), [INetItem](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/INetItem.md), [IObjectClass](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IObjectClass.md), [IObjectClassCluster](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IObjectClassCluster.md), [IOutputJob](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IOutputJob.md), [IOutputMedium](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IOutputMedium.md), [IOutputer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IOutputer.md), [IParameter](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IParameter.md), [IParameterVariation](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IParameterVariation.md), [IPart](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPart.md), [IPartProperties](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IPartProperties.md), [IProject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IProject.md), [IProjectProperties](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IProjectProperties.md), [IProjectVariant](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IProjectVariant.md), [IRoom](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IRoom.md), [IRule](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IRule.md), [ISearchPath](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/ISearchPath.md), [ISheetSymbol](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/ISheetSymbol.md), [ISignal](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/ISignal.md), [ISignalLink](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/ISignalLink.md), [ISignalManager](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/ISignalManager.md), [ISignalNode](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/ISignalNode.md), [ISubNet](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/ISubNet.md), [ITextFrame](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/ITextFrame.md), [IVHDLEntity](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IVHDLEntity.md), [IViolation](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IViolation.md), [IWorkspace](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IWorkspace.md), [IWrapper](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IWrapper.md)

## Methods

| Method | Returns | Description |
| --- | --- | --- |
| [DM_CalculateParameterValue](#dm_calculateparametervalue) | `string` |  |
| [DM_CurrentSheetInstanceNumber](#dm_currentsheetinstancenumber) | `int` | The method returns the current sheet instance number of the schematic document. |
| [DM_FullCrossProbeString](#dm_fullcrossprobestring) | `string` | The method returns the full cross probe string. |
| [DM_GeneralField](#dm_generalfield) | `int` | The method can returns an integral value for this general field. |
| [DM_GetVCSProject](#dm_getvcsproject) | `object` |  |
| [DM_ImageIndex](#dm_imageindex) | `int` | The method returns the image index depending on what type of object the image represents. |
| [DM_IsFormulaString](#dm_isformulastring) | `bool` |  |
| [DM_IsInferredObject](#dm_isinferredobject) | `bool` | The method denotes whether the object is an inferred object with respect to connective objects. |
| [DM_LocationString](#dm_locationstring) | `string` | The method returns the Location string formatted as a X,Y format or if the object kind is a Text Documnt set, then the string returned is a formatted Line: LocationY Offset: XLocation string. |
| [DM_LocationX](#dm_locationx) | `int` | The method returns the location of this interface object on the X axis. |
| [DM_LocationY](#dm_locationy) | `int` | The method returns the location of this interface object on the Y axis. |
| [DM_LongDescriptorString](#dm_longdescriptorstring) | `string` | The method returns the long description version string. |
| [DM_NetIndex_Flat](#dm_netindex_flat) | `int` | The method returns the net index for a flattened design. |
| [DM_NetIndex_Sheet](#dm_netindex_sheet) | `int` | The method returns the netindex for a schematic sheet. |
| [DM_NetIndex_SubNet](#dm_netindex_subnet) | `int` | The method returns the net index within a sub net. |
| [DM_ObjectKindString](#dm_objectkindstring) | `string` | The method returns the object kind string which denotes the design document type. |
| [DM_ObjectKindStringForCrossProbe](#dm_objectkindstringforcrossprobe) | `string` | The method returns the specially formatted object kind string for the cross probing mechanism. |
| [DM_OwnerDocument](#dm_ownerdocument) | [IDocument](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDocument.md) | The method returns the document interface object. |
| [DM_OwnerDocumentFullPath](#dm_ownerdocumentfullpath) | `string` | The method returns the full path of the document. |
| [DM_OwnerDocumentName](#dm_ownerdocumentname) | `string` | The method returns the name of the document that this object interface is part of. |
| [DM_ParameterCount](#dm_parametercount) | `int` | The method returns the number of parameters this object has. |
| [DM_Parameters](#dm_parameters) | [IParameter](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IParameter.md) | Returns the indexed parameter object. |
| [DM_PcbHandle](#dm_pcbhandle) | `string` |  |
| [DM_PCBObjectHandle](#dm_pcbobjecthandle) | `int` | The method returns the object handle of a PCB object. |
| [DM_PCBObjectInterface](#dm_pcbobjectinterface) | `object` |  |
| [DM_PrimaryCrossProbeString](#dm_primarycrossprobestring) | `string` | The method returns the primary cross probe string. |
| [DM_SchHandle](#dm_schhandle) | `string` |  |
| [DM_SCHObjectHandle](#dm_schobjecthandle) | `int` | The method returns the object handle of a Schematic object. |
| [DM_SCHObjectInterface](#dm_schobjectinterface) | `object` |  |
| [DM_SecondaryCrossProbeString](#dm_secondarycrossprobestring) | `string` | The method returns the secondary cross probe string. |
| [DM_SetVCSProject](#dm_setvcsproject) | `void` |  |
| [DM_SheetIndex_Logical](#dm_sheetindex_logical) | `int` | The method returns the sheet index for a logical design (multi - channel designs for example). |
| [DM_SheetIndex_Physical](#dm_sheetindex_physical) | `int` | The method returns the sheet index for a physical design. |
| [DM_ShortDescriptorString](#dm_shortdescriptorstring) | `string` | The method returns the short description version string. |
| [DM_ValidForNavigation](#dm_validfornavigation) | `bool` | The method toggles whether navigation is valid for this object. |
| [DM_VHDLEntity](#dm_vhdlentity) | [IVHDLEntity](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IVHDLEntity.md) | The method returns the VHDL entity interface object if it exists on a VHDL document. |

### DM_CalculateParameterValue

*No description yet.*

```csharp
string DM_CalculateParameterValue(IParameter argParameter);
string DM_CalculateParameterValue(object argParameter);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argParameter` | [IParameter](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IParameter.md) | value |

**Returns:** `string`

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

### DM_CurrentSheetInstanceNumber

The method returns the current sheet instance number of the schematic document.

```csharp
int DM_CurrentSheetInstanceNumber();
```

**Returns:** `int`

### DM_FullCrossProbeString

The method returns the full cross probe string.

```csharp
string DM_FullCrossProbeString();
```

**Returns:** `string`

### DM_GeneralField

The method can returns an integral value for this general field. This General Field can be used for any purpose - as a tag property, as an index property or as a flag to denote something.

```csharp
int DM_GeneralField();
```

**Returns:** `int`

### DM_GetVCSProject

*No description yet.*

```csharp
object DM_GetVCSProject();
```

**Returns:** `object`

### DM_ImageIndex

The method returns the image index depending on what type of object the image represents.

```csharp
int DM_ImageIndex();
```

**Returns:** `int`

### DM_IsFormulaString

*No description yet.*

```csharp
bool DM_IsFormulaString(string argFormula);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argFormula` | `string` | value |

**Returns:** `bool`

### DM_IsInferredObject

The method denotes whether the object is an inferred object with respect to connective objects. Bus and Sheet Symbols can be defined in ranges using the NetLabel [] and Repeat statements respectively and once the project has been compiled, inferred objects are created in memory for navigation/connective purposes. For example, a Bus with a range of A0..4 ends up with five wires with A0...A5 net labels (only in memory). This property is useful for multi - channel projects and for sheets that have Bus objects.

```csharp
bool DM_IsInferredObject();
```

**Returns:** `bool`

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

### DM_LocationString

The method returns the Location string formatted as a X,Y format or if the object kind is a Text Documnt set, then the string returned is a formatted Line: LocationY Offset: XLocation string.

```csharp
string DM_LocationString();
```

**Returns:** `string`

### DM_LocationX

The method returns the location of this interface object on the X axis.

```csharp
int DM_LocationX();
```

**Returns:** `int`

### DM_LocationY

The method returns the location of this interface object on the Y axis.

```csharp
int DM_LocationY();
```

**Returns:** `int`

### DM_LongDescriptorString

The method returns the long description version string.

```csharp
string DM_LongDescriptorString();
```

**Returns:** `string`

### DM_NetIndex_Flat

The method returns the net index for a flattened design.

```csharp
int DM_NetIndex_Flat();
```

**Returns:** `int`

### DM_NetIndex_Sheet

The method returns the netindex for a schematic sheet.

```csharp
int DM_NetIndex_Sheet();
```

**Returns:** `int`

### DM_NetIndex_SubNet

The method returns the net index within a sub net.

```csharp
int DM_NetIndex_SubNet();
```

**Returns:** `int`

### DM_ObjectKindString

The method returns the object kind string which denotes the design document type.

```csharp
string DM_ObjectKindString();
```

**Returns:** `string`

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

### DM_ObjectKindStringForCrossProbe

The method returns the specially formatted object kind string for the cross probing mechanism.

```csharp
string DM_ObjectKindStringForCrossProbe();
```

**Returns:** `string`

### DM_OwnerDocument

The method returns the document interface object. Refer to [`IDocument`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDocument.md) interface for details.

```csharp
IDocument DM_OwnerDocument();
```

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

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

### DM_OwnerDocumentFullPath

The method returns the full path of the document.

```csharp
string DM_OwnerDocumentFullPath();
```

**Returns:** `string`

### DM_OwnerDocumentName

The method returns the name of the document that this object interface is part of.

```csharp
string DM_OwnerDocumentName();
```

**Returns:** `string`

### DM_ParameterCount

The method returns the number of parameters this object has.

```csharp
int DM_ParameterCount();
```

**Returns:** `int`

**Examples:** [Extension_AddVariant](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_AddVariant/Source%20Code/Commands.cs#L68), [Extension_BOMManager](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_BOMManager/Source%20Code/ProjectComponent.cs#L21), [Extension_PartComment](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_PartComment/Source%20Code/Commands.cs#L88)

### DM_Parameters

Returns the indexed parameter object. Use the [`IParameter`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IParameter.md) interface to wrap the returned result.

```csharp
IParameter DM_Parameters(int argIndex);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argIndex` | `int` | value | The index of the parameter object. |

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

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

**Examples:** [Extension_AddVariant](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_AddVariant/Source%20Code/Commands.cs#L70), [Extension_BOMManager](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_BOMManager/Source%20Code/ProjectComponent.cs#L25), [Extension_PartComment](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_PartComment/Source%20Code/Commands.cs#L92), [Extension_RefreshDocument](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_RefreshDocument/Source%20Code/Commands.cs#L62)

### DM_PcbHandle

*No description yet.*

```csharp
string DM_PcbHandle();
```

**Returns:** `string`

### DM_PCBObjectHandle

The method returns the object handle of a PCB object. If void, a null value is returned.

```csharp
int DM_PCBObjectHandle();
```

**Returns:** `int`

### DM_PCBObjectInterface

*No description yet.*

```csharp
object DM_PCBObjectInterface();
```

**Returns:** `object`

### DM_PrimaryCrossProbeString

The method returns the primary cross probe string.

```csharp
string DM_PrimaryCrossProbeString();
```

**Returns:** `string`

### DM_SchHandle

*No description yet.*

```csharp
string DM_SchHandle();
```

**Returns:** `string`

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

### DM_SCHObjectHandle

The method returns the object handle of a Schematic object. If void, a zero value is returned.

```csharp
int DM_SCHObjectHandle();
```

**Returns:** `int`

### DM_SCHObjectInterface

*No description yet.*

```csharp
object DM_SCHObjectInterface();
```

**Returns:** `object`

### DM_SecondaryCrossProbeString

The method returns the secondary cross probe string.

```csharp
string DM_SecondaryCrossProbeString();
```

**Returns:** `string`

### DM_SetVCSProject

*No description yet.*

```csharp
void DM_SetVCSProject(object argValue);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argValue` | `object` | value |

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

### DM_SheetIndex_Logical

The method returns the sheet index for a logical design (multi - channel designs for example).

```csharp
int DM_SheetIndex_Logical();
```

**Returns:** `int`

### DM_SheetIndex_Physical

The method returns the sheet index for a physical design. (that have unique designators)

```csharp
int DM_SheetIndex_Physical();
```

**Returns:** `int`

### DM_ShortDescriptorString

The method returns the short description version string.

```csharp
string DM_ShortDescriptorString();
```

**Returns:** `string`

### DM_ValidForNavigation

The method toggles whether navigation is valid for this object. Navigation is performed on net aware objects such as components, nets and busses.

```csharp
bool DM_ValidForNavigation();
```

**Returns:** `bool`

### DM_VHDLEntity

The method returns the VHDL entity interface object if it exists on a VHDL document. Basically every object interface has an access to this VHDL entity interface, so to check whether VHDL entity exists for this particular object, you can check out the Name field within the [`IVHDLEntity`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IVHDLEntity.md) interface.

```csharp
IVHDLEntity DM_VHDLEntity();
```

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

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

**See also:** [IDMObject.DM_GetVCSProject](#dm_getvcsproject)

## Returned by

[IHighlightedDocument.HL_GetLinkedObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IHighlightedDocument.md#hl_getlinkedobject), [IHighlightedDocument.HL_Objects](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IHighlightedDocument.md#hl_objects), [IParameter.DM_OriginalOwner](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IParameter.md#dm_originalowner), [IViolation.DM_RelatedObjects](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IViolation.md#dm_relatedobjects)

## Accepted by

[IECO.DM_AddMemberToObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IECO.md#dm_addmembertoobject), [IECO.DM_AddObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IECO.md#dm_addobject), [IECO.DM_ChangeObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IECO.md#dm_changeobject), [IECO.DM_RemoveMemberFromObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IECO.md#dm_removememberfromobject), [IECO.DM_RemoveObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IECO.md#dm_removeobject), [IHighlightedDocument.HL_ChooseObjectGraphically](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IHighlightedDocument.md#hl_chooseobjectgraphically), [IHighlightedDocument.HL_GetLinkedObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IHighlightedDocument.md#hl_getlinkedobject), [IHighlightedDocument.HL_Register_DMObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IHighlightedDocument.md#hl_register_dmobject), [IHighlightedDocument.HL_UnRegister_Object](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IHighlightedDocument.md#hl_unregister_object), [IHighlightedDocument.HL_XProbeChooseObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IHighlightedDocument.md#hl_xprobechooseobject), [IViolation.DM_AddRelatedObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IViolation.md#dm_addrelatedobject), [IWorkspace.DM_DisplayNavigationHint](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IWorkspace.md#dm_displaynavigationhint), [IWorkspace.DM_NotifyObjectNavigated](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IWorkspace.md#dm_notifyobjectnavigated), [IWorkspace.DM_NotifyObjectsNavigated](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IWorkspace.md#dm_notifyobjectsnavigated), [ISch_ServerInterface.UpdateSignalValueDisplay](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_ServerInterface.md#updatesignalvaluedisplay)
