X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.plant3d%2Fsrc%2Forg%2Fsimantics%2Fplant3d%2Factions%2FRoutePipeAction.java;h=c922f38f54a5a64eab9e5612d508605fa8c0f569;hb=7512194aaad7f895f9a4e6b4085386fb99048c6f;hp=17455a328b0797cef34dc296d560aff852090ea7;hpb=b8221b6f5e0b6ced872c0b760d796a4c205476af;p=simantics%2F3d.git diff --git a/org.simantics.plant3d/src/org/simantics/plant3d/actions/RoutePipeAction.java b/org.simantics.plant3d/src/org/simantics/plant3d/actions/RoutePipeAction.java index 17455a32..c922f38f 100644 --- a/org.simantics.plant3d/src/org/simantics/plant3d/actions/RoutePipeAction.java +++ b/org.simantics.plant3d/src/org/simantics/plant3d/actions/RoutePipeAction.java @@ -864,7 +864,7 @@ public class RoutePipeAction extends vtkSwtAction { String info = ""; Point3d sStart = new Point3d(); Point3d sEnd = new Point3d(); - s.getControlPointEnds(sStart, sEnd); + s.getEnds(sStart, sEnd); //detector.clearConstraintHighlights(); Point3d previousPipePoint = new Point3d(previousPosition); @@ -1061,16 +1061,19 @@ public class RoutePipeAction extends vtkSwtAction { * Updates tool graphics for current point */ private void updateCurrentPoint() { -// PipeComponentProvider.createStraightEdges(pipeShapes.get(pipeShapes.size() - 1), controlPoints.get(controlPoints.size() - 1), currentPoint, pipeDiameter*0.5); InlineComponent straight = (InlineComponent)added.get(added.size()-1); - // FIXME : does not take account space the the previous elbow reserves. + // TODO: the inline length is from previous update step. + double l = straight.getPrevious().getControlPoint().getInlineLength(); Vector3d v = new Vector3d(); v.sub(currentPosition, previousPosition); double length = v.length(); - v.scale(0.5); - v.add(previousPosition); - straight.getControlPoint().setWorldPosition(v); - straight.getControlPoint().setLength(length); + if (length > MathTools.NEAR_ZERO) { + v.scale(1.0/length); + v.scale(0.5*(length+l)); + v.add(previousPosition); + straight.getControlPoint().setWorldPosition(v); + straight.getControlPoint().setLength(length); + } try { PipingRules.positionUpdate(straight.getControlPoint(),false); } catch (Exception e) {