This is a versatile and powerful layout algorithm that can route the edges of a diagram using only vertical and horizontal line segments, while keeping the positions of the nodes in the diagram fixed. The routed edges will usually not cross through any nodes and not overlap any other edges.

The abilities of this router makes it a perfect layouter for interactive or incremental scenarios where

## Layout Options

### Scope

Determines the set of edges that the router should process.

- All Edges
- Routes all edges in the graph
- Selected Edges
- Routes only the selected edges in the graph
- Edges at Selected Nodes
- Routes only the edges connected to selected nodes

### Monotonic Path Restrictions

Specifies which kind of monotonic path restrictions should be applied.

- None
- Specifies that there are no restrictions.
- Monotonic Horizontal
- Specifies restrictions for the horizontal direction, i.e., each horizontal edge segment is directed from the source to the target. Furthermore, each edge path starts and ends with a horizontal segment.
- Monotonic Vertical
- Specifies restrictions for the vertical direction, i.e., each vertical edge segment is directed from the source to the target. Furthermore, each edge path starts and ends with a vertical segment.
- Monotonic Both
- Specifies restrictions for the horizontal and vertical direction, i.e., each horizontal as well as each vertical edge segment is directed from the source to the target.

### Enforce Monotonic Path Restrictions

Specifies whether or not monotonic path restrictions should be enforced. Enabling this option guarantees monotonic edge paths even if this results in additional overlaps between edges and nodes.

### Minimum Edge Distance

Determines the distance between any two edge segments. The edge router adheres to the set value as possible, but reduces the distance value selectively, i.e. only for a currently processed edge, when there is too little space to find a path with the proper value.

### Use Custom Minimum Distance to Nodes

If set, a custom value for the minimum distance between any edge segment and any node side will be used. Otherwise, this distance will automatically be derived from the minimum distance between any two edge segments. Since this option can increase computation time, it is disabled by default.

### Custom Minimum Distance to Nodes

Determines the distance between any edge segment and any node side. The edge router strictly adheres to the specified value. Note, that this value normally is being automatically derived unless you specifically set "Use Custom Minimum Distance Edge to Node."

### Route on Grid

If enabled, all edge paths will be routed on grid lines. The origin of the grid is (0, 0) and the spacing between grid lines is defined by the following setting.

### Grid Spacing

Determines the spacing of the grid lines where all edge paths will be routed upon. Grid spacing plays the same role for routing on grid lines as minimum distance between any two edge segments does for "free" routing. The edge router adheres to the set value as possible, but reduces the spacing value selectively, i.e. only for a currently processed edge, when there is too little space to find a path with the proper value.

### Space Driven Vs. Center Driven Search

Determines the ratio between two complementary weighting strategies when
looking for an edge path, namely "center driven" and "space driven"
weighting.
The ratio is expressed with a value between `0.0`

and `1.0`

.
Values closer to `0.0`

lead to edge paths that are more distributed over the
available space.
Values closer to `1.0`

give more emphasis to edge paths closer to an edge's center.

## Crossing Minimization

The following options can be used to reduce the number of edge crossings generated by this edge router.

### Local Crossing Minimization

If set, the number of crossings between edges that connect at the same side of a node will be significantly reduced. Since this option has a positive effect on diagram "readability," it is enabled by default.

### Crossing Cost

Sets the cost for each edge crossing of a routed path.
A cost of `n`

means that a path rather changes
direction `n`

times than crossing the path of an edge.
Setting a higher value will activate global crossing minimization.
A good trade-off between the number of direction changes and few crossings of a path
is achieved by values between `1`

and `3`

.

### Reroute Crossing Edges

Whether or not to enable a further crossing minimization
optimization based on rerouting edges that cross many edges.
Activating this feature only makes sense if the global
crossing cost is set to a value greater than `0`

.