Revision 2326 branches/CqCMSDvp/libraries/libCq CMS for java.old/src/org/cresques/px/dxf/DxfFeatureMaker.java

View differences:

DxfFeatureMaker.java
211 211
				LineString3D lineString3D = (LineString3D)feaBordes.getGeometry();
212 212
				Polygon3D polygon3D = (Polygon3D)feaFondos.getGeometry();
213 213
				lineString3D.add(firstPt);
214
				if (bulge!=0) {
215
					
214
				if (bulge!=0 && !(lineString3D.get(lineString3D.pointNr()-2).getX()==lineString3D.get(lineString3D.pointNr()-1).getX()) && lineString3D.get(lineString3D.pointNr()-2).getY()==lineString3D.get(lineString3D.pointNr()-1).getY()) {
216 215
					// 041122: Correcci?n del bug en los bulges de FIXT3.DXF
217 216
					Vector arc = createArc(new Point2D.Double(lineString3D.get(lineString3D.pointNr()-2).getX(), lineString3D.get(lineString3D.pointNr()-2).getY()), new Point2D.Double(lineString3D.get(lineString3D.pointNr()-1).getX(), lineString3D.get(lineString3D.pointNr()-1).getY()), bulge);
218 217
					lineString3D.remove(lineString3D.pointNr()-1);
......
241 240
						}					
242 241
					}
243 242
					// 041122
244
					
245 243
					bulge = 0.0;
246 244
				}
247 245
				
......
328 326
			if (lastFeaBordes.getGeometry() instanceof LineString3D) {
329 327
				Feature feaBordes = lastFeaBordes;
330 328
				LineString3D lineString3D = (LineString3D)feaBordes.getGeometry();
331
				if (bulge!=0) {
332
					
329
				if (bulge!=0 && !(lineString3D.get(lineString3D.pointNr()-2).getX()==lineString3D.get(lineString3D.pointNr()-1).getX()) && lineString3D.get(lineString3D.pointNr()-2).getY()==lineString3D.get(lineString3D.pointNr()-1).getY()) {
333 330
					// 041122: Correcci?n del bug en los bulges de FIXT3.DXF
334 331
					Vector arc = createArc(new Point2D.Double(lineString3D.get(lineString3D.pointNr()-2).getX(), lineString3D.get(lineString3D.pointNr()-2).getY()), new Point2D.Double(lineString3D.get(lineString3D.pointNr()-1).getX(), lineString3D.get(lineString3D.pointNr()-1).getY()), bulge);
335 332
					lineString3D.remove(lineString3D.pointNr()-1);
......
354 351
						}					
355 352
					}
356 353
					// 041122
357
					
358 354
					bulge = 0.0;
359 355
				}
360 356
				
......
499 495
						bulge_aux = grp.getDataAsDouble(42);
500 496
					} else { bulge_aux = 0.0; }
501 497
					//int cnt = lineString.pointNr();
502
					lineString3D.remove(lineString3D.pointNr()-1);
503
					lineString3D.remove(lineString3D.pointNr()-1);
504
					polygon3D.remove(polygon3D.pointNr()-1);
505
					polygon3D.remove(polygon3D.pointNr()-1);
506
					Vector arc = createArc(ptAnterior, pt, bulge);
