
# ISch_Implementation interface

Each schematic component can have models from one or more domains. A schematic component can also have multiple models per domain, one of which will be the current model for that domain.

```csharp
public interface ISch_Implementation : ISch_BasicContainer
```

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

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

## Remarks

A model represents all the information needed for a component in a given domain, while a datafile entity (or link) is the only information which is in an external file.

The models of a component are represented by the `ISch_Implementation` interface.

The mapping of pins of a component and the nodes/pads of a model are represented by the [`ISch_MapDefiner`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_MapDefiner.md) interfaces.

The link between a model and its external data file links are represented by the ISch_DataFileLink interfaces.

A diagram of the relationship between a component and its models

A model can be represented by external data sources called data file links. For example, pins of a component can have links to different data files, as for signal integrity models. We will consider each model type in respect to the data file links for the main editor servers supported in Altium Designer.

For the PCB footprints, the model and the data file are both the same.

With the simulation models, you can have a simulation model which is a 4ohm resistor for example, there is a simulation model here, but there is no information is coming from an external file, therefore, a no external file is needed for this as the resistor model is built from spice. This is the case where you have a model with no data file entity. Thus the parameters are used for these types of simulation models that don't have data file links.

With signal integrity models, it can have information required for each pin. If we used IBIS datafiles, not the Altium Designer's central database, then each signal integrity model would then have multiple data files, each one for each type of pin.

A model can also be called an implementation. Each implementation linked to a component can have parameters and data file links.

## Properties

