svn-gvsig-desktop / branches / v2_0_0_prep / libraries / libDwg / src-test / org / gvsig / dwg / lib / DwgFileTest.java @ 29001
History | View | Annotate | Download (11 KB)
1 | 28970 | jmvivo | package org.gvsig.dwg.lib; |
---|---|---|---|
2 | 10198 | fdiaz | |
3 | import java.io.File; |
||
4 | import java.io.IOException; |
||
5 | import java.net.URL; |
||
6 | |||
7 | import junit.framework.TestCase; |
||
8 | |||
9 | public class DwgFileTest extends TestCase { |
||
10 | private File baseDataPath; |
||
11 | |||
12 | protected void setUp() throws Exception { |
||
13 | super.setUp();
|
||
14 | 29001 | jmvivo | URL url = this.getClass().getResource("data"); |
15 | if (url == null) { |
||
16 | throw new Exception("Can't find 'data' dir"); |
||
17 | } |
||
18 | |||
19 | 10198 | fdiaz | baseDataPath = new File(url.getFile()); |
20 | 29001 | jmvivo | if (!baseDataPath.exists()) {
|
21 | throw new Exception("Can't find 'data' dir"); |
||
22 | } |
||
23 | |||
24 | 10198 | fdiaz | } |
25 | |||
26 | protected void tearDown() throws Exception { |
||
27 | super.tearDown();
|
||
28 | } |
||
29 | public void test1() throws IOException, DwgVersionNotSupportedException { |
||
30 | 10319 | azabala | // String fileName = baseDataPath.getAbsolutePath()+"/Un punto.dwg";
|
31 | // DwgFile dwg = new DwgFile(fileName);
|
||
32 | //
|
||
33 | // dwg.read();
|
||
34 | // dwg.calculateGisModelDwgPolylines();
|
||
35 | // dwg.blockManagement();
|
||
36 | // LinkedList dwgObjects = dwg.getDwgObjects();
|
||
37 | 10224 | azabala | } |
38 | 29001 | jmvivo | |
39 | 10224 | azabala | public void test2() throws RuntimeException, CorruptedDwgEntityException{ |
40 | //Dwg Object that is supposed to be
|
||
41 | //an LWPOLYLINE in V14 version
|
||
42 | /*
|
||
43 | int[] data = new int[]{61,64,64,183,19,227,104,16
|
||
44 | ,0,5,8,59,72,32,252,47,90,142,
|
||
45 | 234,145,50,10,71,11,213,36,229,
|
||
46 | 162,130,10,228,126,23,174,130,
|
||
47 | 145,50,15,98,141,196,244,229,
|
||
48 | 162,130,12,126,23,169,66,58,
|
||
49 | 145,50,12,47,90,138,68,229,
|
||
50 | 162,130,8,0,0,4,7,74,137,50,
|
||
51 | 15,177,66,231,252,221,162,130,
|
||
52 | 9,130,151,21,242,151,21,190,
|
||
53 | 8,21,8,56};
|
||
54 | */
|
||
55 | 10319 | azabala | // int[] data = new int[]{62,128,64,71,99,
|
56 | // 40,48,0,5,8,27,72,
|
||
57 | // 100,126,23,169,68,
|
||
58 | // 178,105,50,13,114,
|
||
59 | // 63,11,82,165,162,130,
|
||
60 | // 13,114,63,11,210,138,
|
||
61 | // 105,50,8,173,114,59,
|
||
62 | // 138,205,162,130,15,98,
|
||
63 | // 141,192,241,58,105,50,
|
||
64 | // 11,51,51,52,178,229,162,
|
||
65 | // 130,14,110,102,98,97,234,
|
||
66 | // 105,50,11,51,51,52,179,21,
|
||
67 | // 162,130,10,149,192,240,42,
|
||
68 | // 162,105,50,14,189,27,131,
|
||
69 | // 107,69,162,130,14,31,169,
|
||
70 | // 66,227,74,105,50,9,240,86,
|
||
71 | // 185,27,117,162,130,11,59,
|
||
72 | // 51,51,52,234,105,50,13,114,
|
||
73 | // 63,11,83,85,162,130,9,74,228,
|
||
74 | // 126,22,186,105,50,11,51,51,50,
|
||
75 | // 51,53,162,130,11,137,232,82,190,
|
||
76 | // 58,105,50,9,74,228,122,147,13,162,
|
||
77 | // 130,11,137,232,82,189,106,105,50,9,
|
||
78 | // 74,228,122,146,213,162,130,9,74,228,122,20,202,105,50,12,126,23,171,194,173,162,130,12,126,23,169,68,178,105,50,13,114,63,11,82,165,162,130,9,130,151,22,10,136,182,8,21,8,120};
|
||
79 | // //1er intento: suponemos que la LWPOLYLINE cumple la especificaci?n
|
||
80 | // //a rajatabla
|
||
81 | // int bitPos = 0;
|
||
82 | // List val = DwgUtil.getBitShort(data, bitPos);
|
||
83 | // bitPos = ((Integer) val.get(0)).intValue();
|
||
84 | // int type = ((Integer) val.get(1)).intValue();
|
||
85 | // System.out.println("type = " + type);
|
||
86 | 29001 | jmvivo | //
|
87 | 10319 | azabala | // DwgHandleReference hr = new DwgHandleReference();
|
88 | // bitPos = hr.read(data, bitPos);
|
||
89 | // System.out.println("handle, code="+
|
||
90 | // hr.getCode()+
|
||
91 | // " ,offset="+
|
||
92 | // hr.getOffset());
|
||
93 | 29001 | jmvivo | //
|
94 | 10319 | azabala | // //Ahora pasamos a la extended data
|
95 | // val = DwgUtil.getBitShort(data, bitPos);
|
||
96 | // bitPos = ((Integer) val.get(0)).intValue();
|
||
97 | // int extendedDataSize = ((Integer) val.get(1)).intValue();
|
||
98 | // System.out.println("EED size="+extendedDataSize);
|
||
99 | // //como el size es 0, me lo salto
|
||
100 | 29001 | jmvivo | //
|
101 | 10319 | azabala | // //ver si tiene datos graficos
|
102 | // val = DwgUtil.testBit(data, bitPos);
|
||
103 | // bitPos = ((Integer) val.get(0)).intValue();
|
||
104 | // boolean hasGraphicsData = ((Boolean) val.get(1))
|
||
105 | // .booleanValue();
|
||
106 | // System.out.println("graphics = "+hasGraphicsData);
|
||
107 | 29001 | jmvivo | //
|
108 | 10319 | azabala | // //como se que no hay graphics me lo salto
|
109 | // //tama?o en bits
|
||
110 | // val = DwgUtil.getRawLong(data, bitPos);
|
||
111 | // bitPos = ((Integer) val.get(0)).intValue();
|
||
112 | // int sizeInBits = ((Integer) val.get(1)).intValue();
|
||
113 | // System.out.println("sizeInBits = "+sizeInBits);
|
||
114 | 29001 | jmvivo | //
|
115 | 10319 | azabala | // /*
|
116 | // * Ahora, lo que viene es lo que en la spec se dice
|
||
117 | // * "Common entity data". Revisar bien pues PythonCAD no lo lee
|
||
118 | // * como en la spec.
|
||
119 | 29001 | jmvivo | // *
|
120 | 10319 | azabala | // * pag 42.
|
121 | // R13-R14 Only:
|
||
122 | // RL : Size of object data in bits
|
||
123 | // 6B : Flags (FEDCBA)
|
||
124 | // 6B : Common parameters (CCSSII)
|
||
125 | // Segun esto, deberia leer 6 bits y 6 bits
|
||
126 | 29001 | jmvivo | //
|
127 | 10319 | azabala | // FLAGS
|
128 | // Mas adelante (pag 43), dice:
|
||
129 | 29001 | jmvivo | // DC : This is the number of reactors attached to an
|
130 | // entity as a bitshort.
|
||
131 | // This feature may have been dormant in R13,
|
||
132 | 10319 | azabala | // but it appears in R14, and in files saved as R13 by R14.
|
133 | 29001 | jmvivo | //
|
134 | 10319 | azabala | // Ahora bien, pythoncad las est? leyendo como bitLong
|
135 | // ?En que quedamos, son 2 bits, 1 bitLong o 1 bitShort?
|
||
136 | // TODO REVISAR
|
||
137 | 29001 | jmvivo | //
|
138 | 10319 | azabala | // COMMON PARAMETERS
|
139 | // Al principio, dice que son 6 bits (CC, SS, II)
|
||
140 | // pero luego dice (pag 43):
|
||
141 | // CC : Color bitshort
|
||
142 | // SS : Linetype scale bitdouble
|
||
143 | // II : "Invisible" flag bitshort
|
||
144 | //
|
||
145 | // Pythoncad, en vez de como 2 bits, los est? leyendo
|
||
146 | // como BitShort, BitDouble y BitShort
|
||
147 | 29001 | jmvivo | //
|
148 | 10319 | azabala | // * */
|
149 | 29001 | jmvivo | //
|
150 | 10319 | azabala | // Integer mode = (Integer) DwgUtil.getBits(data, 2, bitPos);
|
151 | // bitPos += 2;
|
||
152 | // System.out.println("mode = "+mode);
|
||
153 | 29001 | jmvivo | //
|
154 | 10319 | azabala | // /*
|
155 | // val = DwgUtil.getBitLong(data, bitPos);
|
||
156 | // bitPos = ((Integer) val.get(0)).intValue();
|
||
157 | // int rnum = ((Integer) val.get(1)).intValue();
|
||
158 | // System.out.println("numReactors = "+rnum);
|
||
159 | //*/
|
||
160 | // val = DwgUtil.getBitShort(data, bitPos);
|
||
161 | // bitPos = ((Integer) val.get(0)).intValue();
|
||
162 | // int rnum = ((Integer) val.get(1)).intValue();
|
||
163 | // System.out.println("numReactors = "+rnum);
|
||
164 | 29001 | jmvivo | //
|
165 | //
|
||
166 | 10319 | azabala | // val = DwgUtil.testBit(data, bitPos);
|
167 | // bitPos = ((Integer) val.get(0)).intValue();
|
||
168 | // boolean isLyrByLineType = ((Boolean) val.get(1)).booleanValue();
|
||
169 | // System.out.println("isLyrByLineType="+isLyrByLineType);
|
||
170 | 29001 | jmvivo | //
|
171 | 10319 | azabala | // val = DwgUtil.testBit(data, bitPos);
|
172 | // bitPos = ((Integer) val.get(0)).intValue();
|
||
173 | // boolean noLinks = ((Boolean) val.get(1)).booleanValue();
|
||
174 | // System.out.println("noLinks="+noLinks);
|
||
175 | //
|
||
176 | 29001 | jmvivo | //
|
177 | 10319 | azabala | // val = DwgUtil.getBitShort(data, bitPos);
|
178 | // bitPos = ((Integer) val.get(0)).intValue();
|
||
179 | // int color = ((Integer) val.get(1)).intValue();
|
||
180 | // System.out.println("color="+color);
|
||
181 | 29001 | jmvivo | //
|
182 | //
|
||
183 | 10319 | azabala | // val = DwgUtil.getBitDouble(data, bitPos);
|
184 | // bitPos = ((Integer) val.get(0)).intValue();
|
||
185 | // float ltscale = ((Double) val.get(1)).floatValue();
|
||
186 | // System.out.println("ltscale="+ltscale);
|
||
187 | 29001 | jmvivo | //
|
188 | 10319 | azabala | // val = DwgUtil.getBitShort(data, bitPos);
|
189 | // bitPos = ((Integer) val.get(0)).intValue();
|
||
190 | // int invis = ((Integer) val.get(1)).intValue();
|
||
191 | // System.out.println("invis="+invis);
|
||
192 | 29001 | jmvivo | //
|
193 | 10319 | azabala | // val = DwgUtil.getBitShort(data, bitPos);
|
194 | // bitPos = ((Integer) val.get(0)).intValue();
|
||
195 | // int flag = ((Integer) val.get(1)).intValue();
|
||
196 | // System.out.println("flag="+flag);
|
||
197 | 29001 | jmvivo | //
|
198 | 10319 | azabala | // double dVal = 0d;
|
199 | // if((flag & 0x4) > 0){
|
||
200 | // val = DwgUtil.getBitDouble(data, bitPos);
|
||
201 | // bitPos = ((Integer) val.get(0)).intValue();
|
||
202 | // dVal = ((Double) val.get(1)).doubleValue();
|
||
203 | // }
|
||
204 | // System.out.println("constWidth="+dVal);
|
||
205 | 29001 | jmvivo | //
|
206 | 10319 | azabala | // dVal = 0d;
|
207 | // if((flag & 0x8) > 0){
|
||
208 | // val = DwgUtil.getBitDouble(data, bitPos);
|
||
209 | // bitPos = ((Integer) val.get(0)).intValue();
|
||
210 | // dVal = ((Double) val.get(1)).doubleValue();
|
||
211 | // }
|
||
212 | // System.out.println("elevation="+dVal);
|
||
213 | 29001 | jmvivo | //
|
214 | 10319 | azabala | // dVal = 0d;
|
215 | // if ((flag & 0x2) > 0){
|
||
216 | // val = DwgUtil.getBitDouble(data, bitPos);
|
||
217 | // bitPos = ((Integer) val.get(0)).intValue();
|
||
218 | // dVal = ((Double) val.get(1)).doubleValue();
|
||
219 | // }
|
||
220 | // System.out.println("thickness="+dVal);
|
||
221 | 29001 | jmvivo | //
|
222 | 10319 | azabala | // double x, y, z ;
|
223 | // x = 0d;
|
||
224 | 29001 | jmvivo | // y = 0d;
|
225 | 10319 | azabala | // z = 0d;
|
226 | 29001 | jmvivo | //
|
227 | 10319 | azabala | // if ((flag & 0x1) > 0){
|
228 | // val = DwgUtil.getBitDouble(data, bitPos);
|
||
229 | // bitPos = ((Integer) val.get(0)).intValue();
|
||
230 | // x = ((Double) val.get(1)).doubleValue();
|
||
231 | 29001 | jmvivo | //
|
232 | 10319 | azabala | // val = DwgUtil.getBitDouble(data, bitPos);
|
233 | // bitPos = ((Integer) val.get(0)).intValue();
|
||
234 | // y = ((Double) val.get(1)).doubleValue();
|
||
235 | 29001 | jmvivo | //
|
236 | 10319 | azabala | // val = DwgUtil.getBitDouble(data, bitPos);
|
237 | // bitPos = ((Integer) val.get(0)).intValue();
|
||
238 | // z = ((Double) val.get(1)).doubleValue();
|
||
239 | // }
|
||
240 | // System.out.println("normal="+x+","+y+","+z);
|
||
241 | 29001 | jmvivo | //
|
242 | 10319 | azabala | // val = DwgUtil.getBitLong(data, bitPos);
|
243 | // bitPos = ((Integer) val.get(0)).intValue();
|
||
244 | // int np = ((Integer) val.get(1)).intValue();
|
||
245 | // System.out.println("numPoints="+np);
|
||
246 | 29001 | jmvivo | //
|
247 | 10319 | azabala | // int nb = 0;
|
248 | // if((flag & 0x10) > 0){
|
||
249 | // val = DwgUtil.getBitLong(data, bitPos);
|
||
250 | // bitPos = ((Integer) val.get(0)).intValue();
|
||
251 | // nb = ((Integer) val.get(1)).intValue();
|
||
252 | // }
|
||
253 | // System.out.println("numBulges="+nb);
|
||
254 | // int nw = 0;
|
||
255 | // if((flag & 0x20) > 0){
|
||
256 | // val = DwgUtil.getBitLong(data, bitPos);
|
||
257 | // bitPos = ((Integer) val.get(0)).intValue();
|
||
258 | // nw = ((Integer) val.get(1)).intValue();
|
||
259 | // }
|
||
260 | // System.out.println("numWidths="+nw);
|
||
261 | // if(np > 0){
|
||
262 | // Point2D[] points = new Point2D[np];
|
||
263 | // for(int i = 0; i < np; i++){
|
||
264 | // val = DwgUtil.getRawDouble(data, bitPos);
|
||
265 | // bitPos = ((Integer) val.get(0)).intValue();
|
||
266 | // x = ((Double) val.get(1)).doubleValue();
|
||
267 | 29001 | jmvivo | //
|
268 | 10319 | azabala | // val = DwgUtil.getRawDouble(data, bitPos);
|
269 | // bitPos = ((Integer) val.get(0)).intValue();
|
||
270 | // y = ((Double) val.get(1)).doubleValue();
|
||
271 | 29001 | jmvivo | //
|
272 | 10319 | azabala | // points[i] = new Point2D.Double(x, y);
|
273 | // System.out.println("Punto"+i+"="+x+","+y);
|
||
274 | // }//for
|
||
275 | // }//if np
|
||
276 | 29001 | jmvivo | //
|
277 | 10319 | azabala | // if(nb > 0){
|
278 | // double[] bulges = new double[nb];
|
||
279 | // for(int i = 0; i < nb; i++){
|
||
280 | // val = DwgUtil.getRawDouble(data, bitPos);
|
||
281 | // bitPos = ((Integer) val.get(0)).intValue();
|
||
282 | // bulges[i] = ((Double) val.get(1)).doubleValue();
|
||
283 | // System.out.println("Bulge"+i+"="+bulges[i]);
|
||
284 | // }//for
|
||
285 | 29001 | jmvivo | //
|
286 | 10319 | azabala | // }//if nb
|
287 | 29001 | jmvivo | //
|
288 | 10319 | azabala | // if(nw > 0){
|
289 | // double[][] widths = new double[nw][2];
|
||
290 | // for(int i = 0; i < nw; i++){
|
||
291 | // val = DwgUtil.getBitDouble(data, bitPos);
|
||
292 | // bitPos = ((Integer) val.get(0)).intValue();
|
||
293 | // double sw = ((Double) val.get(1)).doubleValue();
|
||
294 | 29001 | jmvivo | //
|
295 | 10319 | azabala | // val = DwgUtil.getBitDouble(data, bitPos);
|
296 | // bitPos = ((Integer) val.get(0)).intValue();
|
||
297 | // double ew = ((Double) val.get(1)).doubleValue();
|
||
298 | 29001 | jmvivo | //
|
299 | 10319 | azabala | // widths[i][0] = sw;
|
300 | // widths[i][1] = ew;
|
||
301 | // System.out.println("Width"+i+"="+sw+","+ew);
|
||
302 | // }//for
|
||
303 | // }
|
||
304 | } |
||
305 | 29001 | jmvivo | |
306 | 10319 | azabala | public void test3(){ |
307 | //test of extrusion
|
||
308 | 10361 | azabala | double[] coord = null; |
309 | double[] extrusion = null; |
||
310 | 10319 | azabala | double[] extrusion2 = new double[]{0, 0, 1}; |
311 | 29001 | jmvivo | |
312 | 10345 | azabala | coord = new double[]{790089.65, 4477974.75, 9.560000000114087}; |
313 | extrusion = new double[]{-0.5037965987025721, 0.07005064807841195, 0.8609772899673451}; |
||
314 | 10361 | azabala | //1. algoritmo original, vector normal distinto
|
315 | 29001 | jmvivo | // double[] newCoord = AcadExtrusionCalculator.extrude(coord, extrusion);
|
316 | // newCoord = AcadExtrusionCalculator.extrude3(coord, extrusion);
|
||
317 | //
|
||
318 | 10361 | azabala | //2? ahora con vector normal coincidente con eje Z
|
319 | 29001 | jmvivo | // newCoord = AcadExtrusionCalculator.extrude(coord, extrusion2);
|
320 | // newCoord = AcadExtrusionCalculator.extrude3(coord, extrusion2);
|
||
321 | 10319 | azabala | } |
322 | 10198 | fdiaz | } |