]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/src/org/simantics/plant3d/actions/RoutePipeAction.java
Maven pom.xml files for plant3d projects
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / actions / RoutePipeAction.java
index 17455a328b0797cef34dc296d560aff852090ea7..c922f38f54a5a64eab9e5612d508605fa8c0f569 100644 (file)
@@ -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) {