Statistics
| Revision:

root / trunk / libraries / libDwg / src / com / iver / cit / jdwglib / dwg / readers / objreaders / v15 / DwgSolidReader15.java @ 10054

History | View | Annotate | Download (3.45 KB)

1
/*
2
 * Created on 25-ene-2007 by azabala
3
 *
4
 */
5
package com.iver.cit.jdwglib.dwg.readers.objreaders.v15;
6

    
7
import java.util.ArrayList;
8

    
9
import com.iver.cit.jdwglib.dwg.CorruptedDwgEntityException;
10
import com.iver.cit.jdwglib.dwg.DwgObject;
11
import com.iver.cit.jdwglib.dwg.DwgUtil;
12
import com.iver.cit.jdwglib.dwg.objects.DwgSolid;
13

    
14
/**
15
 * @author alzabord
16
 *
17
 * TODO To change the template for this generated type comment go to
18
 * Window - Preferences - Java - Code Style - Code Templates
19
 */
20
public class DwgSolidReader15 extends AbstractDwg15Reader{
21

    
22
        /* (non-Javadoc)
23
         * @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#readSpecificObj(int[], int, com.iver.cit.jdwglib.dwg.DwgObject)
24
         */
25
        public void readSpecificObj(int[] data, int offset, DwgObject dwgObj) throws RuntimeException, CorruptedDwgEntityException {
26
                if(! (dwgObj instanceof DwgSolid))
27
                        throw new RuntimeException("ArcReader 15 solo puede leer DwgSolid");
28
                DwgSolid sol = (DwgSolid) dwgObj;
29
                int bitPos = offset;
30
                bitPos = headTailReader.readObjectHeader(data, bitPos, sol);
31
                ArrayList v = DwgUtil.testBit(data, bitPos);
32
                bitPos = ((Integer)v.get(0)).intValue();
33
                boolean flag = ((Boolean)v.get(1)).booleanValue();
34
            double val;
35
                if (flag) {
36
                        val=0.0;
37
                } else {
38
                        v = DwgUtil.getBitDouble(data, bitPos);
39
                        bitPos = ((Integer)v.get(0)).intValue();
40
                        val = ((Double)v.get(1)).doubleValue();
41
                }
42
                sol.setThickness(val);
43
                v = DwgUtil.getBitDouble(data, bitPos);
44
                bitPos = ((Integer)v.get(0)).intValue();
45
                val = ((Double)v.get(1)).doubleValue();
46
                sol.setElevation(val);
47
                v = DwgUtil.getRawDouble(data, bitPos);
48
                bitPos = ((Integer)v.get(0)).intValue();
49
                double x = ((Double)v.get(1)).doubleValue();
50
                v = DwgUtil.getRawDouble(data, bitPos);
51
                bitPos = ((Integer)v.get(0)).intValue();
52
                double y = ((Double)v.get(1)).doubleValue();
53
                double[] coord = new double[]{x, y, val};
54
                sol.setCorner1(coord);
55
                v = DwgUtil.getRawDouble(data, bitPos);
56
                bitPos = ((Integer)v.get(0)).intValue();
57
                x = ((Double)v.get(1)).doubleValue();
58
                v = DwgUtil.getRawDouble(data, bitPos);
59
                bitPos = ((Integer)v.get(0)).intValue();
60
                y = ((Double)v.get(1)).doubleValue();
61
                coord = new double[]{x, y, val};
62
                sol.setCorner2(coord);
63
                v = DwgUtil.getRawDouble(data, bitPos);
64
                bitPos = ((Integer)v.get(0)).intValue();
65
                x = ((Double)v.get(1)).doubleValue();
66
                v = DwgUtil.getRawDouble(data, bitPos);
67
                bitPos = ((Integer)v.get(0)).intValue();
68
                y = ((Double)v.get(1)).doubleValue();
69
                coord = new double[]{x, y, val};
70
                sol.setCorner3(coord);
71
                v = DwgUtil.getRawDouble(data, bitPos);
72
                bitPos = ((Integer)v.get(0)).intValue();
73
                x = ((Double)v.get(1)).doubleValue();
74
                v = DwgUtil.getRawDouble(data, bitPos);
75
                bitPos = ((Integer)v.get(0)).intValue();
76
                y = ((Double)v.get(1)).doubleValue();
77
                coord = new double[]{x, y, val};
78
                sol.setCorner4(coord);
79
                v = DwgUtil.testBit(data, bitPos);
80
                bitPos = ((Integer)v.get(0)).intValue();
81
                flag = ((Boolean)v.get(1)).booleanValue();
82
                double z;
83
            if (flag) {
84
                         x = y = 0.0;
85
                         z = 1.0;
86
                } else {
87
                        v = DwgUtil.getBitDouble(data, bitPos);
88
                        bitPos = ((Integer)v.get(0)).intValue();
89
                        x = ((Double)v.get(1)).doubleValue();
90
                        v = DwgUtil.getBitDouble(data, bitPos);
91
                        bitPos = ((Integer)v.get(0)).intValue();
92
                        y = ((Double)v.get(1)).doubleValue();
93
                        v = DwgUtil.getBitDouble(data, bitPos);
94
                        bitPos = ((Integer)v.get(0)).intValue();
95
                        z = ((Double)v.get(1)).doubleValue();
96
                }
97
                coord = new double[]{x, y, z};
98
                sol.setExtrusion(coord);
99
                bitPos = headTailReader.readObjectTailer(data, bitPos, sol);
100
        }
101
}