507
					if (bulge>0) {
508
						for (int i=0; i<arc.size(); i++) {
509
							Point2D ptAux = new Point2D.Double();
510
							ptAux = proj.createPoint(((Point2D)arc.get(i)).getX(), ((Point2D)arc.get(i)).getY());
511
							Point3D ptAux3D = new Point3D(ptAux.getX(), ptAux.getY(), z);
512
							lineString3D.add(ptAux3D);
513
							polygon3D.add(ptAux3D);
514
							if (lineString3D.pointNr() == 1) firstPt = ptAux3D;
498
					if (ptAnterior.getX()==pt.getX() && ptAnterior.getY()==pt.getY()) {
499
					    // no se construye el arco
500
					} else {
501
						lineString3D.remove(lineString3D.pointNr()-1);
502
						lineString3D.remove(lineString3D.pointNr()-1);
503
						polygon3D.remove(polygon3D.pointNr()-1);
504
						polygon3D.remove(polygon3D.pointNr()-1);
505
						Vector arc = createArc(ptAnterior, pt, bulge);
506
						if (bulge>0) {
507
							for (int i=0; i<arc.size(); i++) {
508
								Point2D ptAux = new Point2D.Double();
509
								ptAux = proj.createPoint(((Point2D)arc.get(i)).getX(), ((Point2D)arc.get(i)).getY());
510
								Point3D ptAux3D = new Point3D(ptAux.getX(), ptAux.getY(), z);
511
								lineString3D.add(ptAux3D);
512
								polygon3D.add(ptAux3D);
513
								if (lineString3D.pointNr() == 1) firstPt = ptAux3D;
514
							}
515
						} else {
516
							for (int i=arc.size()-1; i>=0; i--) {
517
								Point2D ptAux = new Point2D.Double();
518
								ptAux = proj.createPoint(((Point2D)arc.get(i)).getX(), ((Point2D)arc.get(i)).getY());
519
								Point3D ptAux3D = new Point3D(ptAux.getX(), ptAux.getY(), z);
520
								lineString3D.add(ptAux3D);
521
								polygon3D.add(ptAux3D);
522
								if (lineString3D.pointNr() == 1 || polygon3D.pointNr() == 1) firstPt = ptAux3D;
523
							}			
515 524
						}
516
					} else {
517
						for (int i=arc.size()-1; i>=0; i--) {
518
							Point2D ptAux = new Point2D.Double();
519
							ptAux = proj.createPoint(((Point2D)arc.get(i)).getX(), ((Point2D)arc.get(i)).getY());
520
							Point3D ptAux3D = new Point3D(ptAux.getX(), ptAux.getY(), z);
521
							lineString3D.add(ptAux3D);
522
							polygon3D.add(ptAux3D);
523
							if (lineString3D.pointNr() == 1 || polygon3D.pointNr() == 1) firstPt = ptAux3D;
524
						}			
525 525
					}
526 526
					bulge = bulge_aux;
527 527
				}
......
575 575
					if (grp.hasCode(42)) {
576 576
						bulge_aux = grp.getDataAsDouble(42);
577 577
					} else { bulge_aux = 0.0; }
578
					// Borro los puntos inicio y final del arco.
579
					lineString3D.remove(lineString3D.pointNr()-1);
580
					lineString3D.remove(lineString3D.pointNr()-1);
581
					Vector arc = createArc(ptAnterior, pt, bulge);
582
					if (bulge>0) {
583
						for (int i=0; i<arc.size(); i++) {
584
							Point2D ptAux = new Point2D.Double();
585
							ptAux = proj.createPoint(((Point2D)arc.get(i)).getX(), ((Point2D)arc.get(i)).getY());
586
							Point3D ptAux3D = new Point3D(ptAux.getX(), ptAux.getY(), z);
587
							lineString3D.add(ptAux3D);
588
							if (lineString3D.pointNr() == 1) firstPt = ptAux3D;
578
					if (ptAnterior.getX()==pt.getX() && ptAnterior.getY()==pt.getY()) {
579
					    // no se construye el arco
580
					} else {
581
						// Borro los puntos inicio y final del arco.
582
						lineString3D.remove(lineString3D.pointNr()-1);
583
						lineString3D.remove(lineString3D.pointNr()-1);
584
						Vector arc = createArc(ptAnterior, pt, bulge);
585
						if (bulge>0) {
586
							for (int i=0; i<arc.size(); i++) {
587
								Point2D ptAux = new Point2D.Double();
588
								ptAux = proj.createPoint(((Point2D)arc.get(i)).getX(), ((Point2D)arc.get(i)).getY());
589
								Point3D ptAux3D = new Point3D(ptAux.getX(), ptAux.getY(), z);
590
								lineString3D.add(ptAux3D);
591
								if (lineString3D.pointNr() == 1) firstPt = ptAux3D;
592
							}
593
						} else {
594
							for (int i=arc.size()-1; i>=0; i--) {
595
								Point2D ptAux = new Point2D.Double();
596
								ptAux = proj.createPoint(((Point2D)arc.get(i)).getX(), ((Point2D)arc.get(i)).getY());
597
								Point3D ptAux3D = new Point3D(ptAux.getX(), ptAux.getY(), z);
598
								lineString3D.add(ptAux3D);
599
								if (lineString3D.pointNr() == 1) firstPt = ptAux3D;
600
							}					
589 601
						}
590
					} else {
591
						for (int i=arc.size()-1; i>=0; i--) {
592
							Point2D ptAux = new Point2D.Double();
593
							ptAux = proj.createPoint(((Point2D)arc.get(i)).getX(), ((Point2D)arc.get(i)).getY());
594
							Point3D ptAux3D = new Point3D(ptAux.getX(), ptAux.getY(), z);
595
							lineString3D.add(ptAux3D);
596
							if (lineString3D.pointNr() == 1) firstPt = ptAux3D;
597
						}					
598 602
					}
599 603
					bulge = bulge_aux;
600 604
				}
......
697 701
				y = ((Double) g.getData()).doubleValue();
698 702
				if (hasBulge) {
699 703
					Point2D finalPoint = new Point2D.Double(x, y);
700
					Vector arc = createArc(((LineString3D)lineString3D).get(lineString3D.pointNr()-1), finalPoint, bulgeLwp);
701
					lineString3D.remove(lineString3D.pointNr()-1);
702
					if (isDoubleFeatured) polygon3D.remove(polygon3D.pointNr()-1);
703
					if (bulgeLwp>0) {
704
						for (int k=0; k<arc.size(); k++) {
705
							Point2D ptAux = new Point2D.Double();
706
							ptAux = proj.createPoint(((Point2D)arc.get(k)).getX(), ((Point2D)arc.get(k)).getY());
707
							//System.out.println("createLwPolyline: ptAux = " + ptAux);
708
							Point3D ptAux3D = new Point3D(ptAux.getX(), ptAux.getY(), elev);
709
							lineString3D.add(ptAux3D);
710
							//if (lineString.pointNr() == 1) firstPt = ptAux;
711
							if (isDoubleFeatured) polygon3D.add(ptAux3D);
712
							if (lineString3D.pointNr() == 1 || polygon3D.pointNr() == 1) firstPt = ptAux3D;
713
						}
704
					if (((LineString3D)lineString3D).get(lineString3D.pointNr()-1).getX()==finalPoint.getX() && ((LineString3D)lineString3D).get(lineString3D.pointNr()-1).getY()==finalPoint.getY()) {
705
					    // no se construye el arco
714 706
					} else {
715
						for (int k=arc.size()-1; k>=0; k--) {
716
							Point2D ptAux = new Point2D.Double();
717
							ptAux = proj.createPoint(((Point2D)arc.get(k)).getX(), ((Point2D)arc.get(k)).getY());
718
							Point3D ptAux3D = new Point3D(ptAux.getX(), ptAux.getY(), elev);
719
							lineString3D.add(ptAux3D);
720
							if (isDoubleFeatured) polygon3D.add(ptAux3D);
721
							if (lineString3D.pointNr() == 1 || polygon3D.pointNr() == 1) firstPt = ptAux3D;
707
						Vector arc = createArc(((LineString3D)lineString3D).get(lineString3D.pointNr()-1), finalPoint, bulgeLwp);
708
						lineString3D.remove(lineString3D.pointNr()-1);
709
						if (isDoubleFeatured) polygon3D.remove(polygon3D.pointNr()-1);
710
						if (bulgeLwp>0) {
711
							for (int k=0; k<arc.size(); k++) {
712
								Point2D ptAux = new Point2D.Double();
713
								ptAux = proj.createPoint(((Point2D)arc.get(k)).getX(), ((Point2D)arc.get(k)).getY());
714
								//System.out.println("createLwPolyline: ptAux = " + ptAux);
715
								Point3D ptAux3D = new Point3D(ptAux.getX(), ptAux.getY(), elev);
716
								lineString3D.add(ptAux3D);
717
								//if (lineString.pointNr() == 1) firstPt = ptAux;
718
								if (isDoubleFeatured) polygon3D.add(ptAux3D);
719
								if (lineString3D.pointNr() == 1 || polygon3D.pointNr() == 1) firstPt = ptAux3D;
720
							}
721
						} else {
722
							for (int k=arc.size()-1; k>=0; k--) {
723
								Point2D ptAux = new Point2D.Double();
724
								ptAux = proj.createPoint(((Point2D)arc.get(k)).getX(), ((Point2D)arc.get(k)).getY());
725
								Point3D ptAux3D = new Point3D(ptAux.getX(), ptAux.getY(), elev);
726
								lineString3D.add(ptAux3D);
727
								if (isDoubleFeatured) polygon3D.add(ptAux3D);
728
								if (lineString3D.pointNr() == 1 || polygon3D.pointNr() == 1) firstPt = ptAux3D;
729
							}
722 730
						}
723 731
					}
724 732
					hasBulge = false;

Also available in: Unified diff