
# IWorkspace interface

The `IWorkspace` interface represents the Work-Space manager in the Altium Designer which deals with project and documents and their related attributes and options. This interface object is the starting point and upon querying this object, it can return currently open projects, number of projects, installed libraries, and create a new document for example.

```csharp
public interface IWorkspace : IDMObject
```

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

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

## Remarks

Remember the projects need to be compiled first, before you can invoke the GetWorkSpace method to obtain the IWorkSpace interface and its descendant interfaces which represent actual objects in Altium Designer.

It is highly recommended not to hold an interface of the Workspace manager, but re-query the work-space manager every-time the access to the information within is required.

## Methods

| Method | Returns | Description |
| --- | --- | --- |
| [DM_AddDocumentToActiveProject](#dm_adddocumenttoactiveproject) | `void` | This method adds an existing document with its valid full path into an active project within Altium Designer. |
| [DM_AddOutputLine](#dm_addoutputline) | `void` | Outputs the line to the output's dialog. |
| [DM_ChangeManager](#dm_changemanager) | [IChangeManager](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IChangeManager.md) | Returns the Engineering Change Order Manager interface object which compares with two projects and creates an ECO to perform a pin swapping process to synchronize the specified two projects. |
| [DM_ClearOutputLines](#dm_clearoutputlines) | `void` | Clears out the Output Memo. |
| [DM_CloseProject](#dm_closeproject) | `void` |  |
| [DM_CreateHarnessDefinitionList_DeviceSheets](#dm_createharnessdefinitionlist_devicesheets) | [IHarnessDefinitionList](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IHarnessDefinitionList.md) |  |
| [DM_CreateNewDocument](#dm_createnewdocument) | `string` | This method creates a new document based on the Document Kind. |
| [DM_DestroyHarnessDefinitionList](#dm_destroyharnessdefinitionlist) | `void` |  |
| [DM_DisplayNavigationHint](#dm_displaynavigationhint) | `void` |  |
| [DM_FileOwnership_BulkWarnEnd](#dm_fileownership_bulkwarnend) | `void` |  |
| [DM_FileOwnership_BulkWarnRegister](#dm_fileownership_bulkwarnregister) | `bool` |  |
| [DM_FileOwnership_BulkWarnStart](#dm_fileownership_bulkwarnstart) | `void` |  |
| [DM_FocusedDocument](#dm_focuseddocument) | [IDocument](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDocument.md) | Returns the focussed document interface object (if any) in Altium Designer. |
| [DM_FocusedProject](#dm_focusedproject) | [IProject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IProject.md) | Returns the focussed project (if any) in Altium Designer. |
| [DM_FreeDocumentsProject](#dm_freedocumentsproject) | [IProject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IProject.md) | Returns the [`IProject`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IProject.md) interface that contains free documents. |
| [DM_GenerateUniqueID](#dm_generateuniqueid) | `string` | Invoke this method, and a generated Unique ID will be returned which can be used for any newly created or existing object in Altium Designer. |
| [DM_GetDefaultPcbType](#dm_getdefaultpcbtype) | `string` |  |
| [DM_GetDifferenceTypeDescription](#dm_getdifferencetypedescription) | `string` |  |
| [DM_GetDocumentFromPath](#dm_getdocumentfrompath) | [IDocument](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDocument.md) | Retrieves the [`IDocument`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDocument.md) interface object by passing the full document path to this document. |
| [DM_GetOutputCharCount](#dm_getoutputcharcount) | `int` |  |
| [DM_GetOutputJobDocumentByPath](#dm_getoutputjobdocumentbypath) | [IWSM_OutputJobDocument](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IWSM_OutputJobDocument.md) |  |
| [DM_GetOutputLine](#dm_getoutputline) | `string` |  |
| [DM_GetOutputLineCount](#dm_getoutputlinecount) | `int` | Returns the number of output lines in the Output dialog. |
| [DM_GetProjectDialogsFactory](#dm_getprojectdialogsfactory) | [IProjectDialogsFactory](https://altiumdeveloper.github.io/ad-sdk-docs/reference/dxp/IProjectDialogsFactory.md) |  |
| [DM_GetProjectFromPath](#dm_getprojectfrompath) | [IProject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IProject.md) | Retrieves the [`IProject`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IProject.md) interface object by passing the full project path to this project. |
| [DM_GetRecoveryInterval](#dm_getrecoveryinterval) | `int` | Returns the number of minutes as the interval when the recovery mechanism kicks in. |
| [DM_GetRecoveryIsEnabled](#dm_getrecoveryisenabled) | `bool` | Returns a Boolean value whether the recovery mechanism is active or not. |
| [DM_GetReleaseManager](#dm_getreleasemanager) | [IReleaseManager](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IReleaseManager.md) |  |
| [DM_GetVaultReleaseManager](#dm_getvaultreleasemanager) | [IVaultConfigurationReleaseManager](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IVaultConfigurationReleaseManager.md) |  |
| [DM_HideProject](#dm_hideproject) | `void` |  |
| [DM_ImageIndexForDocumentKind](#dm_imageindexfordocumentkind) | `int` | Returns the image index depending on the document kind for example PCB, CAM etc. |
| [DM_InstalledLibraries](#dm_installedlibraries) | [IDocument](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDocument.md) | Returns an indexed library (currently installed in Altium Designer only), to be used in conjunction with the [`DM_InstalledLibraryCount`](#dm_installedlibrarycount). |
| [DM_InstalledLibraryCount](#dm_installedlibrarycount) | `int` | Returns the number of installed libraries in Altium Designer. |
| [DM_IsReferencedAsDeviceSheet](#dm_isreferencedasdevicesheet) | `bool` |  |
| [DM_LoadProjectHidden](#dm_loadprojecthidden) | [IProject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IProject.md) |  |
| [DM_LocalHistoryManager](#dm_localhistorymanager) | [ILocalHistoryManager](https://altiumdeveloper.github.io/ad-sdk-docs/reference/dxp/ILocalHistoryManager.md) |  |
| [DM_MessagesManager](#dm_messagesmanager) | [IDXPMessagesManager](https://altiumdeveloper.github.io/ad-sdk-docs/reference/dxp/IDXPMessagesManager.md) | This method returns you the interface to the Messages panel in Altium Designer. |
| [DM_Navigation_OpenHostDocuments](#dm_navigation_openhostdocuments) | `void` |  |
| [DM_NavigationZoomPrecision](#dm_navigationzoomprecision) | `int` |  |
| [DM_NotifyObjectNavigated](#dm_notifyobjectnavigated) | `void` |  |
| [DM_NotifyObjectsNavigated](#dm_notifyobjectsnavigated) | `void` |  |
| [DM_OpenProject](#dm_openproject) | [IProject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IProject.md) | Opens a project with the full project path and set this project in focus depending on its Show parameter. |
| [DM_OptionsStorage](#dm_optionsstorage) | [IOptionsStorage](https://altiumdeveloper.github.io/ad-sdk-docs/reference/dxp/IOptionsStorage.md) | Represents a options storage container where Altium Designer can use to retrieve and store options for storing parameters of EDE options such as Toolchain name, folder and default options and project… |
| [DM_PCBReleaseViewDocument](#dm_pcbreleaseviewdocument) | [IReleaseViewDocument](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IReleaseViewDocument.md) |  |
| [DM_Preferences](#dm_preferences) | [IWorkspacePreferences](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IWorkspacePreferences.md) |  |
| [DM_ProjectCount](#dm_projectcount) | `int` | Returns the number of projects open in Altium Designer. |
| [DM_Projects](#dm_projects) | [IProject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IProject.md) | Returns the indexed project (currently loaded in Altium Designer only), to be used in conjunction with the [`DM_ProjectCount`](#dm_projectcount) interface. |
| [DM_PromptForDefaultPcbType](#dm_promptfordefaultpcbtype) | `bool` |  |
| [DM_RegisterDependentDocuments](#dm_registerdependentdocuments) | `void` |  |
| [DM_RunOpenDocumentDialog](#dm_runopendocumentdialog) | `bool` |  |
| [DM_SetNavigationZoomPrecision](#dm_setnavigationzoomprecision) | `void` |  |
| [DM_SetRecoveryParameters](#dm_setrecoveryparameters) | `void` | Set the interval when the autosave / recovery mechanism in Altium Designer kicks in. |
| [DM_SetRightClickCompStructure](#dm_setrightclickcompstructure) | `void` |  |
| [DM_ShowMessageView](#dm_showmessageview) | `void` | Invoke this method to refresh the Message panel. |
| [DM_ShowProject](#dm_showproject) | `void` |  |
| [DM_ShowToDoList](#dm_showtodolist) | `void` | This method displays the To Do List manager panel. |
| [DM_ViolationTypeDescription](#dm_violationtypedescription) | `string` | Returns the violation type description string with the error kind value passed in. |
| [DM_ViolationTypeGroup](#dm_violationtypegroup) | [TErrorGroup](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/TErrorGroup.md) | Returns the error group for which this error kind parameter belongs to. |
| [DM_WorkspaceFileName](#dm_workspacefilename) | `string` | Returns the filename only of the workspace. |
| [DM_WorkspaceFullPath](#dm_workspacefullpath) | `string` | Returns the full path of the workspace. |

### DM_AddDocumentToActiveProject

This method adds an existing document with its valid full path into an active project within Altium Designer.

```csharp
void DM_AddDocumentToActiveProject(string argDocumentPath);
```

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

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

### DM_AddOutputLine

Outputs the line to the output's dialog. An Internal operation.

```csharp
void DM_AddOutputLine(string argMessageLine, bool argReplaceLastLine, bool argUpdateLastLine);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argMessageLine` | `string` | value |
| `argReplaceLastLine` | `bool` | value |
| `argUpdateLastLine` | `bool` | value |

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

### DM_ChangeManager

Returns the Engineering Change Order Manager interface object which compares with two projects and creates an ECO to perform a pin swapping process to synchronize the specified two projects.

```csharp
IChangeManager DM_ChangeManager();
```

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

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

### DM_ClearOutputLines

Clears out the Output Memo. An Internal operation.

```csharp
void DM_ClearOutputLines();
```

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

### DM_CloseProject

*No description yet.*

```csharp
void DM_CloseProject(string argProjectPath);
```

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

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

### DM_CreateHarnessDefinitionList_DeviceSheets

*No description yet.*

```csharp
IHarnessDefinitionList DM_CreateHarnessDefinitionList_DeviceSheets(string argFolderPath, bool argRecursive);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argFolderPath` | `string` | value |
| `argRecursive` | `bool` | value |

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

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

### DM_CreateNewDocument

This method creates a new document based on the Document Kind. The Kinds include - 'PCBLIB','PCB','SCH','SCHLIB' and so on depending on which document servers are installed in Altium Designer.

```csharp
string DM_CreateNewDocument(string argDocKind);
```

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

**Returns:** `string`

**Example:** Create a new PCB document.

```csharp
using DXP;
using EDP;

var workspace = DXP.GlobalVars.Client.GetDXPWorkspace() as IWorkspace;
if (workspace == null)
    return;
workspace.DM_CreateNewDocument("PCB");
```

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

### DM_DestroyHarnessDefinitionList

*No description yet.*

```csharp
void DM_DestroyHarnessDefinitionList(IHarnessDefinitionList argHarnessDefinitionList);
void DM_DestroyHarnessDefinitionList(object argHarnessDefinitionList);
```

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

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

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

### DM_DisplayNavigationHint

*No description yet.*

```csharp
void DM_DisplayNavigationHint(UIntPtr argViewHandle, int argX, int argY, IDMObject argDMObject, UIntPtr argViewNavigatedHandle);
void DM_DisplayNavigationHint(object argViewHandle, int argX, int argY, object argDMObject, object argViewNavigatedHandle);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argViewHandle` | `UIntPtr` | value |
| `argX` | `int` | value |
| `argY` | `int` | value |
| `argDMObject` | [IDMObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md) | value |
| `argViewNavigatedHandle` | `UIntPtr` | value |

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

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

### DM_FileOwnership_BulkWarnEnd

*No description yet.*

```csharp
void DM_FileOwnership_BulkWarnEnd(TFileOwnershipWarningLevel argWarningLevel);
void DM_FileOwnership_BulkWarnEnd(int argWarningLevel);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argWarningLevel` | [TFileOwnershipWarningLevel](https://altiumdeveloper.github.io/ad-sdk-docs/reference/dxp/TFileOwnershipWarningLevel.md) | value |

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

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

### DM_FileOwnership_BulkWarnRegister

*No description yet.*

```csharp
bool DM_FileOwnership_BulkWarnRegister(string argFileName);
```

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

**Returns:** `bool`

### DM_FileOwnership_BulkWarnStart

*No description yet.*

```csharp
void DM_FileOwnership_BulkWarnStart();
```

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

### DM_FocusedDocument

Returns the focussed document interface object (if any) in Altium Designer. A focussed document is a document that is currently open and in focus (this document is active).

```csharp
IDocument DM_FocusedDocument();
```

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

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

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

### DM_FocusedProject

Returns the focussed project (if any) in Altium Designer.

```csharp
IProject DM_FocusedProject();
```

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

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

**Examples:** [Ciiva](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Ciiva/Source%20Code/Commands.cs#L20), [Extension_AddVariant](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_AddVariant/Source%20Code/Commands.cs#L29), [Extension_CreateProject](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_CreateProject/Source%20Code/Commands.cs#L37), [Extension_CreateVariantComponent](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_CreateVariantComponent/Source%20Code/Commands.cs#L26), [Extension_GenerateGerber](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_GenerateGerber/Source%20Code/Commands.cs#L25), [Extension_HierarchicalDesign](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_HierarchicalDesign/Source%20Code/Commands.cs#L28), [Extension_RefreshDocument](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_RefreshDocument/Source%20Code/Commands.cs#L58), [Extension_TestPortHarnessDev](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_TestPortHarnessDev/Source%20Code/Commands.cs#L44)

### DM_FreeDocumentsProject

Returns the [`IProject`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IProject.md) interface that contains free documents. A free document is a standalone document that lives in the Free Documents project.

```csharp
IProject DM_FreeDocumentsProject();
```

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

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

### DM_GenerateUniqueID

Invoke this method, and a generated Unique ID will be returned which can be used for any newly created or existing object in Altium Designer. Objects in Schematic have their own Unique IDs which are tracked by the synchronizator so that the objects on the PCB document are sychronized to their equivalents in a corresponding schematic project.

```csharp
string DM_GenerateUniqueID();
```

**Returns:** `string`

Example - an incomplete example that assigns new UIDs to Schematic components

**Example:** Give every component on the current schematic sheet a new unique ID.

```csharp
using DXP;
using EDP;
using SCH;

// The workspace manager generates the unique IDs.
var workspace = DXP.GlobalVars.Client.GetDXPWorkspace() as IWorkspace;
if (workspace == null)
    return;
ISch_Document currentSheet = SCH.GlobalVars.SchServer?.GetCurrentSchDocument();
if (currentSheet == null)
    return;

// Set up an iterator to look for components on the sheet.
ISch_Iterator iterator = currentSheet.SchIterator_Create();
iterator.AddFilter_ObjectSet(new SCH.TObjectSet { SCH.TObjectId.eSchComponent });
try
{
    for (var component = iterator.FirstSchObject() as ISch_Component; component != null; component = iterator.NextSchObject() as ISch_Component)
        component.SetState_UniqueId(workspace.DM_GenerateUniqueID());
}
finally
{
    currentSheet.SchIterator_Destroy(ref iterator);
}
```

### DM_GetDefaultPcbType

*No description yet.*

```csharp
string DM_GetDefaultPcbType();
```

**Returns:** `string`

### DM_GetDifferenceTypeDescription

*No description yet.*

```csharp
string DM_GetDifferenceTypeDescription(TDifferenceKind argDifferenceKind);
string DM_GetDifferenceTypeDescription(int argDifferenceKind);
```

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

**Returns:** `string`

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

### DM_GetDocumentFromPath

Retrieves the [`IDocument`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDocument.md) interface object by passing the full document path to this document. With this [`IDocument`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDocument.md) interface, you have access to its functionality, such as compiling the document itself.

```csharp
IDocument DM_GetDocumentFromPath(string argDocumentPath);
```

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

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

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

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

### DM_GetOutputCharCount

*No description yet.*

```csharp
int DM_GetOutputCharCount();
```

**Returns:** `int`

### DM_GetOutputJobDocumentByPath

*No description yet.*

```csharp
IWSM_OutputJobDocument DM_GetOutputJobDocumentByPath(string argPath);
```

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

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

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

### DM_GetOutputLine

*No description yet.*

```csharp
string DM_GetOutputLine(int argIndex);
```

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

**Returns:** `string`

### DM_GetOutputLineCount

Returns the number of output lines in the Output dialog. An Internal operation.

```csharp
int DM_GetOutputLineCount();
```

**Returns:** `int`

### DM_GetProjectDialogsFactory

*No description yet.*

```csharp
IProjectDialogsFactory DM_GetProjectDialogsFactory();
```

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

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

### DM_GetProjectFromPath

Retrieves the [`IProject`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IProject.md) interface object by passing the full project path to this project. With this [`IProject`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IProject.md) interface, you have access to its interface methods. A project is a container that has links to associated design documents in an organized manner.

```csharp
IProject DM_GetProjectFromPath(string argProjectPath);
```

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

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

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

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

### DM_GetRecoveryInterval

Returns the number of minutes as the interval when the recovery mechanism kicks in.

```csharp
int DM_GetRecoveryInterval();
```

**Returns:** `int`

### DM_GetRecoveryIsEnabled

Returns a Boolean value whether the recovery mechanism is active or not.

```csharp
bool DM_GetRecoveryIsEnabled();
```

**Returns:** `bool`

### DM_GetReleaseManager

*No description yet.*

```csharp
IReleaseManager DM_GetReleaseManager();
```

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

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

### DM_GetVaultReleaseManager

*No description yet.*

```csharp
IVaultConfigurationReleaseManager DM_GetVaultReleaseManager(IProject argProject, IVaultConfiguration argConfiguration);
```

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

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

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

### DM_HideProject

*No description yet.*

```csharp
void DM_HideProject(string argProjectPath);
```

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

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

### DM_ImageIndexForDocumentKind

Returns the image index depending on the document kind for example PCB, CAM etc.

```csharp
int DM_ImageIndexForDocumentKind(string argDocumentKind);
```

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

**Returns:** `int`

### DM_InstalledLibraries

Returns an indexed library (currently installed in Altium Designer only), to be used in conjunction with the [`DM_InstalledLibraryCount`](#dm_installedlibrarycount).

```csharp
IDocument DM_InstalledLibraries(int argIndex);
```

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

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

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

**See also:** [IWorkspace.DM_InstalledLibraryCount](#dm_installedlibrarycount)

### DM_InstalledLibraryCount

Returns the number of installed libraries in Altium Designer.

```csharp
int DM_InstalledLibraryCount();
```

**Returns:** `int`

### DM_IsReferencedAsDeviceSheet

*No description yet.*

```csharp
bool DM_IsReferencedAsDeviceSheet(string argFilePath);
```

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

**Returns:** `bool`

### DM_LoadProjectHidden

*No description yet.*

```csharp
IProject DM_LoadProjectHidden(string argProjectPath);
```

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

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

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

### DM_LocalHistoryManager

*No description yet.*

```csharp
ILocalHistoryManager DM_LocalHistoryManager();
```

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

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

### DM_MessagesManager

This method returns you the interface to the Messages panel in Altium Designer.

```csharp
IDXPMessagesManager DM_MessagesManager();
```

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

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

### DM_Navigation_OpenHostDocuments

*No description yet.*

```csharp
void DM_Navigation_OpenHostDocuments(IProject argProject, IInterfaceList argObjectsList, TDocumentOpenMode argDocumentOpenMode);
void DM_Navigation_OpenHostDocuments(object argProject, object argObjectsList, int argDocumentOpenMode);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argProject` | [IProject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IProject.md) | value |
| `argObjectsList` | [IInterfaceList](https://altiumdeveloper.github.io/ad-sdk-docs/reference/dxp/IInterfaceList.md) | value |
| `argDocumentOpenMode` | [TDocumentOpenMode](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/TDocumentOpenMode.md) | value |

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

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

### DM_NavigationZoomPrecision

*No description yet.*

```csharp
int DM_NavigationZoomPrecision();
```

**Returns:** `int`

### DM_NotifyObjectNavigated

*No description yet.*

```csharp
void DM_NotifyObjectNavigated(int argCode, IDMObject argDMObject, TNavigationActionSet argNavigationActionSet);
void DM_NotifyObjectNavigated(int argCode, object argDMObject, ITransportSet argNavigationActionSet);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argCode` | `int` | value |
| `argDMObject` | [IDMObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md) | value |
| `argNavigationActionSet` | [TNavigationActionSet](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/TNavigationActionSet.md) | value |

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

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

### DM_NotifyObjectsNavigated

*No description yet.*

```csharp
void DM_NotifyObjectsNavigated(int argCode, IDMObject argSourceDMObject, TNavigationActionSet argNavigationActionSet, IInterfaceList argDMObjects);
void DM_NotifyObjectsNavigated(int argCode, object argSourceDMObject, ITransportSet argNavigationActionSet, object argDMObjects);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argCode` | `int` | value |
| `argSourceDMObject` | [IDMObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md) | value |
| `argNavigationActionSet` | [TNavigationActionSet](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/TNavigationActionSet.md) | value |
| `argDMObjects` | [IInterfaceList](https://altiumdeveloper.github.io/ad-sdk-docs/reference/dxp/IInterfaceList.md) | value |

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

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

### DM_OpenProject

Opens a project with the full project path and set this project in focus depending on its Show parameter.

```csharp
IProject DM_OpenProject(string argProjectPath, bool argShow);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argProjectPath` | `string` | value |
| `argShow` | `bool` | value |

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

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

### DM_OptionsStorage

Represents a options storage container where Altium Designer can use to retrieve and store options for storing parameters of EDE options such as Toolchain name, folder and default options and project options.

```csharp
IOptionsStorage DM_OptionsStorage();
```

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

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

### DM_PCBReleaseViewDocument

*No description yet.*

```csharp
IReleaseViewDocument DM_PCBReleaseViewDocument();
```

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

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

### DM_Preferences

*No description yet.*

```csharp
IWorkspacePreferences DM_Preferences();
```

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

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

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

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

### DM_ProjectCount

Returns the number of projects open in Altium Designer.

```csharp
int DM_ProjectCount();
```

**Returns:** `int`

### DM_Projects

Returns the indexed project (currently loaded in Altium Designer only), to be used in conjunction with the [`DM_ProjectCount`](#dm_projectcount) interface.

```csharp
IProject DM_Projects(int argIndex);
```

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

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

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

### DM_PromptForDefaultPcbType

*No description yet.*

```csharp
bool DM_PromptForDefaultPcbType(ref string argPcbType);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argPcbType` | `string` | ref |

**Returns:** `bool`

### DM_RegisterDependentDocuments

*No description yet.*

```csharp
void DM_RegisterDependentDocuments(string argSourceDocKind, string argDependentExtension);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argSourceDocKind` | `string` | value |
| `argDependentExtension` | `string` | value |

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

### DM_RunOpenDocumentDialog

*No description yet.*

```csharp
bool DM_RunOpenDocumentDialog(string argCaption, bool argllowMultiSelect, ref string argPath, TFilterKind argFilterKind, int argFilterIndex, out IStrings argDocumentPaths);
bool DM_RunOpenDocumentDialog(string argCaption, bool argllowMultiSelect, ref string argPath, int argFilterKind, int argFilterIndex, out IStrings argDocumentPaths);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argCaption` | `string` | value |
| `argllowMultiSelect` | `bool` | value |
| `argPath` | `string` | ref |
| `argFilterKind` | [TFilterKind](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/TFilterKind.md) | value |
| `argFilterIndex` | `int` | value |
| `argDocumentPaths` | [IStrings](https://altiumdeveloper.github.io/ad-sdk-docs/reference/dxp/IStrings.md) | out |

**Returns:** `bool`

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

### DM_SetNavigationZoomPrecision

*No description yet.*

```csharp
void DM_SetNavigationZoomPrecision(int argZoomPrecision);
```

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

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

### DM_SetRecoveryParameters

Set the interval when the autosave / recovery mechanism in Altium Designer kicks in. The interval is in minutes, and whether to enable the recovery mechanism.

```csharp
void DM_SetRecoveryParameters(bool argIsEnabled, int argInterval);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argIsEnabled` | `bool` | value |
| `argInterval` | `int` | value |

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

### DM_SetRightClickCompStructure

*No description yet.*

```csharp
void DM_SetRightClickCompStructure(string argProjectPath, string argLibReference, string argUniqueId);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argProjectPath` | `string` | value |
| `argLibReference` | `string` | value |
| `argUniqueId` | `string` | value |

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

### DM_ShowMessageView

Invoke this method to refresh the Message panel.

```csharp
void DM_ShowMessageView();
```

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

### DM_ShowProject

*No description yet.*

```csharp
void DM_ShowProject(string argProjectPath);
```

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

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

### DM_ShowToDoList

This method displays the To Do List manager panel. This To Do List panel can be used to define your To Dos.

```csharp
void DM_ShowToDoList();
```

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

### DM_ViolationTypeDescription

Returns the violation type description string with the error kind value passed in. Check the [`TErrorKind`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/TErrorKind.md) for its range of values.

```csharp
string DM_ViolationTypeDescription(TErrorKind argErrorKind);
string DM_ViolationTypeDescription(int argErrorKind);
```

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

**Returns:** `string`

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

### DM_ViolationTypeGroup

Returns the error group for which this error kind parameter belongs to. Check the [`TErrorGroup`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/TErrorGroup.md) type for its range of values.

```csharp
TErrorGroup DM_ViolationTypeGroup(TErrorKind argErrorKind);
```

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

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

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

### DM_WorkspaceFileName

Returns the filename only of the workspace.

```csharp
string DM_WorkspaceFileName();
```

**Returns:** `string`

### DM_WorkspaceFullPath

Returns the full path of the workspace.

```csharp
string DM_WorkspaceFullPath();
```

**Returns:** `string`

## Inherited members

- 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)

## Examples

Used in the SDK examples: [Ciiva](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Ciiva/Source%20Code/CiivaBOMDocument.cs#L56), [Ciiva](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Ciiva/Source%20Code/Commands.cs#L19), [Extension_AddVariant](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_AddVariant/Source%20Code/Commands.cs#L25), [Extension_CreateProject](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_CreateProject/Source%20Code/Commands.cs#L36), [Extension_CreateVariantComponent](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_CreateVariantComponent/Source%20Code/Commands.cs#L25), [Extension_GenerateGerber](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_GenerateGerber/Source%20Code/Commands.cs#L24), [Extension_HierarchicalDesign](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_HierarchicalDesign/Source%20Code/Commands.cs#L27), [Extension_IComponent_To_ISch_Component](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_IComponent_To_ISch_Component/Source%20Code/Commands.cs#L15), [Extension_RefreshDocument](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_RefreshDocument/Source%20Code/Commands.cs#L54), [Extension_SchTemplate](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_SchTemplate/Source%20Code/Commands.cs#L18), [Extension_TestPortHarnessDev](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_TestPortHarnessDev/Source%20Code/Commands.cs#L40), [Extension_VariantOptions](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Extension_VariantOptions/Source%20Code/Commands.cs#L25).
