Revision 163

View differences:

org.gvsig.dgn/trunk/org.gvsig.dgn/org.gvsig.dgn.provider/src/main/java/org/gvsig/fmap/dal/store/dgn/DGNStoreProvider.java
65 65
import org.gvsig.fmap.geom.exception.CreateGeometryException;
66 66
import org.gvsig.fmap.geom.primitive.Envelope;
67 67
import org.gvsig.fmap.geom.primitive.GeneralPathX;
68
import org.gvsig.fmap.geom.primitive.IGeneralPathX;
68 69
import org.gvsig.fmap.geom.primitive.OrientablePrimitive;
69 70
import org.gvsig.fmap.geom.primitive.Point;
70 71
import org.gvsig.fmap.geom.type.GeometryType;
......
777 778
                                OrientablePrimitive geom = null;
778 779
                                subtypeElement = getGeometrySubType(dgnmultipoint);
779 780
                                if (dgnmultipoint.isPolygon()) {
780
                                    geom = (OrientablePrimitive) geomManager.createPolygon(subtypeHeader);
781
                                    geom = geomManager.createPolygon(subtypeHeader);
781 782
                                } else {
782
                                    geom = (OrientablePrimitive) geomManager.createLine(subtypeHeader);
783
                                    geom = geomManager.createLine(subtypeHeader);
783 784
                                }
784 785

  
785 786
                                // Si es una curva nos saltamos los dos primeros y los dos ultimos vertices.
......
830 831
                                2.0 * dgnarc.secondary_axis,
831 832
                                -dgnarc.startang, -dgnarc.sweepang,
832 833
                                Arc2D.OPEN);
833

  
834
                            
834 835
                            zvalue = dgnarc.origin.getZ();
835 836

  
836 837
                            PathIterator pathIterator = elArco.getPathIterator(null);
837
                            GeneralPathX elShapeArc = new GeneralPathX(pathIterator);
838
                            IGeneralPathX elShapeArc = geomManager.createGeneralPath(
839
                                    IGeneralPathX.WIND_EVEN_ODD, 
840
                                    pathIterator
841
                            );
838 842

  
839 843
                            // Transformamos el GeneralPahtX porque si transformamos
840 844
                            // elArco nos lo convierte a GeneralPath y nos guarda las coordenadas en float,
......
844 848
                            OrientablePrimitive geom = null;
845 849
                            subtypeElement = getGeometrySubType(dgnarc);
846 850
                            if (dgnarc.isSurface()) {
847
                                geom = (OrientablePrimitive) geomManager.create(
848
                                        Geometry.TYPES.SURFACE, subtypeHeader);
851
                                geom = geomManager.createPolygon(subtypeElement);
849 852
                            } else {
850
                                geom = (OrientablePrimitive) geomManager.create(
851
                                        Geometry.TYPES.CURVE, subtypeHeader);
853
                                geom = geomManager.createLine(subtypeElement);
852 854
                            }
853
                            geom.setGeneralPath(elShapeArc);
854
                            if ((subtypeElement == Geometry.SUBTYPES.GEOM3D || subtypeElement == Geometry.SUBTYPES.GEOM3DM)
855
                                && !ignoreZs) {
856
                                for (int i = 0; i < geom.getNumVertices(); i++) {
857
                                    Point originalvertex = geom.getVertex(i);
858
                                    Point vertex =
859
                                        (Point) geomManager.create(Geometry.TYPES.POINT, subtypeElement);
860
                                    vertex.setCoordinateAt(0,originalvertex.getX());
861
                                    vertex.setCoordinateAt(1,originalvertex.getY());
862
                                    vertex.setCoordinateAt(2, zvalue);
863
                                    geom.setVertex(i, vertex);
855
                            for( int i=0; i<elShapeArc.getNumCoords(); i++ ) {
856
                                double[] coords = elShapeArc.getCoordinatesAt(i);
857
                                if( ignoreZs || subtypeElement == Geometry.SUBTYPES.GEOM2D || subtypeElement == Geometry.SUBTYPES.GEOM2DM) {
858
                                    geom.addVertex(coords[0], coords[1]);
859
                                } else {
860
                                    geom.addVertex(coords[0], coords[1],zvalue);
864 861
                                }
865
                            } else {
866
                                //do nothing
867
                                int a=0;
862
                                
868 863
                            }
869

  
870 864
                            data.setDefaultGeometry(geom);
871 865
                            break;
872 866

  
......
1039 1033
            // int numSubElementos = 0;
1040 1034
            int complex_index_fill_color = -1;
1041 1035
            int nClass; // Para filtrar los elementos de construcci?n, etc.
1042
            GeneralPathX elementoCompuesto = new GeneralPathX(GeneralPathX.WIND_EVEN_ODD);
1036
            IGeneralPathX elementoCompuesto = geomManager.createGeneralPath(IGeneralPathX.WIND_EVEN_ODD, null);
1043 1037

  
1044 1038
            int counterOfElement = 0;
1045 1039
            DGNElemComplexHeader parentElement = null;
......
1108 1102
                                        auxRow, type, dgnReader);
1109 1103
                                }
