Routed links avoid nodes marked as Obstacles by finding the shortest path between their origin and destination that does not cross any other nodes.
The control finds paths for links affected by modifications of nearby nodes by calling methods of an object that implements the ILinkRouter interface. This object can be get or set through the LinkRouter property of the Diagram class. MindFusion.Diagramming provides a few classes that implement ILinkRouter - PatternRouter, GridRouter, QuickRouter and CompositeRouter. By default LinkRouter is set to a CompositeRouter instance.
The RouteAllLinks method can be invoked to explicitly rearrange links in a way they do not cross nodes. In addition, links have an AutoRoute property that enables or disables automatic routing of a link; that property is initialized from the diagram's RouteLinks member. The TriggerRerouting member of the RoutingOptions class specifies when links should be rerouted automatically.
When a GridRouter is used, the RoutingOptions class allows customizing various aspects of the routing algorithm. That algorithm evaluates possible paths aiming to find one that has a minimal cost. The values of LengthCost, TurnCost, CrossingCost and NodeVicinityCost are added to the total cost of a route and have a great influence over the shape of the chosen path. The StartOrientation and EndOrientation properties specify the orientation of the first and last segments of routed links.