1 package org.simantics.plant3d.scenegraph;
3 import java.util.HashMap;
6 import javax.vecmath.Vector3d;
8 import org.simantics.g3d.math.MathTools;
9 import org.simantics.g3d.property.annotations.GetPropertyValue;
10 import org.simantics.g3d.scenegraph.base.ParentNode;
11 import org.simantics.objmap.graph.annotations.DynamicGraphType;
12 import org.simantics.objmap.graph.annotations.GetType;
13 import org.simantics.objmap.graph.annotations.SetType;
14 import org.simantics.plant3d.ontology.Plant3D;
15 import org.simantics.plant3d.scenegraph.controlpoint.ControlPointFactory;
16 import org.simantics.plant3d.scenegraph.controlpoint.PipeControlPoint;
18 @DynamicGraphType(Plant3D.URIs.TurnComponent)
19 public class TurnComponent extends PipelineComponent {
23 private PipeControlPoint controlPoint;
25 @GetType(Plant3D.URIs.TurnComponent)
26 public String getType() {
30 @SetType(Plant3D.URIs.TurnComponent)
31 public void setType(String type) throws Exception{
33 controlPoint = ControlPointFactory.create(this);
37 public PipeControlPoint getControlPoint() {
42 public void setParent(ParentNode<?> parent, String name) {
43 super.setParent(parent, name);
44 setPipeRun((PipeRun)parent);
48 public Map<String, Object> updateParameterMap() {
49 Map<String,Object> map = new HashMap<String, Object>();
51 PipeRun pipeRun = getPipeRun();
52 if (pipeRun != null) {
53 map.put("turnRadius", pipeRun.getTurnRadius());
54 map.put("radius", pipeRun.getPipeDiameter() * 0.5);
56 if (controlPoint != null && controlPoint.getTurnAngle() != null && !Double.isNaN(controlPoint.getTurnAngle())) {
57 map.put("turnAngle", controlPoint.getTurnAngle());
63 public Double getTurnAngle() {
64 return getControlPoint().getTurnAngle();
67 @GetPropertyValue(name="Turn Angle", value="turn angle", tabId = "Default")
68 public Double getTurnAngleDeg() {
69 Double d = getControlPoint().getTurnAngle();
72 return MathTools.radToDeg(d);
75 public Vector3d getTurnAxis() {
76 return getControlPoint().getTurnAxis();
80 public Vector3d getNormal() {