
# IPCB_ViaStructure interface

*No description yet.*

```csharp
public interface IPCB_ViaStructure
```

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

## Properties

| Property | Type | Access | Description |
| --- | --- | --- | --- |
| [CanEditFeature](#caneditfeature) | `bool` | get |  |
| [CanEditMaterial](#caneditmaterial) | `bool` | get |  |
| [CanEditSide](#caneditside) | `bool` | get |  |
| [Feature](#feature) | [IPCB_ViaStructureFeature](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_ViaStructureFeature.md) | get |  |
| [FeatureByType](#featurebytype) | [IPCB_ViaStructureFeature](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_ViaStructureFeature.md) | get |  |
| [FeaturesCount](#featurescount) | `int` | get |  |
| [FeaturesSide](#featuresside) | [TViaStructureFeatureSide](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TViaStructureFeatureSide.md) | get; set |  |
| [StructureType](#structuretype) | [TViaStructureType](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TViaStructureType.md) | get; set |  |
| [vIndexForSave](#vindexforsave) | `int` | get; set |  |

### CanEditFeature

*No description yet.*

```csharp
bool GetState_CanEditFeature(TViaStructureFeatureType argType);
```

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

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

### CanEditMaterial

*No description yet.*

```csharp
bool GetState_CanEditMaterial(TViaStructureFeatureType argType);
```

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

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

### CanEditSide

*No description yet.*

```csharp
bool GetState_CanEditSide(TViaStructureFeatureType argType);
```

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

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

### Feature

*No description yet.*

```csharp
IPCB_ViaStructureFeature GetState_Feature(int argIndex);
```

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

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

### FeatureByType

*No description yet.*

```csharp
IPCB_ViaStructureFeature GetState_FeatureByType(TViaStructureFeatureType argType);
```

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

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

### FeaturesCount

*No description yet.*

```csharp
int GetState_FeaturesCount();
```

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

### FeaturesSide

*No description yet.*

```csharp
TViaStructureFeatureSide GetState_FeaturesSide();
void SetState_FeaturesSide(TViaStructureFeatureSide argValue);
```

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

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

### StructureType

*No description yet.*

```csharp
TViaStructureType GetState_StructureType();
void SetState_StructureType(TViaStructureType argValue);
```

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

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

### vIndexForSave

*No description yet.*

```csharp
int GetState_vIndexForSave();
void SetState_vIndexForSave(int argIndex);
```

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

## Methods

| Method | Returns | Description |
| --- | --- | --- |
| [CopyTo](#copyto) | `void` |  |
| [Deserialize](#deserialize) | `void` |  |
| [GetFeatureTypes](#getfeaturetypes) | [TViaStructureFeatureTypeSet](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/TViaStructureFeatureTypeSet.md) |  |
| [IsEqual](#isequal) | `bool` |  |
| [Replicate](#replicate) | [IPCB_ViaStructure](#) |  |
| [Serialize](#serialize) | `string` |  |

### CopyTo

*No description yet.*

```csharp
void CopyTo(IPCB_ViaStructure argViaStructure);
void CopyTo(object argViaStructure);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argViaStructure` | [IPCB_ViaStructure](#) | value |

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

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

### Deserialize

*No description yet.*

```csharp
void Deserialize(string argData);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argData` | `string` | value |

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

### GetFeatureTypes

*No description yet.*

```csharp
TViaStructureFeatureTypeSet GetFeatureTypes();
```

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

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

### IsEqual

*No description yet.*

```csharp
bool IsEqual(IPCB_ViaStructure argViaStructure);
bool IsEqual(object argViaStructure);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argViaStructure` | [IPCB_ViaStructure](#) | value |

**Returns:** `bool`

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

### Replicate

*No description yet.*

```csharp
IPCB_ViaStructure Replicate();
```

**Returns:** [IPCB_ViaStructure](#)

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

### Serialize

*No description yet.*

```csharp
string Serialize();
```

**Returns:** `string`

## Returned by

[IPCB_ViaStructureManager.CreateViaStructure](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_ViaStructureManager.md#createviastructure), [IPCB_ViaStructureManager.Item](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_ViaStructureManager.md#item), [IPCB_ViaStructureManager.RegisterViaStructure](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_ViaStructureManager.md#registerviastructure), [IPCB_ViaStructureSupport.GetViaStructureReplica](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_ViaStructureSupport.md#getviastructurereplica), [IPCB_ViaStructureSupport.ViaStructure](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_ViaStructureSupport.md#viastructure), [IPCB_ViaTemplate.ViaStructure](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_ViaTemplate.md#viastructure)

## Accepted by

[IPCB_ViaStructureManager.RegisterViaStructure](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_ViaStructureManager.md#registerviastructure)
