# Constraints

Constraints are used to restrict the movement of entities and define their final locations. A constraint can usually be created between different entity types, check the corresponding operator's tooltip to find out what's supported.

## Active

A constraint is considered to be active when the sketch it belongs to is set as the active sketch or, for constraints that don't belong to a sketch, when no sketch is active.

## Failure

Whenever the solver fails to find a solution for the given system it will try to mark constraints that are causing the failure. Those constraints will be colored red, additionally the failed sketch will be marked.

## Types

Constraint types follow the implementation of solvespace.

## `SlvsCoincident`

Forces two points to be coincident, or a point to lie on a curve, or a point to lie on a plane.

The point-coincident constraint is available in both 3d and projected versions. The 3d point-coincident constraint restricts three degrees of freedom; the projected version restricts only two. If two points are drawn in a workplane, and then constrained coincident in 3d, then an error will result–they are already coincident in one dimension (the dimension normal to the plane), so the third constraint equation is redundant.

## `SlvsVertical`

Forces a line segment to be vertical. It applies in 2D Space only because the meaning of horizontal or vertical is defined by the workplane.

## `SlvsHorizontal`

Forces a line segment to be horizontal. It applies in 2D Space only because the meaning of horizontal or vertical is defined by the workplane.

Note: It’s good to use horizontal and vertical constraints whenever possible. These constraints are very simple to solve, and will not lead to convergence problems. Whenever possible, define the workplanes so that lines are horizontal and vertical within those workplanes.

## `SlvsParallel`

Forces two lines to be parallel. Applies only in 2D.

## `SlvsPerpendicular`

Forces two lines to be perpendicular, applies only in 2D. This constraint is equivalent to an angle constraint for ninety degrees.

## `SlvsEqual`

Forces two lengths, or radiuses to be equal.

If a line and an arc of a circle are selected, then the length of the line is forced equal to the length (not the radius) of the arc.

## `SlvsTangent`

Forces two curves (arc/circle) or a curve and a line to be tangent.

## `SlvsMidpoint`

Forces a point to lie on the midpoint of a line.

## `SlvsRatio`

Defines the ratio between the lengths of two line segments.

The order matters; the ratio is defined as length of entity1 : length of entity2.

## `SlvsDistance`

Sets the distance between a point and some other entity (point/line/Workplane).

## `SlvsDiameter`

Sets the diameter of an arc or a circle.

## `SlvsAngle`

Sets the angle between two lines, applies in 2D only.

The constraint's setting can be used to to constrain the supplementary angle.