
# IPCB_ParametersFactory interface

Creates parameters, parameter lists and the parameters view of a primitive.

```csharp
public interface IPCB_ParametersFactory
```

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

## Remarks

`GetParametersFactory` of [`IPCB_ServerInterface`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_ServerInterface.md) returns the factory. Every call of its members returns a new object.

## Methods

| Method | Returns | Description |
| --- | --- | --- |
| [CreateParameter](#createparameter) | [IPCB_Parameter](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Parameter.md) | Creates a parameter with the given name, value and inherited mark. |
| [CreateParameterList](#createparameterlist) | [IPCB_ParameterList](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_ParameterList.md) | Creates a new, empty parameter list. |
| [CreatePrimitiveParameters](#createprimitiveparameters) | [IPCB_PrimitiveParameters](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_PrimitiveParameters.md) | Returns a new [`IPCB_PrimitiveParameters`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_PrimitiveParameters.md) object for a primitive, switched to the given variant. |

### CreateParameter

Creates a parameter with the given name, value and inherited mark.

```csharp
IPCB_Parameter CreateParameter(string argName, string argValue, bool argIsInherited);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argName` | `string` | value | The parameter name. |
| `argValue` | `string` | value | The parameter value. |
| `argIsInherited` | `bool` | value | Whether the parameter is marked as inherited (`IsInherited` of [`IPCB_Parameter`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Parameter.md)). |

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

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

The parameter does not belong to any primitive; `AddOrSetParameter` of [`IPCB_PrimitiveParameters`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_PrimitiveParameters.md) stores it on a primitive.

### CreateParameterList

Creates a new, empty parameter list.

```csharp
IPCB_ParameterList CreateParameterList();
```

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

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

### CreatePrimitiveParameters

Returns a new [`IPCB_PrimitiveParameters`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_PrimitiveParameters.md) object for a primitive, switched to the given variant.

```csharp
IPCB_PrimitiveParameters CreatePrimitiveParameters(IPCB_Primitive argPrimitive, string argVariantName);
```

| Parameter | Type | Passing | Description |
| --- | --- | --- | --- |
| `argPrimitive` | [IPCB_Primitive](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md) | value | The primitive, for example an [`IPCB_Component`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Component.md). |
| `argVariantName` | `string` | value | The variant name; `[No Variations]` selects the default variant and an empty string the project's current variant. |

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

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

The variant is selected as by `SwitchToVariantByName` of [`IPCB_PrimitiveParameters`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_PrimitiveParameters.md), which raises an error when the project has no variant of that name, or when the primitive's board is not in a project and the name is neither `[No Variations]` nor empty.

## Returned by

[IPCB_ServerInterface.GetParametersFactory](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_ServerInterface.md#getparametersfactory)
