]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/src/org/simantics/plant3d/geometry/ElbowGeometryProvider.java
Support for inline component rotations
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / geometry / ElbowGeometryProvider.java
index 46aea58cded408d0cc172090f5299387bae5cdb0..ead9f0f52292a0e9d00aa5d3e2f0cdfa8403dde7 100644 (file)
@@ -4,12 +4,18 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.Map;
 
+import javax.vecmath.Point3d;
+import javax.vecmath.Vector3d;
+
 import org.jcae.opencascade.jni.TopoDS_Shape;
 import org.simantics.db.Resource;
 import org.simantics.g3d.math.MathTools;
+import org.simantics.g3d.shape.ArcCylinder;
+import org.simantics.g3d.shape.Mesh;
 import org.simantics.opencascade.OccTriangulator;
 
-public class ElbowGeometryProvider extends BuiltinGeometryProvider  {
+//public class ElbowGeometryProvider extends BuiltinGeometryProvider  {
+public class ElbowGeometryProvider extends BuiltinMeshProvider {
        
        public ElbowGeometryProvider(Resource resource) {
                super(resource);
@@ -19,7 +25,7 @@ public class ElbowGeometryProvider extends BuiltinGeometryProvider  {
        private double turnRadius = 0.05;
        private double turnAngle = Math.PI * 0.5;
        
-       @Override
+//     @Override
        public Collection<TopoDS_Shape> getModel() throws Exception {
                double t = Math.tan((Math.PI - turnAngle) * 0.5);
                double R = 0.0;
@@ -30,6 +36,18 @@ public class ElbowGeometryProvider extends BuiltinGeometryProvider  {
                return Collections.singletonList(shape);
        }
        
+//     @Override
+       public Mesh getMesh() {
+               double t = Math.tan((Math.PI - turnAngle) * 0.5);
+               double R = 0.0;
+               if (t > MathTools.NEAR_ZERO)
+                       R = turnRadius / t;
+               ArcCylinder cyl = new ArcCylinder();
+               
+               //return cyl.create(new Point3d(-R, 0.0, -turnRadius), new Point3d(0.0,turnRadius,0.0), new Point3d(-R, 0.0, turnRadius), radius, 16, 0.2);
+               return cyl.create(new Point3d(-R, 0.0, -turnRadius), new Vector3d(0.0,1.0,0.0), new Vector3d(0.0,0.0, 1.0),turnRadius, radius, turnAngle,16, 0.2);
+       }
+       
        @Override
        public void setProperties(Map<String, Object> props) {
                if (props.containsKey("turnRadius"))