X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.plant3d%2Fsrc%2Forg%2Fsimantics%2Fplant3d%2Fscenegraph%2FPipelineComponent.java;h=735916db6df2b31a0bae9bf7c880ce29c4d95194;hb=3f2597b685effc8f262143ea487f5391824930e1;hp=35df6121bb9575b30375619cad1b83f228ebbb49;hpb=34c84195e058b46afe68590eaf751b12bc74c1fe;p=simantics%2F3d.git diff --git a/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/PipelineComponent.java b/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/PipelineComponent.java index 35df6121..735916db 100644 --- a/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/PipelineComponent.java +++ b/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/PipelineComponent.java @@ -133,17 +133,20 @@ public abstract class PipelineComponent extends GeometryNode { @RelatedSetObj(Plant3D.URIs.HasNext) public void setNext(PipelineComponent comp) { if (next == comp) - return; + return; if (this.next != null) - this.next._removeRef(this); - this.next = comp; - this.syncnext = false; - if (DEBUG) System.out.println(this + " next " + comp); - syncNext(); - firePropertyChanged(Plant3D.URIs.HasNext); - if (comp != null) - comp.sync(); - + this.next._removeRef(this); + _setNext(comp); + this.syncnext = false; + if (DEBUG) System.out.println(this + " next " + comp); + syncNext(); + firePropertyChanged(Plant3D.URIs.HasNext); + if (comp != null) + comp.sync(); + } + + protected void _setNext(PipelineComponent comp) { + this.next = comp; } @@ -158,15 +161,19 @@ public abstract class PipelineComponent extends GeometryNode { return; if (this.previous != null) this.previous._removeRef(this); - this.previous = comp; + _setPrevious(comp); this.syncprev = false; if (DEBUG) System.out.println(this + " prev " + comp); syncPrevious(); firePropertyChanged(Plant3D.URIs.HasPrevious); if (comp != null) comp.sync(); - } + + protected void _setPrevious(PipelineComponent comp) { + this.previous = comp; + } + private PipelineComponent branch0; @RelatedGetObj(Plant3D.URIs.HasBranch0) @@ -264,13 +271,13 @@ public abstract class PipelineComponent extends GeometryNode { // Control point structure is left into illegal state. private void _removeRef(PipelineComponent comp) { if (next == comp) { - next = null; + _setNext(null); syncnext = false; if (DEBUG) System.out.println(this + " remove next " + comp); firePropertyChanged(Plant3D.URIs.HasNext); syncNext(); } else if (previous == comp) { - previous = null; + _setPrevious(null); syncprev = false; if (DEBUG) System.out.println(this + " remove prev " + comp); firePropertyChanged(Plant3D.URIs.HasPrevious); @@ -467,12 +474,7 @@ public abstract class PipelineComponent extends GeometryNode { super.setOrientation(orientation); if (getControlPoint() != null) { getControlPoint()._setWorldOrientation(getWorldOrientation()); - try { - PipingRules.requestUpdate(getControlPoint()); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + PipingRules.requestUpdate(getControlPoint()); } } @@ -483,12 +485,7 @@ public abstract class PipelineComponent extends GeometryNode { super.setPosition(position); if (getControlPoint() != null) { getControlPoint()._setWorldPosition(getWorldPosition()); - try { - PipingRules.requestUpdate(getControlPoint()); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + PipingRules.requestUpdate(getControlPoint()); } } @@ -514,7 +511,7 @@ public abstract class PipelineComponent extends GeometryNode { case END: return null; case TURN: { - double r = getPipeRun().getTurnRadius(); + double r = ((TurnComponent)this).getTurnRadius(); double a = pcp.getTurnAngle(); return a*r; } @@ -523,6 +520,24 @@ public abstract class PipelineComponent extends GeometryNode { } } + /** + * Returns diameter of the pipe + * @return + */ + public Double getDiameter() { + return getPipeRun().getPipeDiameter(); + } + + /** + * Returns secondary diameter of the pipe for size change components + * @return + */ + public Double getDiameter2() { + if (getAlternativePipeRun() == null) + return null; + return getAlternativePipeRun().getPipeDiameter(); + } + public void getEnds(Tuple3d p1, Tuple3d p2) { getControlPoint().getControlPointEnds(p1, p2); } @@ -574,7 +589,7 @@ public abstract class PipelineComponent extends GeometryNode { case TURN: { Vector3d loc = pcp.getRealPosition(PositionType.PREVIOUS); - double r = getPipeRun().getTurnRadius(); + double r = ((TurnComponent)this).getTurnRadius(); double a = pcp.getTurnAngle(); double pipeRadius = pcp.getPipeRun().getPipeDiameter() / 2; @@ -631,7 +646,7 @@ public abstract class PipelineComponent extends GeometryNode { double r2 = getAlternativePipeRun().getPipeDiameter() / 2; return pcp.getLength() * Math.PI * (r1*r1 + r1*r2 + r2*r2) / 4; case TURN: { - double r = getPipeRun().getTurnRadius(); + double r = ((TurnComponent)this).getTurnRadius(); double a = pcp.getTurnAngle(); return r * a * Math.PI * pipeRadius * pipeRadius; }