Revision 23111 branches/v10/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/readers/objreaders/v2004/DwgSplineReader2004.java
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