1110 1104

  
1111
                                elementoCompuesto = new GeneralPathX(GeneralPathX.WIND_EVEN_ODD);
1105
                                elementoCompuesto = geomManager.createGeneralPath(IGeneralPathX.WIND_EVEN_ODD, null);
1112 1106
                            }
1113 1107

  
1114 1108
                            bElementoCompuesto = false;
......
1209 1203
                                auxRow,
1210 1204
                                type, dgnReader);
1211 1205
                        } else {
1212
                            GeneralPathX elShape = new GeneralPathX(GeneralPathX.WIND_EVEN_ODD);
1206
                            IGeneralPathX elShape = geomManager.createGeneralPath(IGeneralPathX.WIND_EVEN_ODD, null);
1213 1207

  
1214 1208
                            if (psLine.type == DGNFileHeader.DGNT_CURVE) {
1215 1209
                                psLine.num_vertices = psLine.num_vertices - 4;
......
1313 1307
                        // Ellipse2D.Double(psArc.origin.x - psArc.primary_axis,
1314 1308
                        // psArc.origin.y - psArc.secondary_axis,2.0 *
1315 1309
                        // psArc.primary_axis, 2.0 * psArc.secondary_axis);
1316
                        GeneralPathX elShapeArc = new GeneralPathX(elArco.getPathIterator(null));
1310
                        IGeneralPathX elShapeArc = geomManager.createGeneralPath(
1311
                                IGeneralPathX.WIND_EVEN_ODD, 
1312
                                elArco.getPathIterator(null)
1313
                        );
1317 1314

  
1318 1315
                        // Transformamos el GeneralPahtX porque si transformamos
1319 1316
                        // elArco nos lo convierte
......
1432 1429

  
1433 1430
        }
1434 1431

  
1435
        private Geometry createMultiSurface(GeneralPathX elementoCompuesto)
1432
        private Geometry createMultiSurface(IGeneralPathX elementoCompuesto)
1436 1433
            throws DataException {
1437 1434
            try {
1438
                return geomManager.createMultiSurface(elementoCompuesto,
1439
                    SUBTYPES.GEOM2D);
1435
                return geomManager.createMultiSurface(
1436
                        (GeneralPathX) elementoCompuesto,
1437
                        SUBTYPES.GEOM2D
1438
                );
1440 1439
            } catch (CreateGeometryException e) {
1441 1440
                throw new org.gvsig.fmap.dal.feature.exception.CreateGeometryException(
1442 1441
                    e);
......
1488 1487
            addFeature(data, dgnReader);
1489 1488
        }
1490 1489

  
1491
        private Geometry createMultiCurve(GeneralPathX elementoCompuesto)
1490
        private Geometry createMultiCurve(IGeneralPathX elementoCompuesto)
1492 1491
            throws DataException {
1493 1492
            try {
1494
                return geomManager.createMultiCurve(elementoCompuesto,
1493
                return geomManager.createMultiCurve((GeneralPathX) elementoCompuesto,
1495 1494
                    SUBTYPES.GEOM2D);
1496 1495
            } catch (CreateGeometryException e) {
1497 1496
                throw new org.gvsig.fmap.dal.feature.exception.CreateGeometryException(
......
1499 1498
            }
1500 1499
        }
1501 1500

  
1502
        private Geometry createSurface(GeneralPathX elementoCompuesto)
1501
        private Geometry createSurface(IGeneralPathX elementoCompuesto)
1503 1502
            throws DataException {
1504 1503
            try {
1505
                return geomManager.createCurve(elementoCompuesto,
1504
                return geomManager.createCurve((GeneralPathX) elementoCompuesto,
1506 1505
                    SUBTYPES.GEOM2D);
1507 1506
            } catch (CreateGeometryException e) {
1508 1507
                throw new org.gvsig.fmap.dal.feature.exception.CreateGeometryException(

Also available in: Unified diff