Revision 23111 branches/v10/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/readers/objreaders/v2004/DwgSplineReader2004.java

View differences:

DwgSplineReader2004.java
6 6

  
7 7
import java.util.ArrayList;
8 8

  
9
import org.apache.log4j.Logger;
10

  
9 11
import com.iver.cit.jdwglib.dwg.CorruptedDwgEntityException;
10 12
import com.iver.cit.jdwglib.dwg.DwgObject;
11 13
import com.iver.cit.jdwglib.dwg.DwgUtil;
......
19 21
 */
20 22
public class DwgSplineReader2004 extends AbstractDwg2004Reader{
21 23

  
24
	private static Logger logger = Logger.getLogger(DwgSplineReader2004.class.getName());
25

  
22 26
	/* (non-Javadoc)
23 27
	 * @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#readSpecificObj(int[], int, com.iver.cit.jdwglib.dwg.DwgObject)
24 28
	 */
25 29
	public void readSpecificObj(int[] data, int offset, DwgObject dwgObj) throws RuntimeException, CorruptedDwgEntityException {
26 30
		if(! (dwgObj instanceof DwgSpline))
27
			throw new RuntimeException("ArcReader 2004 solo puede leer DwgSpline");
31
			throw new RuntimeException("DwgSplineReader2004 solo puede leer DwgSpline");
28 32
		DwgSpline spline = (DwgSpline) dwgObj;
29 33
		int bitPos = offset;
30 34
		bitPos = readObjectHeader(data, bitPos, spline);
31
		
32
		ArrayList v = DwgUtil.getBitShort(data, bitPos);
35
		System.out.println("posActual = "+bitPos);
36
		ArrayList v;
37
		v = DwgUtil.getBitShort(data, bitPos);
33 38
		bitPos = ((Integer)v.get(0)).intValue();
34 39
		int sc = ((Integer)v.get(1)).intValue();
35 40
		spline.setScenario(sc);
36
		
41

  
37 42
		v = DwgUtil.getBitShort(data, bitPos);
38 43
		bitPos = ((Integer)v.get(0)).intValue();
39 44
		int deg = ((Integer)v.get(1)).intValue();
40 45
		spline.setDegree(deg);
41
		
46

  
42 47
		int knotsNumber = 0;
43 48
		int controlPointsNumber = 0;
44 49
		int fitPointsNumber = 0;
......
48 53
			bitPos = ((Integer)v.get(0)).intValue();
49 54
			double ft = ((Double)v.get(1)).doubleValue();
50 55
			spline.setFitTolerance(ft);
51
			
56

  
52 57
			v = DwgUtil.getBitDouble(data, bitPos);
53 58
			bitPos = ((Integer)v.get(0)).intValue();
54 59
			double x = ((Double)v.get(1)).doubleValue();
......
60 65
			double z = ((Double)v.get(1)).doubleValue();
61 66
			double[] coord = new double[]{x, y, z};
62 67
			spline.setBeginTanVector(coord);
63
			
68

  
64 69
			v = DwgUtil.getBitDouble(data, bitPos);
65 70
			bitPos = ((Integer)v.get(0)).intValue();
66 71
			x = ((Double)v.get(1)).doubleValue();
......
72 77
			z = ((Double)v.get(1)).doubleValue();
73 78
			coord = new double[]{x, y, z};
74 79
			spline.setEndTanVector(coord);
75
			
80

  
76 81
			v = DwgUtil.getBitShort(data, bitPos);
77 82
			bitPos = ((Integer)v.get(0)).intValue();
78 83
			fitPointsNumber = ((Integer)v.get(1)).intValue();
79
			
84

  
80 85
		} else if (sc==1) {
81 86
			v = DwgUtil.testBit(data, bitPos);
82 87
			bitPos = ((Integer)v.get(0)).intValue();
83 88
			boolean rat = ((Boolean)v.get(1)).booleanValue();
84 89
			spline.setRational(rat);
85
			
90

  
86 91
			v = DwgUtil.testBit(data, bitPos);
87 92
			bitPos = ((Integer)v.get(0)).intValue();
88 93
			boolean closed = ((Boolean)v.get(1)).booleanValue();
89 94
			spline.setClosed(closed);
90
			
95

  
91 96
			v = DwgUtil.testBit(data, bitPos);
92 97
			bitPos = ((Integer)v.get(0)).intValue();
93 98
			boolean per = ((Boolean)v.get(1)).booleanValue();
94 99
			spline.setPeriodic(per);
95
			
100

  
96 101
			v = DwgUtil.getBitDouble(data, bitPos);
97 102
			bitPos = ((Integer)v.get(0)).intValue();
98 103
			double ktol = ((Double)v.get(1)).doubleValue();
99 104
			spline.setKnotTolerance(ktol);
100
			
105

  
101 106
			v = DwgUtil.getBitDouble(data, bitPos);
102 107
			bitPos = ((Integer)v.get(0)).intValue();
103 108
			double ctol = ((Double)v.get(1)).doubleValue();
104 109
			spline.setControlTolerance(ctol);
105
			
110

  
106 111
			v = DwgUtil.getBitLong(data, bitPos);
107 112
			bitPos = ((Integer)v.get(0)).intValue();
108 113
			knotsNumber = ((Integer)v.get(1)).intValue();
109
			
114

  
110 115
			v = DwgUtil.getBitLong(data, bitPos);
111 116
			bitPos = ((Integer)v.get(0)).intValue();
112 117
			controlPointsNumber = ((Integer)v.get(1)).intValue();
113
			
118

  
114 119
			v = DwgUtil.testBit(data, bitPos);
115 120
			bitPos = ((Integer)v.get(0)).intValue();
116 121
			weight = ((Boolean)v.get(1)).booleanValue();
117
			
122

  
118 123
		} else {
119
			System.out.println("ERROR: Escenario desconocido");
124
			logger.warn("ERROR: Escenario desconocido");
120 125
		}
121 126
		if (knotsNumber>0) {
122 127
			double[] knotpts = new double[knotsNumber];
......
128 133
			spline.setKnotPoints(knotpts);
129 134
		}
130 135
		if (controlPointsNumber>0) {
131
			// Si el n?mero de weights no coincide con el de ctrlpts habr? problemas ...
136
			// Si el número de weights no coincide con el de ctrlpts habrá problemas ...
132 137
			double[][] ctrlpts = new double[controlPointsNumber][3];
133 138
			double[] weights = new double[controlPointsNumber];
134 139
			for (int i=0;i<controlPointsNumber;i++) {
......
141 146
				v = DwgUtil.getBitDouble(data, bitPos);
142 147
				bitPos = ((Integer)v.get(0)).intValue();
143 148
				double z = ((Double)v.get(1)).doubleValue();
144
				//double[] coord = new double[]{x, y, z};
145 149
				ctrlpts[i][0] = x;
146 150
				ctrlpts[i][1] = y;
147 151
				ctrlpts[i][2] = z;
......
177 181
		bitPos = readObjectTailer(data, bitPos, spline);
178 182
	}
179 183

  
180

  
181 184
}

Also available in: Unified diff