X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.plant3d%2Fsrc%2Forg%2Fsimantics%2Fplant3d%2Fgeometry%2FPumpGeometryProvider.java;h=a34e34689361884f3af8be0a929711410a476ca7;hb=53d55c24c779745f188bdb18d32f71d20acb61b2;hp=a7c32a66aabab76a5badf9b70e95ef323ac493b1;hpb=a460e609147d064dd3da464bcf1626845e0f93b4;p=simantics%2F3d.git diff --git a/org.simantics.plant3d/src/org/simantics/plant3d/geometry/PumpGeometryProvider.java b/org.simantics.plant3d/src/org/simantics/plant3d/geometry/PumpGeometryProvider.java index a7c32a66..a34e3468 100644 --- a/org.simantics.plant3d/src/org/simantics/plant3d/geometry/PumpGeometryProvider.java +++ b/org.simantics.plant3d/src/org/simantics/plant3d/geometry/PumpGeometryProvider.java @@ -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 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; + } + } }