Here’s a simple custom layout that only moves nodes that don’t have a real Position to the right of the rest of the nodes that do have a real position, in a column:

```
public class CustomLayout : DiagramLayout {
public override void DoLayout(IEnumerable<Node> nodes, IEnumerable<Link> links) {
var maxx = Double.NegativeInfinity;
var miny = Double.PositiveInfinity;
foreach (Node n in nodes) {
if (!Double.IsNaN(n.Bounds.X) && !Double.IsNaN(n.Bounds.Y)) {
maxx = Math.Max(maxx, n.Bounds.X + n.Bounds.Width);
miny = Math.Min(miny, n.Bounds.Y);
}
}
if (maxx == Double.NegativeInfinity) maxx = 0;
if (miny == Double.PositiveInfinity) miny = 0;
var x = maxx + 50;
var y = miny;
var mgr = this.Diagram.LayoutManager;
foreach (Node n in nodes) {
if (Double.IsNaN(n.Bounds.X) || Double.IsNaN(n.Bounds.Y)) {
mgr.MoveAnimated(n, new Point(x, y));
y += n.Bounds.Height + 50;
}
}
}
}
```

If there aren’t any nodes with a real position, then it uses (0,0) as the starting point for the column of unpositioned nodes.