Revision 10632 trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/objects/DwgPolyline3D.java
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