]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/src/org/simantics/plant3d/utils/ComponentUtils.java
Fixed variable angle turns when they are not connected
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / utils / ComponentUtils.java
index 4bee16b61bd94660beae05d0fe96f0295b260b07..fb065f111f98b84c9d7ebf4ee27cb85ac4517190 100644 (file)
@@ -16,7 +16,9 @@ import org.simantics.db.common.utils.NameUtils;
 import org.simantics.db.exception.DatabaseException;
 import org.simantics.g3d.math.MathTools;
 import org.simantics.g3d.scenegraph.GeometryProvider;
+import org.simantics.g3d.scenegraph.ParametricGeometryProvider;
 import org.simantics.layer0.Layer0;
+import org.simantics.plant3d.geometry.ParameterRead;
 import org.simantics.plant3d.ontology.Plant3D;
 import org.simantics.plant3d.scenegraph.EndComponent;
 import org.simantics.plant3d.scenegraph.Equipment;
@@ -49,6 +51,8 @@ public class ComponentUtils {
                                types.add(Plant3D.URIs.Builtin_ConcentricReducer);
                                types.add(Plant3D.URIs.Builtin_BranchSplitComponent);
                                types.add(Plant3D.URIs.Builtin_EccentricReducer);
+                               types.add(Plant3D.URIs.Builtin_Elbow45);
+                               types.add(Plant3D.URIs.Builtin_Elbow90);
                                
                                for (String typeURI : types) {
                                        load(graph, typeURI);
@@ -72,6 +76,11 @@ public class ComponentUtils {
                }
                if (geom != null) {
                        GeometryProvider provider = graph.adapt(geom, GeometryProvider.class);
+                       if (provider instanceof ParametricGeometryProvider) {
+                       Map<String,Object> params = graph.syncRequest(new ParameterRead(type));
+                       if (params.size() > 0)
+                           ((ParametricGeometryProvider)provider).setProperties(params);
+                       }
                        return provider;
                }
                return null;
@@ -368,7 +377,7 @@ public class ComponentUtils {
                } else if (toPcp.isDirected()) {
                        dir = new Vector3d(toPcp.getDirection(Direction.NEXT));
                        pos = new Vector3d(toPcp.getWorldPosition());
-               } else if (toPcp.isTurn() && toPcp.isFixed()) {
+               } else if (toPcp.isTurn() && toPcp.asFixedAngle()) {
                        dir = new Vector3d(toPcp.getDirection(position == PositionType.NEXT ? Direction.NEXT : Direction.PREVIOUS));
                        pos = new Vector3d(toPcp.getWorldPosition());
                        if (!lengthAdjustable) {