X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.plant3d%2Fsrc%2Forg%2Fsimantics%2Fplant3d%2Fgeometry%2FStraightGeometryProvider.java;h=cdbd3431da0c046f15235b490220291f8a5ecfe8;hb=refs%2Fchanges%2F58%2F3658%2F1;hp=ac63f91587d2239aedb5b66251ee148fd3f072a3;hpb=a460e609147d064dd3da464bcf1626845e0f93b4;p=simantics%2F3d.git diff --git a/org.simantics.plant3d/src/org/simantics/plant3d/geometry/StraightGeometryProvider.java b/org.simantics.plant3d/src/org/simantics/plant3d/geometry/StraightGeometryProvider.java index ac63f915..cdbd3431 100644 --- a/org.simantics.plant3d/src/org/simantics/plant3d/geometry/StraightGeometryProvider.java +++ b/org.simantics.plant3d/src/org/simantics/plant3d/geometry/StraightGeometryProvider.java @@ -1,15 +1,20 @@ package org.simantics.plant3d.geometry; -import java.util.Collection; -import java.util.Collections; +import java.util.ArrayList; +import java.util.List; import java.util.Map; -import org.jcae.opencascade.jni.TopoDS_Shape; +import javax.vecmath.Point3d; +import javax.vecmath.Tuple3d; +import javax.vecmath.Vector3d; + import org.simantics.db.Resource; import org.simantics.g3d.math.MathTools; -import org.simantics.opencascade.OccTriangulator; +import org.simantics.g3d.shape.Mesh; +import org.simantics.g3d.shape.Tube; -public class StraightGeometryProvider extends BuiltinGeometryProvider { +//public class StraightGeometryProvider extends BuiltinGeometryProvider { +public class StraightGeometryProvider extends BuiltinMeshProvider { public StraightGeometryProvider(Resource resource) { super(resource); @@ -18,11 +23,33 @@ public class StraightGeometryProvider extends BuiltinGeometryProvider { private double length = 1.0; private double radius = 0.01; - @Override - public Collection getModel() throws Exception { - TopoDS_Shape shape = OccTriangulator.makeCylinder(new double[] {-length*0.5, 0.0, 0.0}, new double[] { 1.0, 0.0, 0.0 }, radius, length); +// @Override +// public Collection getModel() throws Exception { +// TopoDS_Shape shape = OccTriangulator.makeCylinder(new double[] {-length*0.5, 0.0, 0.0}, new double[] { 1.0, 0.0, 0.0 }, radius, length); // System.out.println("Create straight l:" + length + " r:" + radius); - return Collections.singletonList(shape); +// return Collections.singletonList(shape); +// } + + @Override + public Mesh getMesh() { + if (length < .0001 || radius < MathTools.NEAR_ZERO ) + return null; + Tube tube = new Tube(); + tube.setResolution(16); + List vertices = new ArrayList(); + List radius = new ArrayList(); + List tangents = new ArrayList(); + vertices.add(new Point3d(-length*0.5, 0.0, 0.0)); + vertices.add(new Point3d( length*0.5, 0.0, 0.0)); + radius.add(this.radius); + radius.add(this.radius); + tangents.add(new Vector3d(1.0,0.0,0.0)); + tangents.add(new Vector3d(1.0,0.0,0.0)); + tube.setVertices(vertices); + tube.setRadiis(radius); + tube.setTangents(tangents); + tube.setCap(false); + return tube.create(); } @Override