X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.plant3d%2Fsrc%2Forg%2Fsimantics%2Fplant3d%2Fscenegraph%2FTurnComponent.java;fp=org.simantics.plant3d%2Fsrc%2Forg%2Fsimantics%2Fplant3d%2Fscenegraph%2FTurnComponent.java;h=6050b60ff9c8d779fca938d6b8907093f3598fe4;hb=a460e609147d064dd3da464bcf1626845e0f93b4;hp=0000000000000000000000000000000000000000;hpb=3e2205a22ddee674f7936da114f5d520bd83e0ff;p=simantics%2F3d.git diff --git a/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/TurnComponent.java b/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/TurnComponent.java new file mode 100644 index 00000000..6050b60f --- /dev/null +++ b/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/TurnComponent.java @@ -0,0 +1,83 @@ +package org.simantics.plant3d.scenegraph; + +import java.util.HashMap; +import java.util.Map; + +import javax.vecmath.Vector3d; + +import org.simantics.g3d.math.MathTools; +import org.simantics.g3d.property.annotations.GetPropertyValue; +import org.simantics.g3d.scenegraph.base.ParentNode; +import org.simantics.objmap.graph.annotations.DynamicGraphType; +import org.simantics.objmap.graph.annotations.GetType; +import org.simantics.objmap.graph.annotations.SetType; +import org.simantics.plant3d.ontology.Plant3D; +import org.simantics.plant3d.scenegraph.controlpoint.ControlPointFactory; +import org.simantics.plant3d.scenegraph.controlpoint.PipeControlPoint; + +@DynamicGraphType(Plant3D.URIs.TurnComponent) +public class TurnComponent extends PipelineComponent { + + + private String type; + private PipeControlPoint controlPoint; + + @GetType(Plant3D.URIs.TurnComponent) + public String getType() { + return type; + } + + @SetType(Plant3D.URIs.TurnComponent) + public void setType(String type) throws Exception{ + this.type = type; + controlPoint = ControlPointFactory.create(this); + } + + @Override + public PipeControlPoint getControlPoint() { + return controlPoint; + } + + @Override + public void setParent(ParentNode parent, String name) { + super.setParent(parent, name); + setPipeRun((PipeRun)parent); + } + + @Override + public Map updateParameterMap() { + Map map = new HashMap(); + + PipeRun pipeRun = getPipeRun(); + if (pipeRun != null) { + map.put("turnRadius", pipeRun.getTurnRadius()); + map.put("radius", pipeRun.getPipeDiameter() * 0.5); + } + if (controlPoint != null && controlPoint.getTurnAngle() != null && !Double.isNaN(controlPoint.getTurnAngle())) { + map.put("turnAngle", controlPoint.getTurnAngle()); + } + return map; + } + + + public Double getTurnAngle() { + return getControlPoint().getTurnAngle(); + } + + @GetPropertyValue(name="Turn Angle", value="turn angle", tabId = "Default") + public Double getTurnAngleDeg() { + Double d = getControlPoint().getTurnAngle(); + if (d == null) + return null; + return MathTools.radToDeg(d); + } + + public Vector3d getTurnAxis() { + return getControlPoint().getTurnAxis(); + } + + @Override + public Vector3d getNormal() { + return getTurnAxis(); + } +}