
# IPCB_AbstractOptions interface

The base interface of the PCB options interfaces: it identifies the kind of options object and writes its settings to and reads them from a parameter string.

```csharp
public interface IPCB_AbstractOptions
```

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

**Derived:** [IPCB_AdvancedPlacerOptions](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_AdvancedPlacerOptions.md), [IPCB_DesignRuleCheckerOptions](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_DesignRuleCheckerOptions.md), [IPCB_ECOOptions](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_ECOOptions.md), [IPCB_GerberOptions](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_GerberOptions.md), [IPCB_InteractiveRoutingOptions](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_InteractiveRoutingOptions.md), [IPCB_OutputOptions](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_OutputOptions.md), [IPCB_PrinterOptions](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_PrinterOptions.md), [IPCB_SpecctraRouterOptions](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_SpecctraRouterOptions.md), [IPCB_SystemOptions](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_SystemOptions.md)

## Remarks

[`IPCB_ServerInterface.SystemOptions`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_ServerInterface.md#systemoptions) and [`IPCB_ServerInterface.InteractiveRoutingOptions`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_ServerInterface.md#interactiveroutingoptions) return global options objects created by the PCB Server. [`IPCB_Board.OutputOptions`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Board.md#outputoptions), [`IPCB_Board.ECOOptions`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Board.md#ecooptions), [`IPCB_Board.GerberOptions`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Board.md#gerberoptions), [`IPCB_Board.PrinterOptions`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Board.md#printeroptions) and [`IPCB_Board.PlacerOptions`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Board.md#placeroptions) return the options of a PCB document.

Which settings the export and import methods handle depends on the options interface; see the derived interfaces. [`Export_ToParameters_Version4`](#export_toparameters_version4) and [`Import_FromParameters_Version4`](#import_fromparameters_version4) handle the same parameters as [`Export_ToParameters`](#export_toparameters) and [`Import_FromParameters`](#import_fromparameters).

## Properties

| Property | Type | Access | Description |
| --- | --- | --- | --- |
| [ObjectID](#objectid) | [TOptionsObjectId](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TOptionsObjectId.md) | get; set | The kind of options object, set by each options object when it is created: for example `TOptionsObjectId.eSystemOptions` for the system options and `TOptionsObjectId.ePrinterOptions` for printer opti… |

### ObjectID

The kind of options object, set by each options object when it is created: for example `TOptionsObjectId.eSystemOptions` for the system options and `TOptionsObjectId.ePrinterOptions` for printer options.

```csharp
TOptionsObjectId GetState_ObjectID();
void SetState_ObjectID(TOptionsObjectId argOId);
```

**Type:** [TOptionsObjectId](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TOptionsObjectId.md) · **Access:** read/write

The accessors are extension methods of `IPCB_AbstractOptionsHelper` (`using PCB;`).

## Methods

| Method | Returns | Description |
| --- | --- | --- |
| [Export_ToParameters](#export_toparameters) | `void` | Writes the settings of the options object to a parameter string. |
| [Export_ToParameters_Version3](#export_toparameters_version3) | `void` | Writes the settings of the options object to a parameter string in the version 3 layout. |
| [Export_ToParameters_Version4](#export_toparameters_version4) | `void` | Writes the settings of the options object to a parameter string, as [`Export_ToParameters`](#export_toparameters) does. |
| [Import_FromParameters](#import_fromparameters) | `void` | Reads the settings of the options object from a parameter string. |
| [Import_FromParameters_Version3](#import_fromparameters_version3) | `void` | Reads the settings of the options object from a parameter string in the version 3 layout. |
| [Import_FromParameters_Version4](#import_fromparameters_version4) | `void` | Reads the settings of the options object from a parameter string, as [`Import_FromParameters`](#import_fromparameters) does. |

### Export_ToParameters

Writes the settings of the options object to a parameter string.

```csharp
void Export_ToParameters(ref string argParameters);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argParameters` | `string` | ref | The parameter string that receives the settings. |

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

The previous content of the string is discarded.

### Export_ToParameters_Version3

Writes the settings of the options object to a parameter string in the version 3 layout.

```csharp
void Export_ToParameters_Version3(ref string argParameters);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argParameters` | `string` | ref | The parameter string that receives the settings. |

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

The previous content of the string is discarded.

### Export_ToParameters_Version4

Writes the settings of the options object to a parameter string, as [`Export_ToParameters`](#export_toparameters) does.

```csharp
void Export_ToParameters_Version4(ref string argParameters);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argParameters` | `string` | ref | The parameter string that receives the settings. |

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

The previous content of the string is discarded.

### Import_FromParameters

Reads the settings of the options object from a parameter string.

```csharp
void Import_FromParameters(TUnit argDisplayUnit, string argParameters);
void Import_FromParameters(int argDisplayUnit, string argParameters);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argDisplayUnit` | [TUnit](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TUnit.md) | value | The unit of coordinate values in the string that have no `mm` or `mil` suffix: millimetres for `TUnit.eMetric`, mils for `TUnit.eImperial`. |
| `argParameters` | `string` | value | The parameter string to read. |

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

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

### Import_FromParameters_Version3

Reads the settings of the options object from a parameter string in the version 3 layout.

```csharp
void Import_FromParameters_Version3(TUnit argDisplayUnit, string argParameters);
void Import_FromParameters_Version3(int argDisplayUnit, string argParameters);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argDisplayUnit` | [TUnit](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TUnit.md) | value | The unit of coordinate values in the string that have no `mm` or `mil` suffix: millimetres for `TUnit.eMetric`, mils for `TUnit.eImperial`. |
| `argParameters` | `string` | value | The parameter string to read. |

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

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

### Import_FromParameters_Version4

Reads the settings of the options object from a parameter string, as [`Import_FromParameters`](#import_fromparameters) does.

```csharp
void Import_FromParameters_Version4(TUnit argDisplayUnit, string argParameters);
void Import_FromParameters_Version4(int argDisplayUnit, string argParameters);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argDisplayUnit` | [TUnit](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TUnit.md) | value | The unit of coordinate values in the string that have no `mm` or `mil` suffix: millimetres for `TUnit.eMetric`, mils for `TUnit.eImperial`. |
| `argParameters` | `string` | value | The parameter string to read. |

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

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

## Returned by

[IPCB_OptionsList.OptionSet](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_OptionsList.md#optionset)

## Accepted by

[IPCB_OptionsList.Delete](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_OptionsList.md#delete), [IPCB_OptionsList.Insert](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_OptionsList.md#insert)
