Revision 10632 trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/objects/DwgPolyline2D.java

View differences:

DwgPolyline2D.java
49 49
import com.iver.cit.jdwglib.dwg.IDwgBlockMember;
50 50
import com.iver.cit.jdwglib.dwg.IDwgExtrusionable;
51 51
import com.iver.cit.jdwglib.dwg.IDwgPolyline;
52
import com.iver.cit.jdwglib.dwg.IDwgVertex;
52 53
import com.iver.cit.jdwglib.util.AcadExtrusionCalculator;
53 54
import com.iver.cit.jdwglib.util.FMapUtil;
54 55
import com.iver.cit.jdwglib.util.GisModelCurveCalculator;
......
62 63
	implements IDwgPolyline, IDwgExtrusionable, IDwg3DTestable, IDwg2FMap, IDwgBlockMember{
63 64
	
64 65
	
65
	public DwgPolyline2D(int index) {
66
		super(index);
67
		// TODO Auto-generated constructor stub
68
	}
66
	
69 67
	private int flags;
70 68
	private int curveType;
71 69
	private double initWidth;
......
76 74
	private DwgHandleReference firstVertexHandle = null;
77 75
	private DwgHandleReference lastVertexHandle = null;
78 76
	private DwgHandleReference seqendHandle = null;
79
	private Point2D[] pts;
77
	private List vertices;
80 78
	private double[] bulges;
81 79
	
80
	public DwgPolyline2D(int index) {
81
		super(index);
82
		vertices = new ArrayList();
83
	}
82 84
	/**
83 85
	 * @return Returns the firstVertexHandle.
84 86
	 */
......
118 120
	/**
119 121
	 * @return Returns the pts.
120 122
	 */
121
	public Point2D[] getPts() {
122
		return pts;
123
	public List getPts() {
124
		return vertices;
123 125
	}
124 126
	/**
125 127
	 * @param pts The pts to set.
126 128
	 */
127
	public void setPts(Point2D[] pts) {
128
		this.pts = pts;
129
	public void setPts(List pts) {
130
		this.vertices = pts;
129 131
	}
130 132
	/**
131 133
	 * @return Returns the bulges.
......
284 286
		 }//for
285 287
		 
286 288
		if (pts.size()>0) {
287
			Point2D[] newPts = new Point2D[pts.size()];
289
			List newPts = new ArrayList();
288 290
			if ((flags & 0x1)==0x1) {
289
				newPts = new Point2D[pts.size()+1];
290 291
				for (int j=0;j<pts.size();j++) {
291
					newPts[j] = (Point2D)pts.get(j);
292
					newPts.add(pts.get(j));
292 293
				}
293
				newPts[pts.size()] = (Point2D)pts.get(0);
294
				newPts.add(pts.get(0));
294 295
				bulges.add(new Double(0));
295 296
			} else {
296 297
				for (int j=0;j<pts.size();j++) {
297
					newPts[j] = (Point2D)pts.get(j);
298
					newPts.add(pts.get(j));
298 299
				}
299 300
			}
300 301
			double[] bs = new double[bulges.size()];
......
302 303
				bs[j] = ((Double)bulges.get(j)).doubleValue();
303 304
			}
304 305
			setBulges(bs);
305
			Point2D[] points = GisModelCurveCalculator.
306
			List points = GisModelCurveCalculator.
306 307
					calculateGisModelBulge(newPts, bs);
307 308
			setPts(points);
308 309
		} else {
......
361 362
		}//for
362 363
		
363 364
		if (pts.size()>0) {
364
			Point2D[] newPts = new Point2D[pts.size()];
365
			List newPts = new ArrayList();
365 366
			if ((flags & 0x1)==0x1) {
366
				newPts = new Point2D[pts.size()+1];
367 367
				for (int j=0;j<pts.size();j++) {
368
					newPts[j] = (Point2D)pts.get(j);
368
					newPts.add(pts.get(j));
369 369
				}
370
				newPts[pts.size()] = (Point2D)pts.get(0);
370
				newPts.add(pts.get(0));
371 371
				bulges.add(new Double(0));
372 372
			} else {
373 373
				for (int j=0;j<pts.size();j++) {
374
					newPts[j] = (Point2D)pts.get(j);
374
					newPts.add(pts.get(j));
375 375
				}
376 376
			}
377 377
			double[] bs = new double[bulges.size()];
......
379 379
				bs[j] = ((Double)bulges.get(j)).doubleValue();
380 380
			}
381 381
			setBulges(bs);
382
			Point2D[] points = GisModelCurveCalculator.
382
			List points = GisModelCurveCalculator.
383 383
					calculateGisModelBulge(newPts, bs);
384 384
			setPts(points);
385 385
		} else {
......
394 394
	public void applyExtrussion() {
395 395
		  if(getPts() == null)
396 396
			return;
397
		  Point2D[] vertices = getPts();
397
		  List vertices = getPts();
398 398
	      double[] polyline2DExt = getExtrusion();
399 399
	      double elev = getElevation();
400
	      double[][] polylinePoints3D = new double[vertices.length][3];
401
	      for (int j=0;j<vertices.length;j++) {
402
	          polylinePoints3D[j][0] = vertices[j].getX();
403
	          polylinePoints3D[j][1] = vertices[j].getY();
400
	      double[][] polylinePoints3D = new double[vertices.size()][3];
401
	      for (int j = 0;j < vertices.size(); j++) {
402
	          polylinePoints3D[j][0] = ((double[])vertices.get(j))[0];
403
	          polylinePoints3D[j][1] = ((double[])vertices.get(j))[1];
404 404
	          polylinePoints3D[j][2] = elev;
405 405
	          polylinePoints3D[j] = AcadExtrusionCalculator.extrude2(polylinePoints3D[j], polyline2DExt);
406 406
	      }
407 407
	      setElevation(elev);
408
	      for (int j=0;j<vertices.length;j++) {
409
	          vertices[j] = new Point2D.Double(polylinePoints3D[j][0], polylinePoints3D[j][1]);
408
	      for (int j=0;j<vertices.size();j++) {
409
	          vertices.add(new double[]{((double[])polylinePoints3D[j])[0], ((double[])polylinePoints3D[j])[1]});
410 410
	      }
411 411
	      setPts(vertices);
412 412
	}
......
427 427
	 */
428 428
	public FShape toFMapGeometry(boolean is3DFile) {
429 429
		FPolyline2D pline = null;
430
		Point2D[] points = getPts();
430
		List points = getPts();
431 431
		double elev = getElevation();
432 432
		
433 433
		if (points != null) {
434 434
			if (is3DFile) {
435
				double[][] pline3D = new double[points.length][3];
436
				for (int j = 0; j < points.length; j++) {
437
					pline3D[j][0] = points[j].getX();
438
					pline3D[j][1] = points[j].getY();
439
					pline3D[j][2] = elev;
435
				List pline3D = new ArrayList();
436
				for (int j = 0; j < points.size(); j++) {
437
					double[] point = new double[3];
438
					point[0] = ((double[])vertices.get(j))[0];
439
					point[1] = ((double[])vertices.get(j))[1];
440
					point[2] = elev;
441
					pline3D.add(point);
440 442
				}
441 443
				pline = FMapUtil.points3DToFPolyline3D(pline3D);
442 444
			} else {
......
462 464
			double[] scale, double rot, 
463 465
			List dwgObjectsWithoutBlocks, 
464 466
			Map handleObjWithoutBlocks, DwgFile callBack) {
467
		
465 468
		DwgPolyline2D transformedEntity = null;
466
		Point2D[] vertices = this.getPts();
469
		List vertices = this.getPts();
470
		
467 471
		if (vertices != null) {
468
		    Point2D[] transformedVertices = new Point2D[vertices.length];
469
			for (int i=0;i<vertices.length;i++) {
470
			    Point2D pointAux = new Point2D.Double(vertices[i].getX() - bPoint[0], vertices[i].getY() - bPoint[1]);
471
				double laX = insPoint.getX() + ((pointAux.getX()*scale[0])*Math.cos(rot) + (pointAux.getY()*scale[1])*(-1)*Math.sin(rot));
472
				double laY = insPoint.getY() + ((pointAux.getX()*scale[0])*Math.sin(rot) + (pointAux.getY()*scale[1])*Math.cos(rot));
473
				transformedVertices[i] = new Point2D.Double(laX, laY);
474
			}
472
		    List transformedVertices = new ArrayList();
473
			for (int i=0;i < vertices.size();i++) {
474
				double[] pointAux = null;
475
			    pointAux = new double[]{((double[]) vertices.get(i))[0] - bPoint[0],
476
			    		((double[]) vertices.get(i))[1] - bPoint[1]};
477
			    
478
				double laX = insPoint.getX() + ((pointAux[0] * scale[0])*Math.cos(rot) + (pointAux[1]*scale[1])*(-1)*Math.sin(rot));
479
				double laY = insPoint.getY() + ((pointAux[0]*scale[0])*Math.sin(rot) + (pointAux[1]*scale[1])*Math.cos(rot));
480
				transformedVertices.add(new double[]{laX, laY});
481
			}//for
475 482
			transformedEntity = (DwgPolyline2D)this.clone();
476 483
			transformedEntity.setPts(transformedVertices);
477 484
			transformedEntity.setElevation((this.getElevation() * scale[2]));
......
501 508
		myObj.setFlags(flags);
502 509
		myObj.setInitWidth(initWidth);
503 510
		myObj.setLastVertexHandle(lastVertexHandle);
504
		myObj.setPts(pts);
511
		myObj.setPts(vertices);
505 512
		myObj.setSeqendHandle(seqendHandle);
506 513
		myObj.setThickness(thickness);
507 514

  
508 515
	}
516
	public void addVertex(IDwgVertex vertex) {
517
		vertices.add(vertex.getPoint());
518
	}
509 519

  
510 520
}

Also available in: Unified diff