X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.plant3d%2Fsrc%2Forg%2Fsimantics%2Fplant3d%2Fgeometry%2FHorizontalTankGeometryProvider.java;h=1b68ce75def643197799803e360af542fa69bb39;hb=7505a3c42c08da8a8bc0128ffa024ec4e9f0a47d;hp=7a3dc41b3a088ef2f46d393304d918cd34e777bb;hpb=a460e609147d064dd3da464bcf1626845e0f93b4;p=simantics%2F3d.git diff --git a/org.simantics.plant3d/src/org/simantics/plant3d/geometry/HorizontalTankGeometryProvider.java b/org.simantics.plant3d/src/org/simantics/plant3d/geometry/HorizontalTankGeometryProvider.java index 7a3dc41b..1b68ce75 100644 --- a/org.simantics.plant3d/src/org/simantics/plant3d/geometry/HorizontalTankGeometryProvider.java +++ b/org.simantics.plant3d/src/org/simantics/plant3d/geometry/HorizontalTankGeometryProvider.java @@ -15,6 +15,7 @@ import org.jcae.opencascade.jni.TopoDS_Face; 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; public class HorizontalTankGeometryProvider extends BuiltinGeometryProvider { @@ -28,13 +29,14 @@ public class HorizontalTankGeometryProvider extends BuiltinGeometryProvider { @Override public Collection getModel() throws Exception { - - double p0[] = new double[]{-length*0.50, 0.0,0.0}; - double p1[] = new double[]{-length*0.488, radius*0.6,0.0}; - double p2[] = new double[]{-length*0.46, radius,0.0}; - double p3[] = new double[]{ length*0.46, radius,0.0}; - double p4[] = new double[]{ length*0.488, radius*0.6,0.0}; - double p5[] = new double[]{ length*0.50, 0.0,0.0}; + if (radius < MathTools.NEAR_ZERO || length < MathTools.NEAR_ZERO) + return Collections.emptyList(); + double p0[] = new double[]{ length*0.50, 0.0,0.0}; + double p1[] = new double[]{ length*0.488, radius*0.6,0.0}; + double p2[] = new double[]{ length*0.46, radius,0.0}; + double p3[] = new double[]{-length*0.46, radius,0.0}; + double p4[] = new double[]{-length*0.488, radius*0.6,0.0}; + double p5[] = new double[]{-length*0.50, 0.0,0.0}; GC_MakeArcOfCircle m1 = new GC_MakeArcOfCircle(p0,p1,p2); GC_MakeSegment s1 = new GC_MakeSegment(p2,p3); @@ -75,17 +77,16 @@ public class HorizontalTankGeometryProvider extends BuiltinGeometryProvider { TopoDS_Shape shape2 = OccTriangulator.makeTranslation(shape, 0.0, radius, 0.0); shape.delete(); - shape = shape2; TopoDS_Shape box = OccTriangulator.makeBox(-length*0.4, 0.0, -radius*0.5, -length*0.3, radius, radius*0.5); - shape2 = OccTriangulator.makeFuse(shape, box); - shape.delete(); - box.delete(); - box = OccTriangulator.makeBox(length*0.3, 0.0, -radius*0.5, length*0.4, radius, radius*0.5); shape = OccTriangulator.makeFuse(shape2, box); shape2.delete(); box.delete(); + box = OccTriangulator.makeBox(length*0.3, 0.0, -radius*0.5, length*0.4, radius, radius*0.5); + shape2 = OccTriangulator.makeFuse(shape, box); + shape.delete(); + box.delete(); - return Collections.singletonList(shape); + return Collections.singletonList(shape2); } @Override