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

View differences:

DwgPolyline3D.java
34 34
 */
35 35
package com.iver.cit.jdwglib.dwg.objects;
36 36

  
37
import java.awt.geom.Point2D;
38 37
import java.util.ArrayList;
39 38
import java.util.List;
40 39

  
......
46 45
import com.iver.cit.jdwglib.dwg.IDwg2FMap;
47 46
import com.iver.cit.jdwglib.dwg.IDwg3DTestable;
48 47
import com.iver.cit.jdwglib.dwg.IDwgPolyline;
48
import com.iver.cit.jdwglib.dwg.IDwgVertex;
49 49
import com.iver.cit.jdwglib.util.FMapUtil;
50 50

  
51 51
/**
......
55 55
 */
56 56
public class DwgPolyline3D extends DwgObject 
57 57
	implements IDwgPolyline, IDwg3DTestable, IDwg2FMap{
58
	public DwgPolyline3D(int index) {
59
		super(index);
60
		// TODO Auto-generated constructor stub
61
	}
58
	
62 59
	private int splineFlags;
63 60
	private int closedFlags;
64 61
	private DwgHandleReference firstVertexHandle = null;
65 62
	private DwgHandleReference lastVertexHandle = null;
66 63
	private DwgHandleReference seqendHandle = null;
67
	private double[][] pts;
64
	private List vertices;
68 65
	private double[] bulges;
69 66
	
67
	public DwgPolyline3D(int index) {
68
		super(index);
69
		vertices = new ArrayList();
70
	}
70 71
	/**
71 72
	 * @return Returns the closedFlags.
72 73
	 */
......
106 107
	/**
107 108
	 * @return Returns the pts.
108 109
	 */
109
	public double[][] getPts() {
110
		return pts;
110
	public List getPts() {
111
		return vertices;
111 112
	}
112 113
	/**
113 114
	 * @param pts The pts to set.
114 115
	 */
115
	public void setPts(double[][] pts) {
116
		this.pts = pts;
116
	public void setPts(List pts) {
117
		this.vertices = pts;
117 118
	}
118 119
	/**
119 120
	 * @return Returns the bulges.
......
210 211
		 }//for
211 212
		 
212 213
		 if (pts.size()>0) {
213
			double[][] newPts = new double[pts.size()][3];
214
			List newPts = new ArrayList();
215
			for (int j=0;j<pts.size();j++) {
216
				newPts.add(pts.get(j));
217
			}
214 218
			if ((closedFlags & 0x1)== 0x1) {
215
				newPts = new double[pts.size()+1][3];
216
				for (int j=0;j<pts.size();j++) {
217
					newPts[j][0] = ((double[])pts.get(j))[0];
218
					newPts[j][1] = ((double[])pts.get(j))[1];
219
					newPts[j][2] = ((double[])pts.get(j))[2];
220
				}
221
				newPts[pts.size()][0] = ((double[])pts.get(0))[0];
222
				newPts[pts.size()][1] = ((double[])pts.get(0))[1];
223
				newPts[pts.size()][2] = ((double[])pts.get(0))[2];
224
			} else {
225
				for (int j=0;j<pts.size();j++) {
226
					newPts[j][0] = ((double[])pts.get(j))[0];
227
					newPts[j][1] = ((double[])pts.get(j))[1];
228
					newPts[j][2] = ((double[])pts.get(j))[2];
229
				}//for
230
			}//if
219
				
220
				newPts.add(pts.get(0));
221
			} 
231 222
			setPts(newPts);
232 223
		} else {
233 224
			System.out.println("Encontrada polil?nea sin puntos ...");
......
280 271
		}//for 
281 272
		
282 273
		if (pts.size()>0) {
283
			double[][] newPts = new double[pts.size()][3];
274
			List newPts = new ArrayList();
275
			for (int j=0;j<pts.size();j++) {
276
				newPts.add(pts.get(j));
277
			}
284 278
			if ((closedFlags & 0x1)==0x1) {
285
				newPts = new double[pts.size()+1][3];
286
				for (int j=0;j<pts.size();j++) {
287
					newPts[j][0] = ((double[])pts.get(j))[0];
288
					newPts[j][1] = ((double[])pts.get(j))[1];
289
					newPts[j][2] = ((double[])pts.get(j))[2];
290
				}
291
				newPts[pts.size()][0] = ((double[])pts.get(0))[0];
292
				newPts[pts.size()][1] = ((double[])pts.get(0))[1];
293
				newPts[pts.size()][2] = ((double[])pts.get(0))[2];
294
			} else {
295
				for (int j=0;j<pts.size();j++) {
296
					newPts[j][0] = ((double[])pts.get(j))[0];
297
					newPts[j][1] = ((double[])pts.get(j))[1];
298
					newPts[j][2] = ((double[])pts.get(j))[2];
299
				}//for
300
			}//if
279
				newPts.add(pts.get(0));
280
			}
301 281
			setPts(newPts);
302 282
		} else {
303 283
//			System.out.println("Encontrada polil?nea sin puntos ...");
......
310 290
	 */
311 291
	public boolean has3DData() {
312 292
		
313
		double[][] pts = getPts();
293
		List pts = getPts();
314 294
		if(pts == null)
315 295
			return false;
316 296
		double z = 0d;
317
	    for (int j = 0; j<pts.length; j++) {
318
	        z = pts[j][2];
297
	    for (int j = 0; j<pts.size(); j++) {
298
	        z = ((double[])pts.get(j))[2];
319 299
			if (z != 0.0) 
320 300
				return true;
321 301
	    }
......
326 306
	 * @see com.iver.cit.jdwglib.dwg.IDwg3DTestable#getZ()
327 307
	 */
328 308
	public double getZ() {
329
		double[][] points3D = getPts();
309
		List points3D = getPts();
330 310
		if (points3D != null) {
331 311
			boolean constantElevation = true;
332
			for (int j = 0; j < points3D.length; j++) {
333
				if (points3D[j][2] != points3D[0][2]) {
312
			double[] firstPt = (double[]) points3D.get(0);
313
			for (int j = 0; j < points3D.size(); j++) {
314
				double[] pt = (double[]) points3D.get(j);
315
				if (pt[2] != firstPt[2]) {
334 316
					constantElevation = false;
335 317
					break;
336 318
				}
337 319
			}
338 320
			if (constantElevation)
339
				return points3D[0][2];
321
				return firstPt[2];
340 322
		}
341 323
		return 0d;
342 324
	}
......
345 327
	 */
346 328
	public FShape toFMapGeometry(boolean is3DFile) {
347 329
		FPolyline2D pline = null;
348
		double[][] points3D = getPts();
330
		List points3D = getPts();
349 331
		if (points3D != null) {
350 332
			if (is3DFile) {
351
				double[][] pline3D = new double[points3D.length][3];
352 333
				pline = FMapUtil.points3DToFPolyline3D(points3D);
353 334
			} else {
354
				Point2D[] points2D = new Point2D[points3D.length];
355
				for (int j = 0; j < points3D.length; j++) {
356
					points2D[j] = new Point2D.Double(points3D[j][0],
357
							points3D[j][1]);
335
				List points2D = new ArrayList();
336
				for (int j = 0; j < points3D.size(); j++) {
337
					double[] pt3d = (double[]) points3D.get(j);
338
					double[] pt  = new double[]{pt3d[0],
339
							pt3d[1]};
340
					points2D.add(pt);
358 341
				}
359 342
				pline = FMapUtil.points2DToFPolyline2D(points2D);
360 343
			}//if
......
391 374
		myObj.setClosedFlags(closedFlags);
392 375
		myObj.setFirstVertexHandle(firstVertexHandle);
393 376
		myObj.setLastVertexHandle(lastVertexHandle);
394
		myObj.setPts(pts);
377
		myObj.setPts(vertices);
395 378
		myObj.setSeqendHandle(seqendHandle);
396 379
		myObj.setSplineFlags(splineFlags);
397 380
	}
381
	public void addVertex(IDwgVertex vertex) {
382
		vertices.add(vertex.getPoint());
383
	}
398 384

  
399 385
}

Also available in: Unified diff