| Property | Type | Access | Description |
| --- | --- | --- | --- |
| [DatabaseDatalinksLocked](#databasedatalinkslocked) | `bool` | get; set |  |
| [DatabaseModel](#databasemodel) | `bool` | get; set |  |
| [DatafileLinkCount](#datafilelinkcount) | `int` | get | This property fetches the number of data file links for the current implementation of the schematic component. |
| [DatalinksLocked](#datalinkslocked) | `bool` | get; set |  |
| [Description](#description) | `string` | get; set | The Description property fetches or sets the Description string for the model. |
| [IntegratedModel](#integratedmodel) | `bool` | get; set | The property determines whether the implementation is an integrated model type or not. |
| [IsCurrent](#iscurrent) | `bool` | get; set |  |
| [MapAsString](#mapasstring) | `string` | get; set | This `MapAsString` property returns or sets the map of the component pins to a model pins (simulation ports for example) as a string of the following format: (SchematicPinNumber:ModelPinNumber) for exa… |
| [ModelItemGUID](#modelitemguid) | `string` | get; set |  |
| [ModelName](#modelname) | `string` | get; set |  |
| [ModelRevisionGUID](#modelrevisionguid) | `string` | get; set |  |
| [ModelType](#modeltype) | `string` | get; set |  |
| [ModelVaultGUID](#modelvaultguid) | `string` | get; set |  |
| [SchDatafileLink](#schdatafilelink) | [ISch_ModelDatafileLink](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_ModelDatafileLink.md) | get | The DatafileLink property determines the indexed datafilelink of the model type linked to the component. |
| [SchDefinerByInterfaceDesignator](#schdefinerbyinterfacedesignator) | [ISch_MapDefiner](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_MapDefiner.md) | get |  |
| [UseComponentLibrary](#usecomponentlibrary) | `bool` | get; set | This `UseComponentLibrary` property determines whether the component is from an integrated library or not (either as an installed library or part of the Project Libraries. |

### DatabaseDatalinksLocked

*No description yet.*

```csharp
bool GetState_DatabaseDatalinksLocked();
void SetState_DatabaseDatalinksLocked(bool argValue);
```

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

### DatabaseModel

*No description yet.*

```csharp
bool GetState_DatabaseModel();
void SetState_DatabaseModel(bool argValue);
```

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

**See also:** [ISch_Implementation.IntegratedModel](#integratedmodel)

### DatafileLinkCount

This property fetches the number of data file links for the current implementation of the schematic component.

```csharp
int GetState_DatafileLinkCount();
```

**Type:** `int` · **Access:** read-only

### DatalinksLocked

*No description yet.*

```csharp
bool GetState_DatalinksLocked();
void SetState_DatalinksLocked(bool argValue);
```

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

### Description

The Description property fetches or sets the Description string for the model. This is optional and is for reference purposes and do not have any impact on simulation processes.

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

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

### IntegratedModel

The property determines whether the implementation is an integrated model type or not.

```csharp
bool GetState_IntegratedModel();
void SetState_IntegratedModel(bool argValue);
```

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

**See also:** [ISch_Implementation.DatabaseModel](#databasemodel)

### IsCurrent

*No description yet.*

```csharp
bool GetState_IsCurrent();
void SetState_IsCurrent(bool argValue);
```

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

### MapAsString

This `MapAsString` property returns or sets the map of the component pins to a model pins (simulation ports for example) as a string of the following format: (SchematicPinNumber:ModelPinNumber) for example (1:1),(2:2), ... ,(X:X)

```csharp
string GetState_MapAsString();
void SetState_MapAsString(string argValue);
```

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

### ModelItemGUID

*No description yet.*

```csharp
string GetState_ModelItemGUID();
void SetState_ModelItemGUID(string argValue);
```

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

### ModelName

*No description yet.*

```csharp
string GetState_ModelName();
void SetState_ModelName(string argValue);
```

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

### ModelRevisionGUID

*No description yet.*

```csharp
string GetState_ModelRevisionGUID();
void SetState_ModelRevisionGUID(string argValue);
```

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

### ModelType

*No description yet.*

```csharp
string GetState_ModelType();
void SetState_ModelType(string argValue);
```

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

### ModelVaultGUID

*No description yet.*

```csharp
string GetState_ModelVaultGUID();
void SetState_ModelVaultGUID(string argValue);
```

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

### SchDatafileLink

The DatafileLink property determines the indexed datafilelink of the model type linked to the component. A component can have multiple linked models and each model can have multiple external data file links.

```csharp
ISch_ModelDatafileLink GetState_SchDatafileLink(int argI);
```

**Type:** [ISch_ModelDatafileLink](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_ModelDatafileLink.md) · **Access:** read-only · **Index:** `argI` (`int`)

The accessors are extension methods of `ISch_ImplementationHelper` (`using SCH;`).

### SchDefinerByInterfaceDesignator

*No description yet.*

```csharp
ISch_MapDefiner GetState_SchDefinerByInterfaceDesignator(string argS);
```

**Type:** [ISch_MapDefiner](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_MapDefiner.md) · **Access:** read-only · **Index:** `argS` (`string`)

The accessors are extension methods of `ISch_ImplementationHelper` (`using SCH;`).

### UseComponentLibrary

This `UseComponentLibrary` property determines whether the component is from an integrated library or not (either as an installed library or part of the Project Libraries. This is accessed from the Available Libraries dialog in Altium Designer). A Boolean value is returned.

```csharp
bool GetState_UseComponentLibrary();
void SetState_UseComponentLibrary(bool argValue);
```

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

**See also:** [ISch_GraphicalObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_GraphicalObject.md), [ISch_Rectangle](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_Rectangle.md), [ISch_Image](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_Image.md)

## Methods

| Method | Returns | Description |
| --- | --- | --- |
| [AddDataFileLink](#adddatafilelink) | `void` |  |
| [ClearAllDatafileLinks](#clearalldatafilelinks) | `void` | This method removes all the data file links of the implementation (model) for the current component. |
| [LockImplementation](#lockimplementation) | `void` |  |
| [Map_Import_FromUser](#map_import_fromuser) | `bool` |  |

### AddDataFileLink

*No description yet.*

```csharp
void AddDataFileLink(string argnEntityName, string argLocation, string argFileKind);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argnEntityName` | `string` | value |
| `argLocation` | `string` | value |
| `argFileKind` | `string` | value |

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

### ClearAllDatafileLinks

This method removes all the data file links of the implementation (model) for the current component.

```csharp
void ClearAllDatafileLinks();
```

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

### LockImplementation

*No description yet.*

```csharp
void LockImplementation();
```

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

### Map_Import_FromUser

*No description yet.*

```csharp
bool Map_Import_FromUser(bool arglowOneToMany);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `arglowOneToMany` | `bool` | value |

**Returns:** `bool`

## Inherited members

- From [ISch_BasicContainer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_BasicContainer.md): [AddAndPositionSchObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_BasicContainer.md#addandpositionschobject), [AddSchObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_BasicContainer.md#addschobject), [CopyTo](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_BasicContainer.md#copyto), [DeleteAll](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_BasicContainer.md#deleteall), [DescriptionString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_BasicContainer.md#descriptionstring), [ExportToParameters](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_BasicContainer.md#exporttoparameters), [FreeAllContainedObjects](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_BasicContainer.md#freeallcontainedobjects), [Handle](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_BasicContainer.md#handle), [IdentifierString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_BasicContainer.md#identifierstring), [Import_FromUser](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_BasicContainer.md#import_fromuser), [ObjectId](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_BasicContainer.md#objectid), [OwnerSchDocument](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_BasicContainer.md#ownerschdocument), [RemoveSchObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_BasicContainer.md#removeschobject), [Replicate](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_BasicContainer.md#replicate), [SchBasicContainer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_BasicContainer.md#schbasiccontainer), [SchIterator_Create](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_BasicContainer.md#schiterator_create), [SchIterator_Destroy](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_BasicContainer.md#schiterator_destroy), [SchParameterByName](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_BasicContainer.md#schparameterbyname), [Setstate_Default](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_BasicContainer.md#setstate_default), [Text](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_BasicContainer.md#text), [UniqueId](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_BasicContainer.md#uniqueid), [WiringDiagramOriginUniqueId](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_BasicContainer.md#wiringdiagramoriginuniqueid)

## Returned by

[ISch_Component.AddSchImplementation](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_Component.md#addschimplementation)

## Accepted by

[IIbisModelImplementation.Export_ToImplementation](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/IIbisModelImplementation.md#export_toimplementation), [IIbisModelImplementation.Import_FromImplementation](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/IIbisModelImplementation.md#import_fromimplementation), [IModelEditor.DrawModel_FromSchImpl](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/IModelEditor.md#drawmodel_fromschimpl), [IModelEditor.EditModel](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/IModelEditor.md#editmodel), [IModelEditor.SetDefaultModelState](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/IModelEditor.md#setdefaultmodelstate), [IModelEditor3.EditModel_ReadOnly](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/IModelEditor3.md#editmodel_readonly), [IModelEditor4.InitModel](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/IModelEditor4.md#initmodel), [ISch_Component.RemoveSchImplementation](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISch_Component.md#removeschimplementation), [ISimModelMetafilePainter.SetSimImpl](https://altiumdeveloper.github.io/ad-sdk-docs/reference/sch/ISimModelMetafilePainter.md#setsimimpl)

## Examples

Used in the SDK examples: [Ciiva](https://github.com/AltiumDeveloper/ad-sdk-examples/blob/5b144f54740a53ec578b3b6c3f902b831e0b1144/Ciiva/Source%20Code/CiivaBOMDocument.cs#L96).
