
# IPCB_LayerStack interface

A layer stack of a board, such as the one [`IPCB_Board.LayerStack`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Board.md#layerstack) returns or a substack of the board's [`IPCB_MasterLayerStack`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_MasterLayerStack.md).

```csharp
public interface IPCB_LayerStack : IPCB_LayerStackBase
```

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

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

## Remarks

Walk its layers with the members inherited from [`IPCB_LayerStackBase`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStackBase.md), such as [`IPCB_LayerStackBase.Iterator`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStackBase.md#iterator), [`IPCB_LayerStackBase.First`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStackBase.md#first) and [`IPCB_LayerStackBase.Next`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStackBase.md#next). The layer walk with `FirstLayer` and `NextLayer` belongs to [`IPCB_LayerStack_V7`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStack_V7.md), which [`IPCB_Board.LayerStack_V7`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Board.md#layerstack_v7) returns.

Each kind of layer has its own interface derived from [`IPCB_LayerObject`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerObject.md), such as [`IPCB_SignalLayer`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_SignalLayer.md), [`IPCB_InternalPlane`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_InternalPlane.md), [`IPCB_DielectricLayer`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_DielectricLayer.md) and [`IPCB_SolderMaskLayer`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_SolderMaskLayer.md).

## Properties

| Property | Type | Access | Description |
| --- | --- | --- | --- |
| [BottomSignalLayer](#bottomsignallayer) | [V7_LayerBase](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/V7_LayerBase.md) | get | The layer [`ID`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStackBase.md#id) of the last electrical layer of the layer stack that is not a coverlay layer. |
| [ShowBotDielectric](#showbotdielectric) | `bool` | get; set |  |
| [ShowTopDielectric](#showtopdielectric) | `bool` | get; set |  |
| [TopSignalLayer](#topsignallayer) | [V7_LayerBase](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/V7_LayerBase.md) | get | The layer [`ID`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStackBase.md#id) of the first electrical layer of the layer stack that is not a coverlay layer. |

### BottomSignalLayer

The layer [`ID`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStackBase.md#id) of the last electrical layer of the layer stack that is not a coverlay layer.

```csharp
V7_LayerBase GetState_BottomSignalLayer();
```

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

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

It is the bottom layer when the stack has no such layer.

### ShowBotDielectric

*No description yet.*

```csharp
bool GetState_ShowBotDielectric();
void SetState_ShowBotDielectric(bool argValue);
```

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

The value is a stored flag of the layer stack; setting it changes only the flag.

### ShowTopDielectric

*No description yet.*

```csharp
bool GetState_ShowTopDielectric();
void SetState_ShowTopDielectric(bool argValue);
```

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

The value is a stored flag of the layer stack; setting it changes only the flag.

### TopSignalLayer

The layer [`ID`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStackBase.md#id) of the first electrical layer of the layer stack that is not a coverlay layer.

```csharp
V7_LayerBase GetState_TopSignalLayer();
```

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

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

It is the top layer when the stack has no such layer.

## Methods

| Method | Returns | Description |
| --- | --- | --- |
| [Board](#board) | [IPCB_Board](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Board.md) | Returns the board that owns the layer stack, or null when there is none. |
| [DielectricBottom](#dielectricbottom) | [IPCB_SolderMaskLayer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_SolderMaskLayer.md) | Returns the bottom solder mask layer of the layer stack, or null when the stack has none. |
| [DielectricTop](#dielectrictop) | [IPCB_SolderMaskLayer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_SolderMaskLayer.md) | Returns the top solder mask layer of the layer stack, or null when the stack has none. |
| [LayerObject](#layerobject) | [IPCB_LayerObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerObject.md) | Returns the layer object of the given layer. |
| [LayerObject_1](#layerobject_1) | [IPCB_LayerObject](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerObject.md) | Returns the layer object of the given layer. |

### Board

Returns the board that owns the layer stack, or null when there is none.

```csharp
IPCB_Board Board();
```

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

Extension method of `IPCB_LayerStackHelper` (`using PCB;`).

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

### DielectricBottom

Returns the bottom solder mask layer of the layer stack, or null when the stack has none.

```csharp
IPCB_SolderMaskLayer DielectricBottom();
```

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

Extension method of `IPCB_LayerStackHelper` (`using PCB;`).

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

### DielectricTop

Returns the top solder mask layer of the layer stack, or null when the stack has none.

```csharp
IPCB_SolderMaskLayer DielectricTop();
```

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

Extension method of `IPCB_LayerStackHelper` (`using PCB;`).

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

### LayerObject

Returns the layer object of the given layer.

```csharp
IPCB_LayerObject LayerObject(TV6_Layer argLayer);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argLayer` | [TV6_Layer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TV6_Layer.md) | value | The layer, from `TV6_Layer.eV6_TopLayer` to `TV6_Layer.eV6_ViaHoleLayer`; any other value returns null. |

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

Extension method of `IPCB_LayerStackHelper` (`using PCB;`).

For a layer that is not in the layer stack it returns the master layer stack's layer object with that layer [`ID`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStackBase.md#id), created when needed. So it also returns a layer object for a layer that is not in the stack, such as a keep-out layer or a mechanical layer.

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

### LayerObject_1

Returns the layer object of the given layer.

```csharp
IPCB_LayerObject LayerObject_1(V7_LayerBase argLayer);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argLayer` | [V7_LayerBase](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/V7_LayerBase.md) | value |

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

Extension method of `IPCB_LayerStackHelper` (`using PCB;`).

For a layer that is not in the layer stack it returns the master layer stack's layer object with that layer [`ID`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStackBase.md#id), created when needed. So it also returns a layer object for a layer that is not in the stack, such as a keep-out layer or a mechanical layer.

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

## Inherited members

- From [IPCB_LayerStackBase](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStackBase.md): [Count](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStackBase.md#count), [Count_1](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStackBase.md#count_1), [Count_2](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStackBase.md#count_2), [First](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStackBase.md#first), [ID](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStackBase.md#id), [IsFlex](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStackBase.md#isflex), [Iterator](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStackBase.md#iterator), [Iterator_1](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStackBase.md#iterator_1), [Iterator_2](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStackBase.md#iterator_2), [Last](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStackBase.md#last), [Name](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStackBase.md#name), [Next](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStackBase.md#next), [Previous](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStackBase.md#previous), [StateID](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStackBase.md#stateid), [ZBottom](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStackBase.md#zbottom), [ZTop](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_LayerStackBase.md#ztop)

## Returned by

[IPCB_Board.LayerStack](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Board.md#layerstack), [IPCB_BoardEx2.GetLayerStackAtPoint](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_BoardEx2.md#getlayerstackatpoint), [IPCB_BoardEx2.GetLayerStackForPrimitive](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_BoardEx2.md#getlayerstackforprimitive), [IPCB_BoardRegion.LayerStack](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_BoardRegion.md#layerstack), [IPCB_MasterLayerStack.CreateSubstack](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_MasterLayerStack.md#createsubstack), [IPCB_MasterLayerStack.GetSubstack](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_MasterLayerStack.md#getsubstack), [IPCB_MasterLayerStack.GetSubstack_1](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_MasterLayerStack.md#getsubstack_1), [IPCB_MasterLayerStack.Substacks](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_MasterLayerStack.md#substacks), [IPCB_MasterLayerStack2.CreateSubstackWithId](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_MasterLayerStack2.md#createsubstackwithid), [IPCB_StackObject.GetLayerStack](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_StackObject.md#getlayerstack), [IPCB_TraceImpedance.SubStack](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_TraceImpedance.md#substack)

## Accepted by

[IPCB_ImpedanceProfile.CreateTraceImpedance](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_ImpedanceProfile.md#createtraceimpedance), [IPCB_ImpedanceProfile.GetTraceImpedanceForLayer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_ImpedanceProfile.md#gettraceimpedanceforlayer), [IPCB_MasterLayerStack.DisableLayer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_MasterLayerStack.md#disablelayer), [IPCB_MasterLayerStack.EnableLayer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_MasterLayerStack.md#enablelayer), [IPCB_MasterLayerStack.RemoveSubstack](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_MasterLayerStack.md#removesubstack), [IPCB_MasterLayerStack2.ChangeSubStackId](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_MasterLayerStack2.md#changesubstackid)
