diff --git a/src/__Libraries/StellaOps.ElkSharp/ElkEdgeRouterIterative.cs b/src/__Libraries/StellaOps.ElkSharp/ElkEdgeRouterIterative.cs index 85c206651..d0d5e82ac 100644 --- a/src/__Libraries/StellaOps.ElkSharp/ElkEdgeRouterIterative.cs +++ b/src/__Libraries/StellaOps.ElkSharp/ElkEdgeRouterIterative.cs @@ -33,9 +33,13 @@ internal static partial class ElkEdgeRouterIterative } var serviceNodes = nodes.Where(n => n.Kind is not "Start" and not "End").ToArray(); - var minLineClearance = serviceNodes.Length > 0 + var nodeSizeClearance = serviceNodes.Length > 0 ? Math.Min(serviceNodes.Average(n => n.Width), serviceNodes.Average(n => n.Height)) / 2d : 50d; + // Scale clearance with NodeSpacing: wider spacing should produce wider + // routing corridors. Use the larger of node-size-based clearance and + // spacing-proportional clearance so the pipeline adapts to any spacing. + var minLineClearance = Math.Max(nodeSizeClearance, layoutOptions.NodeSpacing * 1.2d); var diagnostics = ElkLayoutDiagnostics.Current; var validSolutions = new List();