Organic Edge Routing
The OrganicEdgeRouter calculates organic edge paths for a diagram’s edges such that the edges do not overlap nodes. The positions of the nodes in the diagram remain unchanged (except for some specific setups mentioned below). The algorithm supports routing all edges at once as well as routing only a subset of the edges.
The algorithm is based on a force-directed layout paradigm. Nodes exert repulsive forces on edges to guarantee a certain minimal distance between nodes and edges. Edges tend to contract. Using simulated annealing, this approach results in edge layouts calculated individually for each edge.
By default, this algorithm will only work correctly if there is enough space available between each pair of nodes in the graph. In particular, there should be a distance of at least twice the specified minimum distance between any two nodes.To ensure that these preconditions are met, property allowMovingNodes can be enabled. With this setting, nodes are allowed to move, which usually improves the routing quality.


Basic Options
By default, OrganicEdgeRouter reroutes all edges of a given graph. When only a subset of the edges should be routed, you can specify this subset using the Layout Data property scope.
- minimumDistance
- This specifies the minimum allowed distance between nodes and edges.
- keepExistingBends
- This option specifies whether existing bend coordinates should be kept when determining the edge path.
- allowMovingNodes
- Specifies whether nodes are allowed to move, which can increase the routing quality and reduce the probability of overlaps between nodes and edges. See also the algorithm’s preconditions.
- allowEdgeNodeOverlaps
- This option specifies whether edges are allowed to overlap with nodes. Enabling this option often improves the routing when nodes are not allowed to move, and some distances between nodes do not comply with the algorithm’s preconditions.