Vielleicht bringt es was, sich deine Leinwand als z.B. 100x100 Matrix vorzustellen und jede Zelle ist entweder eine Linie (senkrecht, waagerecht, Ecke) oder Teil eines Bausteins (Anschlusspunkt, sonstiges). Und schon kannst Du sehr sauber 'zeichnen'. Mit einem Algorithmus, der den 'optimalen' Weg von A nach B findet, solltest Du beim Layouten schon weit kommen. Die Regeln sind klar: Jede Ecke kostet und das überkreuzen auch.
Genau so hatte ich das gemacht, hat sich nicht wirklich bewährt, wie oben beschrieben.
Edit: Im Anhang mal ein Screenshot. Das Ergebnis sieht schon ähnlich aus wie bei den Komponenten, die Perlsau verlinkt hat (nur weniger schön gezeichnet, z.B. keine abgerundeten Ecken). Das Hauptproblem ist halt, dass die Berechnung von Routen in dieser Qualität bei mir einfach viel zu lange gedauert hat.