X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.plant3d%2Fsrc%2Forg%2Fsimantics%2Fplant3d%2Fscenegraph%2FInlineComponent.java;h=eb5c1a288492326fea3daef4a4a4f8a86aea953e;hb=46c28cc32944d0f73c5ab4062bd6b0b232143be7;hp=1fd83da110d3f36bf8739db214d325444d8e74e9;hpb=11cf079ab699e65f6c97b86745a3c8cbd65817b8;p=simantics%2F3d.git diff --git a/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/InlineComponent.java b/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/InlineComponent.java index 1fd83da1..eb5c1a28 100644 --- a/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/InlineComponent.java +++ b/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/InlineComponent.java @@ -3,6 +3,9 @@ package org.simantics.plant3d.scenegraph; import java.util.HashMap; import java.util.Map; +import javax.vecmath.Point3d; +import javax.vecmath.Vector3d; + import org.simantics.g3d.math.MathTools; import org.simantics.g3d.property.annotations.GetPropertyValue; import org.simantics.g3d.property.annotations.SetPropertyValue; @@ -52,7 +55,7 @@ public class InlineComponent extends PipelineComponent { } public boolean isSizeChange() { - return controlPoint.isSizeChange(); + return controlPoint.isSizeChange(); } @RelatedGetValue(Plant3D.URIs.HasRotationAngle) @@ -65,6 +68,7 @@ public class InlineComponent extends PipelineComponent { return 0.0; return MathTools.radToDeg(d); } + @RelatedSetValue(Plant3D.URIs.HasRotationAngle) @SetPropertyValue(value=Plant3D.URIs.HasRotationAngle) public void setRotationAngle(Double angle) { @@ -91,9 +95,7 @@ public class InlineComponent extends PipelineComponent { public Boolean isReversed() { if (!controlPoint.isReverse()) return null; - Boolean d = controlPoint.getReversed(); - if (d == null) - return false; + Boolean d = controlPoint._getReversed(); return d; } @RelatedSetValue(Plant3D.URIs.IsReversed) @@ -180,5 +182,21 @@ public class InlineComponent extends PipelineComponent { return map; } - + @SetPropertyValue("flowlength") + public void setFlowLength(double l) { + // Not allowed, if not at the end of a run + if (getNext() != null) + throw new IllegalStateException("Cannot edit length of a connected component"); + + double length = getFlowLength(); + Point3d p1 = new Point3d(), p2 = new Point3d(); + controlPoint.getControlPointEnds(p1, p2); + Vector3d dir = new Vector3d(); + dir.sub(p2, p1); + dir.normalize(); + dir.scale((l - length)/2); + Vector3d pos = new Vector3d(getPosition()); + pos.add(dir); + setPosition(pos); + } }