
# IPCB_PrinterOptions interface

The printer and plotter settings of a PCB document in the PCB Editor, returned by [`IPCB_Board.PrinterOptions`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Board.md#printeroptions).

```csharp
public interface IPCB_PrinterOptions : IPCB_AbstractOptions
```

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

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

## Remarks

The interface extends [`IPCB_AbstractOptions`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_AbstractOptions.md). The settings form two groups: general options (device, scaling, plot modes, pad annotation and pen-plotter settings) and per-layer composite options ([`CompositePlotLayers`](#compositeplotlayers), [`CompositePlotPens`](#compositeplotpens), [`CompositePlotMonoLayers`](#compositeplotmonolayers), [`CompositePlotColorLayers`](#compositeplotcolorlayers)). Each group can be written to and read from a parameter string.

[`Export_ToParameters`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_AbstractOptions.md#export_toparameters) writes every setting as a parameter; [`Import_FromParameters`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_AbstractOptions.md#import_fromparameters) reads them. Both handle the two groups; [`Import_FromParameters_Version3`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_AbstractOptions.md#import_fromparameters_version3) and [`Export_ToParameters_Version3`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_AbstractOptions.md#export_toparameters_version3) handle the general options and the per-layer options in the version 3 layer numbering.

## Properties

| Property | Type | Access | Description |
| --- | --- | --- | --- |
| [BatchType](#batchtype) | [TPrinterBatch](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TPrinterBatch.md) | get; set | The print batch mode, plot per sheet (`TPrinterBatch.ePlotPerSheet`) or panelize (`TPrinterBatch.ePanelize`). |
| [cBorderSize](#cbordersize) | `int` | get; set | The border size of the printout, in internal units (10,000 per mil). |
| [CompositePlotColorLayers](#compositeplotcolorlayers) | `uint` | get; set | The colour used for a layer in a colour composite plot. |
| [CompositePlotLayers](#compositeplotlayers) | `bool` | get; set | Whether a layer is included in composite plots. |
| [CompositePlotMonoLayers](#compositeplotmonolayers) | `uint` | get; set | The colour used for a layer in a monochrome composite plot. |
| [CompositePlotPens](#compositeplotpens) | `int` | get; set | The pen-plotter pen number assigned to a layer. |
| [CompositeType](#compositetype) | [TPrinterComposite](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TPrinterComposite.md) | get; set | The composite print mode, colour (`TPrinterComposite.eColorComposite`) or monochrome (`TPrinterComposite.eMonoComposite`). |
| [Device](#device) | `string` | get; set | The name of the target printer device. |
| [Driver](#driver) | `string` | get; set | The name of the printer driver. |
| [OutPut](#output) | `string` | get; set | The printer output string. |
| [OutputDriverType](#outputdrivertype) | [TOutputDriverType](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TOutputDriverType.md) | get; set | The type of output driver. |
| [PlotMode](#plotmode) | [TDrawMode](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TDrawMode.md) | get; set | The draw mode (full, draft or hidden) used to plot objects of a given kind. |
| [PlotPadNets](#plotpadnets) | `bool` | get; set | Whether pad net names are printed. |
| [PlotPadNumbers](#plotpadnumbers) | `bool` | get; set | Whether pad numbers are printed. |
| [PlotterLanguage](#plotterlanguage) | [TPlotterLanguage](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TPlotterLanguage.md) | get; set | The command language of the pen plotter, HPGL (`TPlotterLanguage.ePlotterLanguageHPGL`) or DMPL (`TPlotterLanguage.ePlotterLanguageDMPL`). |
| [PlotterOutputPort](#plotteroutputport) | [TOutputPort](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TOutputPort.md) | get; set | The port or file the pen plotter output is sent to. |
| [PlotterPens](#plotterpens) | [PlotterPen](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/PlotterPen.md) | get; set | The speed and thickness of a pen-plotter pen. |
| [PlotterScale](#plotterscale) | `double` | get; set | The scale factor of pen-plotter output. |
| [PlotterShowHoles](#plottershowholes) | `bool` | get; set | Whether holes are drawn on pen-plotter output. |
| [PlotterUseSoftwareArcs](#plotterusesoftwarearcs) | `bool` | get; set | Whether arcs on pen-plotter output are drawn in software. |
| [PlotterWaitBetweenSheets](#plotterwaitbetweensheets) | `bool` | get; set | Whether the pen plotter pauses between sheets. |
| [PlotterXCorrect](#plotterxcorrect) | `double` | get; set | The horizontal correction factor of pen-plotter output. |
| [PlotterXOffset](#plotterxoffset) | `int` | get; set | The horizontal offset of pen-plotter output, in internal units (10,000 per mil). |
| [PlotterYCorrect](#plotterycorrect) | `double` | get; set | The vertical correction factor of pen-plotter output. |
| [PlotterYOffset](#plotteryoffset) | `int` | get; set | The vertical offset of pen-plotter output, in internal units (10,000 per mil). |
| [Scale](#scale) | `double` | get; set | The print scale factor, used when [`ScaleToFitPage`](#scaletofitpage) is false. |
| [ScaleToFitPage](#scaletofitpage) | `bool` | get; set | Whether the printout is scaled to fit the page instead of using `Scale`. |
| [ShowHoles](#showholes) | `bool` | get; set | Whether pad and via holes are shown on printed output. |
| [UsePrinterFonts](#useprinterfonts) | `bool` | get; set | Whether text is printed with the printer's fonts. |
| [UseSoftwareArcs](#usesoftwarearcs) | `bool` | get; set | Whether arcs on printed output are drawn in software. |
| [XCorrect](#xcorrect) | `double` | get; set | The horizontal scale correction factor of the printer. |
| [YCorrect](#ycorrect) | `double` | get; set | The vertical scale correction factor of the printer. |

### BatchType

The print batch mode, plot per sheet (`TPrinterBatch.ePlotPerSheet`) or panelize (`TPrinterBatch.ePanelize`).

```csharp
TPrinterBatch GetState_BatchType();
void SetState_BatchType(TPrinterBatch argValue);
```

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

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

### cBorderSize

The border size of the printout, in internal units (10,000 per mil).

```csharp
int GetState_cBorderSize();
void SetState_cBorderSize(int argValue);
```

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

### CompositePlotColorLayers

The colour used for a layer in a colour composite plot.

```csharp
uint GetState_CompositePlotColorLayers(TV6_Layer argL);
void SetState_CompositePlotColorLayers(TV6_Layer argL, uint argValue);
```

**Type:** `uint` · **Access:** read/write · **Index:** `argL` ([TV6_Layer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TV6_Layer.md)): The layer.

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

### CompositePlotLayers

Whether a layer is included in composite plots.

```csharp
bool GetState_CompositePlotLayers(TV6_Layer argL);
void SetState_CompositePlotLayers(TV6_Layer argL, bool argValue);
```

**Type:** `bool` · **Access:** read/write · **Index:** `argL` ([TV6_Layer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TV6_Layer.md)): The layer.

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

### CompositePlotMonoLayers

The colour used for a layer in a monochrome composite plot.

```csharp
uint GetState_CompositePlotMonoLayers(TV6_Layer argL);
void SetState_CompositePlotMonoLayers(TV6_Layer argL, uint argValue);
```

**Type:** `uint` · **Access:** read/write · **Index:** `argL` ([TV6_Layer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TV6_Layer.md)): The layer.

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

### CompositePlotPens

The pen-plotter pen number assigned to a layer.

```csharp
int GetState_CompositePlotPens(TV6_Layer argL);
void SetState_CompositePlotPens(TV6_Layer argL, int argValue);
```

**Type:** `int` · **Access:** read/write · **Index:** `argL` ([TV6_Layer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TV6_Layer.md)): The layer.

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

### CompositeType

The composite print mode, colour (`TPrinterComposite.eColorComposite`) or monochrome (`TPrinterComposite.eMonoComposite`).

```csharp
TPrinterComposite GetState_CompositeType();
void SetState_CompositeType(TPrinterComposite argValue);
```

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

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

### Device

The name of the target printer device.

```csharp
string GetState_Device();
void SetState_Device(string argValue);
```

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

### Driver

The name of the printer driver.

```csharp
string GetState_Driver();
void SetState_Driver(string argValue);
```

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

### OutPut

The printer output string.

```csharp
string GetState_OutPut();
void SetState_OutPut(string argValue);
```

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

### OutputDriverType

The type of output driver.

```csharp
TOutputDriverType GetState_OutputDriverType();
void SetState_OutputDriverType(TOutputDriverType argValue);
```

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

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

### PlotMode

The draw mode (full, draft or hidden) used to plot objects of a given kind.

```csharp
TDrawMode GetState_PlotMode(TObjectId argOId);
void SetState_PlotMode(TObjectId argOId, TDrawMode argValue);
```

**Type:** [TDrawMode](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TDrawMode.md) · **Access:** read/write · **Index:** `argOId` ([TObjectId](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TObjectId.md)): The object kind.

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

### PlotPadNets

Whether pad net names are printed.

```csharp
bool GetState_PlotPadNets();
void SetState_PlotPadNets(bool argValue);
```

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

### PlotPadNumbers

Whether pad numbers are printed.

```csharp
bool GetState_PlotPadNumbers();
void SetState_PlotPadNumbers(bool argValue);
```

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

### PlotterLanguage

The command language of the pen plotter, HPGL (`TPlotterLanguage.ePlotterLanguageHPGL`) or DMPL (`TPlotterLanguage.ePlotterLanguageDMPL`).

```csharp
TPlotterLanguage GetState_PlotterLanguage();
void SetState_PlotterLanguage(TPlotterLanguage argValue);
```

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

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

### PlotterOutputPort

The port or file the pen plotter output is sent to.

```csharp
TOutputPort GetState_PlotterOutputPort();
void SetState_PlotterOutputPort(TOutputPort argValue);
```

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

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

### PlotterPens

The speed and thickness of a pen-plotter pen.

```csharp
PlotterPen GetState_PlotterPens(int argPen);
void SetState_PlotterPens(int argPen, PlotterPen argValue);
```

**Type:** [PlotterPen](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/PlotterPen.md) · **Access:** read/write · **Index:** `argPen` (`int`): The pen number.

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

The pen's `Thickness` is in internal units (10,000 per mil).

### PlotterScale

The scale factor of pen-plotter output.

```csharp
double GetState_PlotterScale();
void SetState_PlotterScale(double argValue);
```

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

### PlotterShowHoles

Whether holes are drawn on pen-plotter output.

```csharp
bool GetState_PlotterShowHoles();
void SetState_PlotterShowHoles(bool argValue);
```

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

### PlotterUseSoftwareArcs

Whether arcs on pen-plotter output are drawn in software.

```csharp
bool GetState_PlotterUseSoftwareArcs();
void SetState_PlotterUseSoftwareArcs(bool argValue);
```

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

### PlotterWaitBetweenSheets

Whether the pen plotter pauses between sheets.

```csharp
bool GetState_PlotterWaitBetweenSheets();
void SetState_PlotterWaitBetweenSheets(bool argValue);
```

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

### PlotterXCorrect

The horizontal correction factor of pen-plotter output.

```csharp
double GetState_PlotterXCorrect();
void SetState_PlotterXCorrect(double argValue);
```

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

### PlotterXOffset

The horizontal offset of pen-plotter output, in internal units (10,000 per mil).

```csharp
int GetState_PlotterXOffset();
void SetState_PlotterXOffset(int argValue);
```

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

### PlotterYCorrect

The vertical correction factor of pen-plotter output.

```csharp
double GetState_PlotterYCorrect();
void SetState_PlotterYCorrect(double argValue);
```

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

### PlotterYOffset

The vertical offset of pen-plotter output, in internal units (10,000 per mil).

```csharp
int GetState_PlotterYOffset();
void SetState_PlotterYOffset(int argValue);
```

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

### Scale

The print scale factor, used when [`ScaleToFitPage`](#scaletofitpage) is false.

```csharp
double GetState_Scale();
void SetState_Scale(double argValue);
```

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

The `Print_Scale` special string shows this value with two decimals, or `SCALED TO FIT` when [`ScaleToFitPage`](#scaletofitpage) is true.

### ScaleToFitPage

Whether the printout is scaled to fit the page instead of using `Scale`.

```csharp
bool GetState_ScaleToFitPage();
void SetState_ScaleToFitPage(bool argValue);
```

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

### ShowHoles

Whether pad and via holes are shown on printed output.

```csharp
bool GetState_ShowHoles();
void SetState_ShowHoles(bool argValue);
```

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

### UsePrinterFonts

Whether text is printed with the printer's fonts.

```csharp
bool GetState_UsePrinterFonts();
void SetState_UsePrinterFonts(bool argValue);
```

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

### UseSoftwareArcs

Whether arcs on printed output are drawn in software.

```csharp
bool GetState_UseSoftwareArcs();
void SetState_UseSoftwareArcs(bool argValue);
```

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

### XCorrect

The horizontal scale correction factor of the printer.

```csharp
double GetState_XCorrect();
void SetState_XCorrect(double argValue);
```

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

### YCorrect

The vertical scale correction factor of the printer.

```csharp
double GetState_YCorrect();
void SetState_YCorrect(double argValue);
```

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

## Methods

| Method | Returns | Description |
| --- | --- | --- |
| [Export_ToParameters_GeneralOptions](#export_toparameters_generaloptions) | `void` | Writes the general printer settings to a parameter string. |
| [Export_ToParameters_LayerOptions](#export_toparameters_layeroptions) | `void` | Writes the per-layer composite settings to a parameter string. |
| [Export_ToParameters_LayerOptions_Version3](#export_toparameters_layeroptions_version3) | `void` | Writes the per-layer composite settings to a parameter string in the version 3 layer numbering. |
| [Import_FromParameters_GeneralOptions](#import_fromparameters_generaloptions) | `void` | Reads the general printer settings from a parameter string. |
| [Import_FromParameters_LayerOptions](#import_fromparameters_layeroptions) | `void` | Reads the per-layer composite settings from a parameter string. |
| [Import_FromParameters_LayerOptions_Version3](#import_fromparameters_layeroptions_version3) | `void` | Reads the per-layer composite settings from a parameter string that uses the version 3 layer numbering. |

### Export_ToParameters_GeneralOptions

Writes the general printer settings to a parameter string.

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

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

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

Writes `Device`, `Driver`, [`OutPut`](#output), [`ShowHoles`](#showholes), [`ScaleToFitPage`](#scaletofitpage), [`UsePrinterFonts`](#useprinterfonts), [`UseSoftwareArcs`](#usesoftwarearcs), [`BatchType`](#batchtype), [`CompositeType`](#compositetype), [`cBorderSize`](#cbordersize), `Scale`, [`XCorrect`](#xcorrect), [`YCorrect`](#ycorrect), [`PlotPadNets`](#plotpadnets), [`PlotPadNumbers`](#plotpadnumbers), the pen-plotter settings including [`PlotterPens`](#plotterpens) for pens 1 to 8, [`PlotMode`](#plotmode) and [`OutputDriverType`](#outputdrivertype). The per-layer settings are not written: use [`Export_ToParameters_LayerOptions`](#export_toparameters_layeroptions).

### Export_ToParameters_LayerOptions

Writes the per-layer composite settings to a parameter string.

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

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

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

Writes [`CompositePlotLayers`](#compositeplotlayers), [`CompositePlotPens`](#compositeplotpens), [`CompositePlotMonoLayers`](#compositeplotmonolayers) and [`CompositePlotColorLayers`](#compositeplotcolorlayers) for every layer.

### Export_ToParameters_LayerOptions_Version3

Writes the per-layer composite settings to a parameter string in the version 3 layer numbering.

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

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

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

Writes the same settings as [`Export_ToParameters_LayerOptions`](#export_toparameters_layeroptions), but numbers the layers as the version 3 format does; layers that have no version 3 equivalent are left out.

### Import_FromParameters_GeneralOptions

Reads the general printer settings from a parameter string.

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

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argDisplayUnit` | [TUnit](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TUnit.md) | value | The unit used to read coordinate values, such as [`cBorderSize`](#cbordersize), the plotter offsets and the pen thicknesses. |
| `argParameters` | `string` | value | The parameter string to read. |

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

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

Reads the settings that [`Export_ToParameters_GeneralOptions`](#export_toparameters_generaloptions) writes; the per-layer settings are read by [`Import_FromParameters_LayerOptions`](#import_fromparameters_layeroptions). Every object kind gets the draw mode of the first character of the [`PlotMode`](#plotmode) value, so per-kind draw modes written by [`Export_ToParameters_GeneralOptions`](#export_toparameters_generaloptions) do not survive a round trip.

### Import_FromParameters_LayerOptions

Reads the per-layer composite settings from a parameter string.

```csharp
void Import_FromParameters_LayerOptions(string argParameters);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argParameters` | `string` | value | The parameter string to read. |

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

Reads the settings that [`Export_ToParameters_LayerOptions`](#export_toparameters_layeroptions) writes. A layer whose setting is missing from the string keeps its current value.

### Import_FromParameters_LayerOptions_Version3

Reads the per-layer composite settings from a parameter string that uses the version 3 layer numbering.

```csharp
void Import_FromParameters_LayerOptions_Version3(string argParameters);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argParameters` | `string` | value | The parameter string to read. |

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

Reads the same settings as [`Import_FromParameters_LayerOptions`](#import_fromparameters_layeroptions) and converts each version 3 layer number to the corresponding current layer. A layer whose setting is missing from the string keeps its current value.

## Inherited members

- From [IPCB_AbstractOptions](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_AbstractOptions.md): [Export_ToParameters](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_AbstractOptions.md#export_toparameters), [Export_ToParameters_Version3](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_AbstractOptions.md#export_toparameters_version3), [Export_ToParameters_Version4](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_AbstractOptions.md#export_toparameters_version4), [Import_FromParameters](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_AbstractOptions.md#import_fromparameters), [Import_FromParameters_Version3](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_AbstractOptions.md#import_fromparameters_version3), [Import_FromParameters_Version4](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_AbstractOptions.md#import_fromparameters_version4), [ObjectID](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_AbstractOptions.md#objectid)

## Returned by

[IPCB_Board.PrinterOptions](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Board.md#printeroptions)
