X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.plant3d%2Fsrc%2Forg%2Fsimantics%2Fplant3d%2Futils%2FComponentUtils.java;h=0ae36e33a2f51ca7a3aa549c14244f4547c873c9;hb=15e688c6d6148fdbda457e5f55bdea4259c97aa8;hp=9b6ea1895507f359c671c54df8b7ff4e4f65cb50;hpb=ec0ebd74b66427ce92c64eda89d58a0117137eb6;p=simantics%2F3d.git diff --git a/org.simantics.plant3d/src/org/simantics/plant3d/utils/ComponentUtils.java b/org.simantics.plant3d/src/org/simantics/plant3d/utils/ComponentUtils.java index 9b6ea189..0ae36e33 100644 --- a/org.simantics.plant3d/src/org/simantics/plant3d/utils/ComponentUtils.java +++ b/org.simantics.plant3d/src/org/simantics/plant3d/utils/ComponentUtils.java @@ -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); }