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);
private double length = 1.0;
private double radius = 0.01;
- @Override
- public Collection<TopoDS_Shape> 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<TopoDS_Shape> 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 < .001 || radius < MathTools.NEAR_ZERO )
+ return null;
+ Tube tube = new Tube();
+ tube.setResolution(16);
+ List<Tuple3d> vertices = new ArrayList<Tuple3d>();
+ List<Double> radius = new ArrayList<Double>();
+ List<Vector3d> tangents = new ArrayList<Vector3d>();
+ 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