]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/src/org/simantics/plant3d/geometry/PumpGeometryProvider.java
White space clean-up
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / geometry / PumpGeometryProvider.java
index a7c32a66aabab76a5badf9b70e95ef323ac493b1..a34e34689361884f3af8be0a929711410a476ca7 100644 (file)
@@ -4,20 +4,16 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.Map;
 
-import org.jcae.opencascade.jni.BRepBuilderAPI_MakeEdge;
-import org.jcae.opencascade.jni.BRepBuilderAPI_MakeFace;
-import org.jcae.opencascade.jni.BRepBuilderAPI_MakeWire;
-import org.jcae.opencascade.jni.BRepPrimAPI_MakeRevol;
-import org.jcae.opencascade.jni.GC_MakeArcOfCircle;
-import org.jcae.opencascade.jni.GC_MakeSegment;
-import org.jcae.opencascade.jni.TopoDS_Edge;
-import org.jcae.opencascade.jni.TopoDS_Face;
+import javax.vecmath.AxisAngle4d;
+import javax.vecmath.Vector3d;
+
 import org.jcae.opencascade.jni.TopoDS_Shape;
-import org.jcae.opencascade.jni.TopoDS_Wire;
 import org.simantics.db.Resource;
+import org.simantics.g3d.math.MathTools;
 import org.simantics.opencascade.OccTriangulator;
+import org.simantics.plant3d.scenegraph.Nozzle;
 
-public class PumpGeometryProvider extends BuiltinGeometryProvider  {
+public class PumpGeometryProvider extends BuiltinGeometryProvider  implements FixedNozzleProvider{
        
        public PumpGeometryProvider(Resource resource) {
                super(resource);
@@ -28,6 +24,8 @@ public class PumpGeometryProvider extends BuiltinGeometryProvider  {
        
        @Override
        public Collection<TopoDS_Shape> getModel() throws Exception {
+               if (width < MathTools.NEAR_ZERO || length < MathTools.NEAR_ZERO)
+                       return Collections.emptyList();
                double h = width * 0.5;
                double h2 = width * 0.1;
                double ld2 = length * 0.5;
@@ -68,5 +66,34 @@ public class PumpGeometryProvider extends BuiltinGeometryProvider  {
                }
                
        }
+       
+       @Override
+       public int numberOfNozzles() {
+               return 2;
+       }
+       
+       @Override
+       public void updateNozzlePosition(int index, Nozzle nozzle) {
+               Double fl = nozzle.getFlowLength();
+               if (fl == null)
+                       fl = 0.1;
+               if (index == 0) {
+                       nozzle.setPosition(new Vector3d(-length*0.5- fl,width*0.6,0.0));
+                       nozzle.setOrientation(MathTools.getQuat(new AxisAngle4d(0,1,0,Math.PI)));
+               } else if (index == 1) {
+                       nozzle.setPosition(new Vector3d(-length*0.4,width*1.1+ fl,0.0));
+                       nozzle.setOrientation(MathTools.getQuat(new AxisAngle4d(0,0,1,Math.PI*0.5)));
+               }
+               
+       }
+       
+       @Override
+       public String getNozzleName(int index) {
+               switch (index) {
+               case 0 : return "Input";
+               case 1: return "Output";
+               default: return null;
+               }
+       }
 
 }