
# IPCB_MaxMinWidthConstraint interface

A width rule (`TRuleKind.eRule_MaxMinWidth`) that defines the minimum, preferred (favored) and maximum width of tracks and arcs on signal layers.

```csharp
public interface IPCB_MaxMinWidthConstraint : IPCB_Rule
```

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

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

## Remarks

The widths are set per layer. A new rule has a minimum, preferred and maximum width of 10 mil on every signal layer.

The rule checks tracks and arcs on signal layers that are not keepouts, not part of a polygon and not part of a differential pair.

A rule can hold different widths for each layer stack of a board with several layer stacks (a rigid-flex board). [`MinWidth`](#minwidth), [`FavoredWidth`](#favoredwidth) and [`MaxWidth`](#maxwidth) read and write the widths of the board's main layer stack.

## Properties

| Property | Type | Access | Description |
| --- | --- | --- | --- |
| [CheckConnectedCopper](#checkconnectedcopper) | `bool` | get; set | Whether the rule also checks the minimum width of the connected copper of each net, not only of single tracks and arcs. |
| [FavoredImpedance](#favoredimpedance) | `double` | get; set | The preferred target impedance, in ohms, of an impedance-driven rule ([`ImpedanceDriven`](#impedancedriven)). |
| [FavoredWidth](#favoredwidth) | `int` | get; set | The preferred width of tracks and arcs on the given layer, in internal units (10,000 per mil). |
| [ImpedanceDriven](#impedancedriven) | `bool` | get; set | Whether the rule is impedance-driven, that is, its track widths come from an impedance profile of the board's layer stack instead of fixed values. |
| [MaxImpedance](#maximpedance) | `double` | get; set | The maximum target impedance, in ohms, of an impedance-driven rule ([`ImpedanceDriven`](#impedancedriven)). |
| [MaxWidth](#maxwidth) | `int` | get; set | The maximum width allowed for tracks and arcs on the given layer, in internal units (10,000 per mil). |
| [MinImpedance](#minimpedance) | `double` | get; set | The minimum target impedance, in ohms, of an impedance-driven rule ([`ImpedanceDriven`](#impedancedriven)). |
| [MinWidth](#minwidth) | `int` | get; set | The minimum width allowed for tracks and arcs on the given layer, in internal units (10,000 per mil). |

### CheckConnectedCopper

Whether the rule also checks the minimum width of the connected copper of each net, not only of single tracks and arcs.

```csharp
bool GetState_CheckConnectedCopper();
void SetState_CheckConnectedCopper(bool argValue);
```

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

The default is false. While it is true and the rule is not impedance-driven ([`ImpedanceDriven`](#impedancedriven) is false), single tracks and arcs are checked only against the maximum width; the minimum width is checked on the net's connected copper.

### FavoredImpedance

The preferred target impedance, in ohms, of an impedance-driven rule ([`ImpedanceDriven`](#impedancedriven)).

```csharp
double GetState_FavoredImpedance();
void SetState_FavoredImpedance(double argValue);
```

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

A new rule has 50 ohms.

### FavoredWidth

The preferred width of tracks and arcs on the given layer, in internal units (10,000 per mil).

```csharp
int GetState_FavoredWidth(V7_LayerBase argL);
void SetState_FavoredWidth(V7_LayerBase argL, int argValue);
```

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

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

Reading a layer that has no width of its own returns the width the rule sets for all signal layers. Assigning a value sets the width of that layer only.

### ImpedanceDriven

Whether the rule is impedance-driven, that is, its track widths come from an impedance profile of the board's layer stack instead of fixed values.

```csharp
bool GetState_ImpedanceDriven();
void SetState_ImpedanceDriven(bool argValue);
```

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

The default is false. While it is true, [`DataSummaryString`](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#datasummarystring) lists the preferred, minimum and maximum impedance instead of the widths.

### MaxImpedance

The maximum target impedance, in ohms, of an impedance-driven rule ([`ImpedanceDriven`](#impedancedriven)).

```csharp
double GetState_MaxImpedance();
void SetState_MaxImpedance(double argValue);
```

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

A new rule has 50 ohms.

### MaxWidth

The maximum width allowed for tracks and arcs on the given layer, in internal units (10,000 per mil).

```csharp
int GetState_MaxWidth(V7_LayerBase argL);
void SetState_MaxWidth(V7_LayerBase argL, int argValue);
```

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

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

Reading a layer that has no width of its own returns the width the rule sets for all signal layers. Assigning a value sets the width of that layer only.

### MinImpedance

The minimum target impedance, in ohms, of an impedance-driven rule ([`ImpedanceDriven`](#impedancedriven)).

```csharp
double GetState_MinImpedance();
void SetState_MinImpedance(double argValue);
```

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

A new rule has 50 ohms.

### MinWidth

The minimum width allowed for tracks and arcs on the given layer, in internal units (10,000 per mil).

```csharp
int GetState_MinWidth(V7_LayerBase argL);
void SetState_MinWidth(V7_LayerBase argL, int argValue);
```

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

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

Reading a layer that has no width of its own returns the width the rule sets for all signal layers. Assigning a value sets the width of that layer only.

## Inherited members

- From [IPCB_Rule](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md): [ActualCheck](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#actualcheck), [ActualCheck_1](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#actualcheck_1), [CheckBinaryScope](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#checkbinaryscope), [CheckUnaryScope](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#checkunaryscope), [CollisionExpansion](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#collisionexpansion), [Comment](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#comment), [DataSummaryString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#datasummarystring), [DefinedByLogicalDocument](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#definedbylogicaldocument), [DRCEnabled](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#drcenabled), [Export_ToParameters_1](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#export_toparameters_1), [GetWhatsThisHelpString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#getwhatsthishelpstring), [IsUnary](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#isunary), [LayerKind](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#layerkind), [Name](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#name), [NetScope](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#netscope), [NetScopeMatches](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#netscopematches), [Priority](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#priority), [RuleKind](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#rulekind), [Scope1Expression](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#scope1expression), [Scope1Includes](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#scope1includes), [Scope2Expression](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#scope2expression), [Scope2Includes](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#scope2includes), [ScopeDescriptorString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#scopedescriptorstring), [ScopeKindIsValid](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#scopekindisvalid), [ShortDescriptorString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#shortdescriptorstring), [ViolationDescriptorString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#violationdescriptorstring)
- From [IPCB_Primitive](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md): [AllowGlobalEdit](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#allowglobaledit), [BeginModify](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#beginmodify), [Board](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#board), [BoundingRectangle](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#boundingrectangle), [BoundingRectangleChildren](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#boundingrectanglechildren), [BoundingRectangleForPainting](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#boundingrectangleforpainting), [BoundingRectangleForSelection](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#boundingrectangleforselection), [CancelModify](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#cancelmodify), [Component](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#component), [Coordinate](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#coordinate), [DescriptorString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#descriptorstring), [DetailString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#detailstring), [Dimension](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#dimension), [DrawAsPreview](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#drawaspreview), [DRCError](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#drcerror), [Enabled](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled), [Enabled_Direct](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled_direct), [Enabled_vComponent](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled_vcomponent), [Enabled_vCoordinate](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled_vcoordinate), [Enabled_vDimension](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled_vdimension), [Enabled_vNet](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled_vnet), [Enabled_vPolygon](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled_vpolygon), [EnableDraw](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabledraw), [EndModify](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#endmodify), [Export_ToParameters](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#export_toparameters), [FlipXY](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#flipxy), [GraphicallyInvalidate](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#graphicallyinvalidate), [Handle](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#handle), [Identifier](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#identifier), [InBoard](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#inboard), [InComponent](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#incomponent), [InCoordinate](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#incoordinate), [Index](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#index), [InDimension](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#indimension), [InNet](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#innet), [InPolygon](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#inpolygon), [InSelectionMemory](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#inselectionmemory), [IsAssyTestPoint_Bottom](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#isassytestpoint_bottom), [IsAssyTestPoint_Top](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#isassytestpoint_top), [IsElectricalPrim](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#iselectricalprim), [IsFreePrimitive](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#isfreeprimitive), [IsHidden](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#ishidden), [IsKeepout](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#iskeepout), [IsPreRoute](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#ispreroute), [IsSaveable](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#issaveable), [IsTenting](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#istenting), [IsTenting_Bottom](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#istenting_bottom), [IsTenting_Top](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#istenting_top), [IsTestPoint_Bottom](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#istestpoint_bottom), [IsTestPoint_Top](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#istestpoint_top), [Layer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#layer), [MiscFlag1](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#miscflag1), [MiscFlag2](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#miscflag2), [MiscFlag3](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#miscflag3), [Moveable](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#moveable), [MoveByXY](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#movebyxy), [MoveToXY](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#movetoxy), [Net](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#net), [ObjectID](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#objectid), [ObjectIDString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#objectidstring), [PadCacheRobotFlag](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#padcacherobotflag), [PasteMaskExpansion](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#pastemaskexpansion), [Polygon](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#polygon), [PolygonOutline](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#polygonoutline), [PowerPlaneClearance](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#powerplaneclearance), [PowerPlaneConnectStyle](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#powerplaneconnectstyle), [PowerPlaneReliefExpansion](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#powerplanereliefexpansion), [Preview](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#preview), [ReliefAirGap](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#reliefairgap), [ReliefConductorWidth](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#reliefconductorwidth), [ReliefEntries](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#reliefentries), [Replicate](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#replicate), [RequiredParamterSpace](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#requiredparamterspace), [RotateBy](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#rotateby), [Selected](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#selected), [SolderMaskExpansion](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#soldermaskexpansion), [SwapLayerPairs](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#swaplayerpairs), [TearDrop](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#teardrop), [UnionIndex](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#unionindex), [UniqueId](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#uniqueid), [UniqueID](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#uniqueid-1), [Used](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#used), [UserRouted](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#userrouted), [V7Layer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#v7layer), [ViewableObjectID](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#viewableobjectid)
