
# IECO interface

The `IECO` interface represents an Engineering Change Order interface in the Work Space Manager. Basically an Engineering Change Order attempts to keep a project containing source documents and its corresponding primary implementation documents synchronized. For example a schematic project and its PCB document, every time something changes in a schematic project, it is necessary to bring the changes forward to the PCB document via the Engineering Change Order feature.

```csharp
public interface IECO
```

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

## Methods

| Method | Returns | Description |
| --- | --- | --- |
| [DM_AddMemberToObject](#dm_addmembertoobject) | `bool` | Adds a specific action in the ECO manager. |
| [DM_AddObject](#dm_addobject) | `bool` | Adds a reference object for the ECO to compare the target document against this reference document. |
| [DM_Begin](#dm_begin) | `void` | Denotes that the ECO manager has started. |
| [DM_ChangeObject](#dm_changeobject) | `bool` | Changes a specific action in the ECO manager. |
| [DM_End](#dm_end) | `void` | Denotes that the ECO manager has ended. |
| [DM_RemoveMemberFromObject](#dm_removememberfromobject) | `bool` | Removes a specific action in the ECO manager. |
| [DM_RemoveObject](#dm_removeobject) | `bool` | Removes a reference object depending on what ECO mode is. |

### DM_AddMemberToObject

Adds a specific action in the ECO manager.

```csharp
bool DM_AddMemberToObject(TECO_Mode argMode, IDMObject argReferenceMember, IDMObject argReferenceParent, IDMObject argTargetParent);
bool DM_AddMemberToObject(int argMode, object argReferenceMember, object argReferenceParent, object argTargetParent);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argMode` | [TECO_Mode](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/TECO_Mode.md) | value |
| `argReferenceMember` | [IDMObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md) | value |
| `argReferenceParent` | [IDMObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md) | value |
| `argTargetParent` | [IDMObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md) | value |

**Returns:** `bool`

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

### DM_AddObject

Adds a reference object for the ECO to compare the target document against this reference document.

```csharp
bool DM_AddObject(TECO_Mode argMode, IDMObject argReferenceObject);
bool DM_AddObject(int argMode, object argReferenceObject);
```

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

**Returns:** `bool`

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

### DM_Begin

Denotes that the ECO manager has started.

```csharp
void DM_Begin();
```

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

### DM_ChangeObject

Changes a specific action in the ECO manager.

```csharp
bool DM_ChangeObject(TECO_Mode argMode, TModificationKind argKind, IDMObject argObjectToChange, IDMObject argReferenceObject, IUpdateParameterOptions argUpdateParameterOptions);
bool DM_ChangeObject(int argMode, int argKind, object argObjectToChange, object argReferenceObject, object argUpdateParameterOptions);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argMode` | [TECO_Mode](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/TECO_Mode.md) | value |
| `argKind` | [TModificationKind](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/TModificationKind.md) | value |
| `argObjectToChange` | [IDMObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md) | value |
| `argReferenceObject` | [IDMObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md) | value |
| `argUpdateParameterOptions` | [IUpdateParameterOptions](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IUpdateParameterOptions.md) | value |

**Returns:** `bool`

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

### DM_End

Denotes that the ECO manager has ended.

```csharp
void DM_End();
```

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

### DM_RemoveMemberFromObject

Removes a specific action in the ECO manager.

```csharp
bool DM_RemoveMemberFromObject(TECO_Mode argMode, IDMObject argMemberObject, IDMObject argParentObject);
bool DM_RemoveMemberFromObject(int argMode, object argMemberObject, object argParentObject);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argMode` | [TECO_Mode](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/TECO_Mode.md) | value |
| `argMemberObject` | [IDMObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md) | value |
| `argParentObject` | [IDMObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/edp/IDMObject.md) | value |

**Returns:** `bool`

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

### DM_RemoveObject

Removes a reference object depending on what ECO mode is.

```csharp
bool DM_RemoveObject(TECO_Mode argMode, IDMObject argObjectToRemove);
bool DM_RemoveObject(int argMode, object argObjectToRemove);
```

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

**Returns:** `bool`

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