# ConstraintSystem class

Namespace: [Grasshopper2.Types.Constraints](https://developer.rhino3d.com/api/gh2/namespace/grasshopper2.types.constraints.md) · Assembly: [Grasshopper2](https://developer.rhino3d.com/api/gh2/assembly/grasshopper2.md)

```cs
public sealed class ConstraintSystem
```

A constraint system.

## Constructors

- [ConstraintSystem](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/ctor.md): Create a new, empty system.

## Properties

- [ConstructionEdges](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/constructionedges.md): Iterate over all construction edges.
- [EdgeCount](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/edgecount.md): Gets the number of edges in this system.
- [EdgeCurves](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/edgecurves.md): Iterate over all edges. This enumerates either returns Lines, Circles or Arcs.
- [Edges](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/edges.md): Iterate over all edges.
- [GoalCount](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/goalcount.md): Gets the number of goals in this system.
- [Goals](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/goals.md): Iterate over all goals.
- [NodeCount](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/nodecount.md): Gets the number of nodes in this system.
- [Nodes](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/nodes.md): Iterate over all edges.
- [PrimaryEdges](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/primaryedges.md): Iterate over all primary edges.
- [ScalarCount](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/scalarcount.md): Gets the number of scalars in this system.

## Methods

- [Add](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/add.md): (4 overloads) Add one or more edges to this system.
- [BoundingBox](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/boundingbox.md): Gets the bounding box containing all nodes and edges.
- [Constants](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/constants.md): Gets all the named constants in this system.
- [Deviation](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/deviation.md): Measure the deviation between two systems.
- [EdgeAt](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/edgeat.md): (2 overloads) Gets the node at the given index.
- [EdgeCurve](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/edgecurve.md): Create the curve which matches the edge shape. This method will either return null if the edge nodes cannot be found, a Rhino.Geometry.Line, Rhino.Geometry.Circle or Rhino.Geometry.Arc.
- [EdgeLength](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/edgelength.md): Measure the length of an edge.
- [EdgeRadius](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/edgeradius.md): Measure the radius of an edge.
- [FindEdge](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/findedge.md): Find the edge with the given id.
- [FindNode](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/findnode.md): Find the node with the given id.
- [FindScalar](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/findscalar.md): Find the scalar with the given id.
- [GoalAt](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/goalat.md): Gets the goal at the given index.
- [Iterate](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/iterate.md): Perform a solver iteration and create a new constraint system.
- [MoveNamedPoints](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/movenamedpoints.md): Move all fixed and named points to new location.
- [NodeAt](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/nodeat.md): (2 overloads) Find the node at the given location.
- [Remove](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/remove.md): Remove all elements with matching identifiers from the system. Note that this will also remove any related elements which rely on any of the removed objects. If you want to switch out elements, he correct methodology is not to remove the old ones and add new ones, but rather to replace the elements.
- [ReplaceGoalValue](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/replacegoalvalue.md): Replace the value of a goal.
- [ReplaceNodes](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/replacenodes.md): Replace nodes in this system with nodes from the supplied list when their Ids match.
- [ScalarAt](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/scalarat.md): Gets the scalar at the given index.
- [ToggleEdgeConstruction](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/toggleedgeconstruction.md): Toggle the construction state of the edge at the given index.
- [ToggleNodeFixing](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.constraints.constraintsystem/togglenodefixing.md): Toggle the fixed state of the node at the given index.
