]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/PipeRun.java
Allow multiple radii for turns.
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / scenegraph / PipeRun.java
index 9e163c2e79ba70669ca10e16a75b08c4a7596905..36710e4fee17d16a5c10bed8f16b0059a38485e8 100644 (file)
@@ -29,7 +29,7 @@ import vtk.vtkRenderer;
 public class PipeRun extends P3DParentNode<IP3DNode> {
        
        private double pipeDiameter = 0.1;
-       private double turnRadius = 0.2;
+       private double[] turnRadius = new double[] {0.2};
        
        @Override
        public void update(vtkRenderer ren) {
@@ -54,15 +54,31 @@ public class PipeRun extends P3DParentNode<IP3DNode> {
        @RelatedGetValue(Plant3D.URIs.HasTurnRadius)
        @GetPropertyValue(value=Plant3D.URIs.HasTurnRadius, name = "Elbow radius")
        public double getTurnRadius() {
-               return turnRadius;
+               return turnRadius[0];
        }
        
        @RelatedSetValue(Plant3D.URIs.HasTurnRadius)
        @SetPropertyValue(Plant3D.URIs.HasTurnRadius)
        public void setTurnRadius(double turnRadius) {
-               this.turnRadius = turnRadius;
+               this.turnRadius[0] = turnRadius;
                firePropertyChanged(Plant3D.URIs.HasTurnRadius);
-       }
+               firePropertyChanged(Plant3D.URIs.HasTurnRadiusArray);
+       }
+       
+       @RelatedGetValue(Plant3D.URIs.HasTurnRadiusArray)
+    @GetPropertyValue(value=Plant3D.URIs.HasTurnRadiusArray, name = "Elbow radius array")
+    public double[] getTurnRadiusArray() {
+        return turnRadius;
+    }
+    
+    @RelatedSetValue(Plant3D.URIs.HasTurnRadiusArray)
+    @SetPropertyValue(Plant3D.URIs.HasTurnRadiusArray)
+    public void setTurnRadiusArray(double[] turnRadiusArray) {
+        if (turnRadiusArray == null || turnRadiusArray.length == 0)
+            return;
+        this.turnRadius = turnRadiusArray;
+        firePropertyChanged(Plant3D.URIs.HasTurnRadiusArray);
+    }
        
        @RelatedGetValue(Plant3D.URIs.HasPipeDiameter)
        @GetPropertyValue(value=Plant3D.URIs.HasPipeDiameter, name = "Diameter")
@@ -105,31 +121,38 @@ public class PipeRun extends P3DParentNode<IP3DNode> {
                Collections.sort(coll, new ComponentComparator());
                return coll;
        }
+       private static String PIPECP = "pipecp";
+       
        public void addChild(PipeControlPoint node) {
-               addNode("pipecp",node);
+               addNode(PIPECP,node);
        }
        
        public void remChild(PipeControlPoint node) {
-               removeNode("pipecp", node);
+               removeNode(PIPECP, node);
        }
        
        public void deattachChild(PipeControlPoint node) {
-               deattachNode("pipecp", node);
+               deattachNode(PIPECP, node);
        }
        
        public Collection<PipeControlPoint> getControlPoints() {
                Collection<PipeControlPoint> coll = new ArrayList<PipeControlPoint>();
-               for (IG3DNode n : getNodes("pipecp")) {
+               for (IG3DNode n : getNodes(PIPECP)) {
                        coll.add((PipeControlPoint)n);
                }
                return coll;
        }
        
+       
        public boolean equalSpecs(PipeRun other) {
                if (!MathTools.equals(pipeDiameter,other.pipeDiameter))
                        return false;
-               if (!MathTools.equals(turnRadius,other.turnRadius))
-                       return false;
+               if (turnRadius.length != other.turnRadius.length)
+                   return false;
+               for (int i = 0; i < turnRadius.length; i++) {
+                   if (!MathTools.equals(turnRadius[i],other.turnRadius[i]))
+                       return false;
+               }
                return true;
        }
        
@@ -158,4 +181,5 @@ public class PipeRun extends P3DParentNode<IP3DNode> {
                        
                }
        }
+       
 }