From a6ab8f9f1cda010f73925ed6c91b60bc6b94269b Mon Sep 17 00:00:00 2001 From: Marko Luukkainen Date: Thu, 5 Dec 2019 11:07:58 +0200 Subject: [PATCH] Yesterdays change introduced infinite loop for directed path leg updates Fine tuned elbow space calculation. gitlab #14 Change-Id: Ic0505c5e55d0f90f41bcdd7f8b26d11d189d6582 (cherry picked from commit a899aac9dd52296206f302a20a8e7bae2501cf2c) --- .../plant3d/scenegraph/controlpoint/PipingRules.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/controlpoint/PipingRules.java b/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/controlpoint/PipingRules.java index 58873b0f..57ee4ba8 100644 --- a/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/controlpoint/PipingRules.java +++ b/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/controlpoint/PipingRules.java @@ -864,7 +864,8 @@ public class PipingRules { double l2next = icp.getInlineLength(); double l2 = l2prev + l2next; double l2s = l2 * l2; - if (l > l2s) { + double diff = l - l2s; + if (diff >= MIN_INLINE_LENGTH) { if (allowInsertRemove) { dir.normalize(); double length = Math.sqrt(l) - l2; // true length of the variable length component @@ -988,16 +989,19 @@ public class PipingRules { other = u.end; position = u.startPoint; dcpStart = true; + if (!u.reversed) + canMoveOther = true; inlineEnd = u.end.isInline(); } else { dcp = u.end; other = u.start; position = u.endPoint; + if (u.reversed) + canMoveOther = true; inlineEnd = u.start.isInline(); } - canMoveOther = !(other == u.updated); - + Vector3d directedDirection = direction(dcp, dcpStart ? Direction.NEXT : Direction.PREVIOUS); if (directedDirection == null) { //updateTurnControlPointTurn(dcp, dcp.getPrevious(), dcp.getNext()); @@ -1286,7 +1290,7 @@ public class PipingRules { R = tr / t; if (R <= curr) break; - curr = R*1.01; + curr = R*1.001; iter--; } return curr; -- 2.47.1