X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.plant3d%2Fsrc%2Forg%2Fsimantics%2Fplant3d%2Fscenegraph%2FPipeRun.java;h=0a6e58c07c365f664263291aeee53787474f295d;hb=a745e75910247c95f7a9a5f4cc0598e2ca0cf95e;hp=2c334c1f2810f085f0deaad34028ea9d2a28994c;hpb=e92fe8961f1de7bc132e64814bba4c5f92f67ba6;p=simantics%2F3d.git diff --git a/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/PipeRun.java b/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/PipeRun.java index 2c334c1f..0a6e58c0 100644 --- a/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/PipeRun.java +++ b/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/PipeRun.java @@ -1,6 +1,7 @@ package org.simantics.plant3d.scenegraph; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Comparator; @@ -31,6 +32,7 @@ import vtk.vtkRenderer; public class PipeRun extends P3DParentNode { private double pipeDiameter = 0.1; + private double pipeThickness = 0.0; private double[] turnRadius = new double[] {0.2}; @Override @@ -64,6 +66,8 @@ public class PipeRun extends P3DParentNode { @RelatedSetValue(Plant3D.URIs.HasTurnRadius) @SetPropertyValue(Plant3D.URIs.HasTurnRadius) public void setTurnRadius(double turnRadius) { + if (this.turnRadius[0] == turnRadius) + return; this.turnRadius[0] = turnRadius; firePropertyChanged(Plant3D.URIs.HasTurnRadius); firePropertyChanged(Plant3D.URIs.HasTurnRadiusArray); @@ -78,7 +82,7 @@ public class PipeRun extends P3DParentNode { @RelatedSetValue(Plant3D.URIs.HasTurnRadiusArray) @SetPropertyValue(Plant3D.URIs.HasTurnRadiusArray) public void setTurnRadiusArray(double[] turnRadiusArray) { - if (turnRadiusArray == null || turnRadiusArray.length == 0) + if (turnRadiusArray == null || turnRadiusArray.length == 0 || Arrays.equals(this.turnRadius, turnRadiusArray)) return; this.turnRadius = turnRadiusArray; firePropertyChanged(Plant3D.URIs.HasTurnRadiusArray); @@ -93,10 +97,33 @@ public class PipeRun extends P3DParentNode { @RelatedSetValue(Plant3D.URIs.HasPipeDiameter) @SetPropertyValue(Plant3D.URIs.HasPipeDiameter) public void setPipeDiameter(double pipeDiameter) { - this.pipeDiameter = pipeDiameter; + if (this.pipeDiameter == pipeDiameter) + return; + + this.pipeDiameter = pipeDiameter; firePropertyChanged(Plant3D.URIs.HasPipeDiameter); } + @RelatedGetValue(Plant3D.URIs.HasPipeThickness) + @GetPropertyValue(value=Plant3D.URIs.HasPipeThickness, name = "Wall Thickness") + public double getPipeThickness() { + return pipeThickness; + } + + @RelatedSetValue(Plant3D.URIs.HasPipeThickness) + @SetPropertyValue(Plant3D.URIs.HasPipeThickness) + public void setPipeThickness(double pipeThickness) { + if (this.pipeThickness == pipeThickness) + return; + + this.pipeThickness = pipeThickness; + firePropertyChanged(Plant3D.URIs.HasPipeThickness); + } + + public double getInsideDiameter() { + return pipeDiameter - 2 * pipeThickness; + } + @RelatedElementsAdd(Plant3D.URIs.children) public void addChild(PipelineComponent node) { addNode(Plant3D.URIs.children,node); @@ -112,8 +139,22 @@ public class PipeRun extends P3DParentNode { } @RelatedElementsRem(Plant3D.URIs.children) + public void _remChild(PipelineComponent node) { + //since we do not now, if DB remove is actually remove or detach, we have to use detach. NodeMap will handle Component removals. + deattachNode(Plant3D.URIs.children, node); + } + public void remChild(PipelineComponent node) { - removeNode(Plant3D.URIs.children, node); + removeNode(Plant3D.URIs.children, node); + } + + @Override + public void remove() { + // since we do not now, if DB remove is actually remove or detach, we have to use detach. NodeMap will handle Component removals. + Collection comps = getChild(); + for (PipelineComponent c : comps) + c.deattach(); + super.remove(); }