]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/src/org/simantics/plant3d/utils/ComponentUtils.java
Ask component rotation angle when adding components
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / utils / ComponentUtils.java
index 9b6ea1895507f359c671c54df8b7ff4e4f65cb50..0ae36e33a2f51ca7a3aa549c14244f4547c873c9 100644 (file)
@@ -275,6 +275,9 @@ public class ComponentUtils {
                
                // Variable angle
                public Double angle;
+               
+               // Rotation angle used with turns and rotated inline.
+               public Double rotationAngle;
 
                public String getTypeUri() {
                        return typeUri;
@@ -331,6 +334,14 @@ public class ComponentUtils {
                public void setAngle(Double angle) {
                        this.angle = angle;
                }
+               
+               public Double getRotationAngle() {
+            return rotationAngle;
+        }
+               
+               public void setRotationAngle(Double rotationAngle) {
+            this.rotationAngle = rotationAngle;
+        }
 
        }
        
@@ -438,14 +449,19 @@ public class ComponentUtils {
                                newPcp.setLength(inst.length);
                                newComponent.setParameter("length", inst.length);
                            }
+                           if (inst.rotationAngle != null)
+                               ((InlineComponent) newComponent).setRotationAngle(inst.rotationAngle);
                        } else if (newComponent instanceof TurnComponent) {
                            TurnComponent turnComponent = (TurnComponent)newComponent;
                            if  (turnComponent.isVariableAngle()) {
                                newPcp.setTurnAngle(inst.angle);
                                newComponent.setParameter("turnAngle", inst.angle);
                            }
+                           if (inst.rotationAngle != null)
+                       ((TurnComponent) newComponent).setRotationAngle(inst.rotationAngle);
                        }
                        
+                       
                        newComponent.updateParameters();
                        
                        Vector3d v = new Vector3d(dir);
@@ -505,6 +521,7 @@ public class ComponentUtils {
                                PipingRules.addSizeChange(true, pipeRun, other, (InlineComponent)newComponent, toPcp, null);
                        }
                        newPcp.setWorldPosition(pos);
+
                        // TODO : chicken-egg problem
                        newComponent.updateParameters();
                        Vector3d v = new Vector3d(dir);
@@ -522,6 +539,8 @@ public class ComponentUtils {
                                break;
                        }
                        newPcp.setWorldPosition(pos);
+               if (inst.rotationAngle != null)
+                  ((InlineComponent) newComponent).setRotationAngle(inst.rotationAngle);
                        
                }