Revision 9910
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/DwgFile.java | ||
---|---|---|
66 | 66 |
import com.iver.cit.jdwglib.dwg.objects.DwgSolid; |
67 | 67 |
import com.iver.cit.jdwglib.dwg.objects.DwgText; |
68 | 68 |
import com.iver.cit.jdwglib.dwg.objects.DwgVertex2D; |
69 |
import com.iver.cit.jdwglib.dwg.readers.DwgFileReader; |
|
69 |
import com.iver.cit.jdwglib.dwg.readers.IDwgFileReader;
|
|
70 | 70 |
import com.iver.cit.jdwglib.dwg.readers.DwgFileV15Reader; |
71 | 71 |
|
72 | 72 |
/** |
... | ... | |
147 | 147 |
* Specific reader of the DWG file version (12, 13, 14, 2000, etc., each |
148 | 148 |
* version will have an specific reader) |
149 | 149 |
* */ |
150 |
private DwgFileReader dwgReader; |
|
150 |
private IDwgFileReader dwgReader;
|
|
151 | 151 |
private boolean dwg3DFile; |
152 | 152 |
/** |
153 | 153 |
* Memory mapped byte buffer of the whole DWG file |
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/readers/DwgFileReader.java | ||
---|---|---|
1 |
/* jdwglib. Java Library for reading Dwg files. |
|
2 |
* |
|
3 |
* Author: Jose Morell Rama (jose.morell@gmail.com). |
|
4 |
* Port from the Pythoncad Dwg library by Art Haas. |
|
5 |
* |
|
6 |
* Copyright (C) 2005 Jose Morell, IVER TI S.A. and Generalitat Valenciana |
|
7 |
* |
|
8 |
* This program is free software; you can redistribute it and/or |
|
9 |
* modify it under the terms of the GNU General Public License |
|
10 |
* as published by the Free Software Foundation; either version 2 |
|
11 |
* of the License, or (at your option) any later version. |
|
12 |
* |
|
13 |
* This program is distributed in the hope that it will be useful, |
|
14 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
* GNU General Public License for more details. |
|
17 |
* |
|
18 |
* You should have received a copy of the GNU General Public License |
|
19 |
* along with this program; if not, write to the Free Software |
|
20 |
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,USA. |
|
21 |
* |
|
22 |
* For more information, contact: |
|
23 |
* |
|
24 |
* Jose Morell (jose.morell@gmail.com) |
|
25 |
* |
|
26 |
* or |
|
27 |
* |
|
28 |
* IVER TI S.A. |
|
29 |
* C/Salamanca, 50 |
|
30 |
* 46005 Valencia |
|
31 |
* Spain |
|
32 |
* +34 963163400 |
|
33 |
* dac@iver.es |
|
34 |
*/ |
|
35 |
package com.iver.cit.jdwglib.dwg.readers; |
|
36 |
|
|
37 |
import java.io.IOException; |
|
38 |
import java.nio.ByteBuffer; |
|
39 |
|
|
40 |
import com.iver.cit.jdwglib.dwg.DwgFile; |
|
41 |
|
|
42 |
/** |
|
43 |
* The DwgFileReader reads all the DWG format versions |
|
44 |
* |
|
45 |
* @author jmorell |
|
46 |
*/ |
|
47 |
public interface DwgFileReader { |
|
48 |
|
|
49 |
/** |
|
50 |
* Reads all the DWG format versions |
|
51 |
* |
|
52 |
* @param dwgFile Represents the DWG file that we want to read |
|
53 |
* @param bb Memory mapped byte buffer of the whole DWG file |
|
54 |
* @throws IOException When DWG file path is wrong |
|
55 |
*/ |
|
56 |
public void read(DwgFile dwgFile, ByteBuffer bb) throws IOException; |
|
57 |
} |
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/readers/IDwgObjectReader.java | ||
---|---|---|
1 |
/* |
|
2 |
* Created on 25-ene-2007 by azabala |
|
3 |
* |
|
4 |
*/ |
|
5 |
package com.iver.cit.jdwglib.dwg.readers; |
|
6 |
|
|
7 |
import com.iver.cit.jdwglib.dwg.DwgObject; |
|
8 |
|
|
9 |
/** |
|
10 |
* Each dwg entity in the dwg section OBJECTS has a common part |
|
11 |
* and an specific part. |
|
12 |
* This interface has the responsability of reading the specif part. |
|
13 |
* |
|
14 |
* In previous versions of libDwg DwgObject has this responsability, but |
|
15 |
* with the inclusion of new versions of DWG (12, 13, 14, 2004) implementation |
|
16 |
* is function of the dwg entity and the version. |
|
17 |
* |
|
18 |
* |
|
19 |
* |
|
20 |
* @author azabala |
|
21 |
|
|
22 |
*/ |
|
23 |
public interface IDwgObjectReader { |
|
24 |
|
|
25 |
|
|
26 |
/** |
|
27 |
* Reads the specific part of the dwg object |
|
28 |
* */ |
|
29 |
public void readSpecificObj(int[] data, int offset, DwgObject dwgObj); |
|
30 |
/** |
|
31 |
* Sets the fileReader (wich has the responsability of read |
|
32 |
* head and tail of a dwg object) |
|
33 |
* */ |
|
34 |
public void setFileReader(IDwgFileReader headTailReader); |
|
35 |
} |
|
0 | 36 |
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/readers/DwgObjectReaderPool.java | ||
---|---|---|
1 |
/* |
|
2 |
* Created on 25-ene-2007 by azabala |
|
3 |
* |
|
4 |
*/ |
|
5 |
package com.iver.cit.jdwglib.dwg.readers; |
|
6 |
|
|
7 |
import java.util.HashMap; |
|
8 |
import java.util.Map; |
|
9 |
import com.iver.cit.jdwglib.dwg.DwgObject; |
|
10 |
|
|
11 |
/** |
|
12 |
* @author |
|
13 |
*/ |
|
14 |
public class DwgObjectReaderPool { |
|
15 |
|
|
16 |
private static final DwgObjectReaderPool _instance = |
|
17 |
new DwgObjectReaderPool(); |
|
18 |
|
|
19 |
private Map obj_readers; |
|
20 |
|
|
21 |
|
|
22 |
private DwgObjectReaderPool(){ |
|
23 |
obj_readers = new HashMap(); |
|
24 |
} |
|
25 |
|
|
26 |
public IDwgObjectReader get(DwgObject obj, String dwgVersion){ |
|
27 |
return (IDwgObjectReader) obj_readers. |
|
28 |
get(obj.getClass().getName() + dwgVersion); |
|
29 |
} |
|
30 |
|
|
31 |
public void put(DwgObject obj, String dwgVersion, IDwgObjectReader reader){ |
|
32 |
obj_readers.put(obj.getClass().getName()+dwgVersion, reader); |
|
33 |
} |
|
34 |
|
|
35 |
} |
|
0 | 36 |
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/readers/IDwgFileReader.java | ||
---|---|---|
1 |
/* jdwglib. Java Library for reading Dwg files. |
|
2 |
* |
|
3 |
* Author: Jose Morell Rama (jose.morell@gmail.com). |
|
4 |
* Port from the Pythoncad Dwg library by Art Haas. |
|
5 |
* |
|
6 |
* Copyright (C) 2005 Jose Morell, IVER TI S.A. and Generalitat Valenciana |
|
7 |
* |
|
8 |
* This program is free software; you can redistribute it and/or |
|
9 |
* modify it under the terms of the GNU General Public License |
|
10 |
* as published by the Free Software Foundation; either version 2 |
|
11 |
* of the License, or (at your option) any later version. |
|
12 |
* |
|
13 |
* This program is distributed in the hope that it will be useful, |
|
14 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
* GNU General Public License for more details. |
|
17 |
* |
|
18 |
* You should have received a copy of the GNU General Public License |
|
19 |
* along with this program; if not, write to the Free Software |
|
20 |
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,USA. |
|
21 |
* |
|
22 |
* For more information, contact: |
|
23 |
* |
|
24 |
* Jose Morell (jose.morell@gmail.com) |
|
25 |
* |
|
26 |
* or |
|
27 |
* |
|
28 |
* IVER TI S.A. |
|
29 |
* C/Salamanca, 50 |
|
30 |
* 46005 Valencia |
|
31 |
* Spain |
|
32 |
* +34 963163400 |
|
33 |
* dac@iver.es |
|
34 |
*/ |
|
35 |
package com.iver.cit.jdwglib.dwg.readers; |
|
36 |
|
|
37 |
import java.io.IOException; |
|
38 |
import java.nio.ByteBuffer; |
|
39 |
|
|
40 |
import com.iver.cit.jdwglib.dwg.DwgFile; |
|
41 |
import com.iver.cit.jdwglib.dwg.DwgObject; |
|
42 |
|
|
43 |
/** |
|
44 |
* The IDwgFileReader reads all the DWG format versions |
|
45 |
* |
|
46 |
* @author jmorell |
|
47 |
*/ |
|
48 |
public interface IDwgFileReader { |
|
49 |
|
|
50 |
/** |
|
51 |
* Reads all the DWG format versions |
|
52 |
* |
|
53 |
* @param dwgFile Represents the DWG file that we want to read |
|
54 |
* @param bb Memory mapped byte buffer of the whole DWG file |
|
55 |
* @throws IOException When DWG file path is wrong |
|
56 |
*/ |
|
57 |
public void read(DwgFile dwgFile, ByteBuffer bb) throws IOException; |
|
58 |
|
|
59 |
/** |
|
60 |
* Reads the header of a dwg object |
|
61 |
* */ |
|
62 |
public int readObjectHeader(int[] data, int offset, DwgObject dwgObject) throws Exception; |
|
63 |
|
|
64 |
/** |
|
65 |
* Reads the tailer of a dwg object. |
|
66 |
* */ |
|
67 |
public int readObjectTailer(int[] data, int offset, DwgObject dwgObject) throws Exception; |
|
68 |
} |
|
0 | 69 |
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/readers/DwgFileV14Reader.java | ||
---|---|---|
83 | 83 |
* |
84 | 84 |
* @author jmorell |
85 | 85 |
*/ |
86 |
public class DwgFileV14Reader implements DwgFileReader { |
|
86 |
public class DwgFileV14Reader implements IDwgFileReader {
|
|
87 | 87 |
|
88 | 88 |
protected DwgFile dwgFile; |
89 | 89 |
protected ByteBuffer bb; |
... | ... | |
648 | 648 |
bitPos = ((Integer)val.get(0)).intValue(); |
649 | 649 |
dwgFile.setHeader("CECOLOR", val.get(1)); |
650 | 650 |
|
651 |
//desilusion: creo que es el proximo handle que se asignar? a las nuevas |
|
652 |
//entidades que se creen |
|
653 | 651 |
val = DwgUtil.getHandle(intData, bitPos); |
654 | 652 |
bitPos = ((Integer)val.get(0)).intValue(); |
655 | 653 |
int intHandle = DwgUtil.handleToInt(val); |
... | ... | |
1662 | 1660 |
List extData = (List)val.get(1); |
1663 | 1661 |
obj.setExtendedData(extData); |
1664 | 1662 |
|
1665 |
/* TODO |
|
1666 |
* A) Dos cosas pendientes por hacer: |
|
1667 |
* 1) Implementar en el object factory todos los readers de dwg1314.py |
|
1668 |
* (igual hay objetos (types) no implementados |
|
1669 |
* |
|
1670 |
* 2) Buscar un mecanismo que independice el objeto DWG de su version |
|
1671 |
* (igual habr?a que hacer algo as?: |
|
1672 |
* interface DwgObjectReader{ |
|
1673 |
* public void readObjHeader(); |
|
1674 |
* public void readSpecificObj(); |
|
1675 |
* public void readTailer(); |
|
1676 |
* } |
|
1677 |
* Junto con una factoria de objectReaders: |
|
1678 |
* Map obj_readers = new HashMap(); |
|
1679 |
* obj_readers.put(DwgLine.class.getName()+"15", DwgLineReader15.class); |
|
1680 |
* obj_readers.put(DwgLine.class.getName()+"14", DwgLineReader14.class); |
|
1681 |
* DwgObjectReader get(DwgObject obj, String dwgVersion){ |
|
1682 |
* return obj_readers.get(obj.getClass().getName()+dwgVersion); |
|
1683 |
* |
|
1684 |
* } |
|
1685 |
* |
|
1686 |
* |
|
1687 |
* |
|
1688 |
* |
|
1689 |
* |
|
1690 |
* |
|
1663 |
/* TODO |
|
1691 | 1664 |
if _type < len(_objflags): |
1692 | 1665 |
_gflag, _reader = _objflags[_type] |
1693 |
if _gflag: |
|
1694 |
_bitpos, _val = dwgutil.test_bit(_data, _bitpos) |
|
1695 |
# print "graphic flag: " + str(_val) |
|
1696 |
# print "bitpos: %d" % _bitpos |
|
1697 |
if _val is True: |
|
1698 |
_bitpos, _gsize = dwgutil.get_raw_long(_data, _bitpos) |
|
1699 |
# print "graphic data bit size: %d" % _gsize |
|
1700 |
# print "bitpos: %d" % _bitpos |
|
1701 |
_bgsize = _gsize * 8 |
|
1702 |
_gidata = dwgutil.get_bits(_data, _bgsize, _bitpos) |
|
1703 |
_bitpos = _bitpos + _bgsize |
|
1704 |
_ent.setEntityData('graphic_data', _gidata) |
|
1666 |
|
|
1705 | 1667 |
_bitpos, _objbsize = dwgutil.get_raw_long(_data, _bitpos) |
1706 | 1668 |
# print "object data size in bits: %d" % _objbsize |
1707 | 1669 |
# print "bitpos: %d" % _bitpos |
... | ... | |
1722 | 1684 |
*/ |
1723 | 1685 |
|
1724 | 1686 |
|
1725 |
|
|
1726 |
|
|
1727 |
|
|
1728 | 1687 |
boolean gflag = false; |
1729 | 1688 |
gflag = obj.isGraphicsFlag(); |
1730 | 1689 |
if (gflag) { |
1731 |
//lee un flag boolean |
|
1732 |
v = DwgUtil.testBit(data, bitPos); |
|
1733 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
1734 |
boolean val = ((Boolean)v.get(1)).booleanValue(); |
|
1690 |
val = DwgUtil.testBit(intData, bitPos); |
|
1691 |
bitPos = ((Integer)val.get(0)).intValue(); |
|
1692 |
boolean hasGraphicsData = ((Boolean)val.get(1)).booleanValue(); |
|
1735 | 1693 |
//si hay imagen asociada, se lee por completo |
1736 |
if (val) {
|
|
1737 |
v = DwgUtil.getRawLong(data, bitPos);
|
|
1738 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
1739 |
size = ((Integer)v.get(1)).intValue(); |
|
1740 |
int bgSize = size*8;
|
|
1741 |
Integer giData = (Integer)DwgUtil.getBits(data, bgSize, bitPos);
|
|
1694 |
if (hasGraphicsData) {
|
|
1695 |
val = DwgUtil.getRawLong(intData, bitPos);
|
|
1696 |
bitPos = ((Integer)val.get(0)).intValue();
|
|
1697 |
size = ((Integer)val.get(1)).intValue();
|
|
1698 |
int bgSize = size * 8;
|
|
1699 |
Integer giData = (Integer)DwgUtil.getBits(intData, bgSize, bitPos);
|
|
1742 | 1700 |
obj.setGraphicData(giData.intValue()); |
1743 | 1701 |
bitPos = bitPos + bgSize; |
1744 | 1702 |
} |
1745 |
} |
|
1703 |
}//if gflag
|
|
1746 | 1704 |
|
1747 |
readSpecificObject(obj, data, bitPos);
|
|
1705 |
readSpecificObject(obj, intData, bitPos);
|
|
1748 | 1706 |
return obj; |
1749 | 1707 |
} catch (Exception e) { |
1750 | 1708 |
// logger.warn("Exception capturada. Probablemente se ha encontrado un" + |
... | ... | |
2085 | 2043 |
solution.add(extendedData); |
2086 | 2044 |
return solution; |
2087 | 2045 |
} |
2046 |
|
|
2047 |
/* (non-Javadoc) |
|
2048 |
* @see com.iver.cit.jdwglib.dwg.readers.IDwgFileReader#readObjectHeader(int[], int, com.iver.cit.jdwglib.dwg.DwgObject) |
|
2049 |
*/ |
|
2050 |
public int readObjectHeader(int[] data, int offset, DwgObject dwgObject) throws Exception { |
|
2051 |
int bitPos = offset; |
|
2052 |
Integer mode = (Integer)DwgUtil.getBits(data, 2, bitPos); |
|
2053 |
bitPos += 2; |
|
2054 |
dwgObject.setMode(mode.intValue()); |
|
2055 |
|
|
2056 |
List val = DwgUtil.getBitLong(data, bitPos); |
|
2057 |
bitPos = ((Integer)val.get(0)).intValue(); |
|
2058 |
int rnum = ((Integer)val.get(1)).intValue(); |
|
2059 |
dwgObject.setNumReactors(rnum); |
|
2060 |
//TODO hasta aqui igual que en Dwg 15 |
|
2061 |
|
|
2062 |
val = DwgUtil.testBit(data, bitPos); |
|
2063 |
bitPos = ((Integer)val.get(0)).intValue(); |
|
2064 |
boolean isLyrByLineType = ((Boolean)val.get(1)).booleanValue(); |
|
2065 |
//TODO En la 15 es un flag, no un boolean. REVISAR |
|
2066 |
dwgObject.setLyrByLineType(isLyrByLineType); |
|
2067 |
|
|
2068 |
val = DwgUtil.testBit(data, bitPos); |
|
2069 |
bitPos = ((Integer)val.get(0)).intValue(); |
|
2070 |
boolean noLinks = ((Boolean)val.get(1)).booleanValue(); |
|
2071 |
dwgObject.setNoLinks(noLinks); |
|
2072 |
|
|
2073 |
val = DwgUtil.getBitShort(data, bitPos); |
|
2074 |
bitPos = ((Integer)val.get(0)).intValue(); |
|
2075 |
int color = ((Integer)val.get(1)).intValue(); |
|
2076 |
dwgObject.setColor(color); |
|
2077 |
|
|
2078 |
val = DwgUtil.getBitDouble(data, bitPos); |
|
2079 |
bitPos = ((Integer)val.get(0)).intValue(); |
|
2080 |
float ltscale = ((Double)val.get(1)).floatValue(); |
|
2081 |
//TODO tampoco se setea en la 15 (en su lugar, un flag de ints) |
|
2082 |
val = DwgUtil.getBitShort(data, bitPos); |
|
2083 |
bitPos = ((Integer)val.get(0)).intValue(); |
|
2084 |
int invis = ((Integer)val.get(1)).intValue(); |
|
2085 |
|
|
2086 |
return bitPos; |
|
2087 |
} |
|
2088 |
|
|
2089 |
/* |
|
2090 |
* |
|
2091 |
* (non-Javadoc) |
|
2092 |
* @see com.iver.cit.jdwglib.dwg.readers.IDwgFileReader#readObjectTailer(int[], int, com.iver.cit.jdwglib.dwg.DwgObject) |
|
2093 |
*/ |
|
2094 |
public int readObjectTailer(int[] data, int offset, DwgObject dwgObject) throws Exception { |
|
2095 |
int bitPos = offset; |
|
2096 |
List val = null; |
|
2097 |
|
|
2098 |
/* |
|
2099 |
* Subentity ref handle. |
|
2100 |
* Esto se aplica sobre VERTEX, ATTRIB, SEQEND |
|
2101 |
* */ |
|
2102 |
if (dwgObject.getMode()==0x0) { |
|
2103 |
val = DwgUtil.getHandle(data, bitPos); |
|
2104 |
bitPos = ((Integer)val.get(0)).intValue(); |
|
2105 |
int intHandle = DwgUtil.handleToInt(val); |
|
2106 |
dwgObject.setSubEntityHandle(intHandle); |
|
2107 |
} |
|
2108 |
|
|
2109 |
/* |
|
2110 |
* Reactors handles |
|
2111 |
* TODO No se est?n usando para setear nada en DwgObject |
|
2112 |
* */ |
|
2113 |
for (int i=0; i<dwgObject.getNumReactors(); i++) { |
|
2114 |
val = DwgUtil.getHandle(data, bitPos); |
|
2115 |
bitPos = ((Integer)val.get(0)).intValue(); |
|
2116 |
int reactorHandle = DwgUtil.handleToInt(val); |
|
2117 |
} |
|
2118 |
|
|
2119 |
val = DwgUtil.getHandle(data, bitPos); |
|
2120 |
bitPos = ((Integer)val.get(0)).intValue(); |
|
2121 |
dwgObject.setXDicObjHandle(DwgUtil.handleToInt(val)); |
|
2122 |
|
|
2123 |
val = DwgUtil.getHandle(data, bitPos); |
|
2124 |
bitPos = ((Integer)val.get(0)).intValue(); |
|
2125 |
dwgObject.setLayerHandleCode(((Integer)val.get(1)).intValue()); |
|
2126 |
dwgObject.setLayerHandle(DwgUtil.handleToInt(val)); |
|
2127 |
// TODO Hasta aqui igual que en la 15 |
|
2128 |
if(! dwgObject.isLyrByLineType()){ |
|
2129 |
val = DwgUtil.getHandle(data, bitPos); |
|
2130 |
bitPos = ((Integer)val.get(0)).intValue(); |
|
2131 |
int handle = DwgUtil.handleToInt(val); |
|
2132 |
dwgObject.setLineType(handle); |
|
2133 |
} |
|
2134 |
String cadena = ""; |
|
2135 |
if(! dwgObject.isNoLinks()){ |
|
2136 |
val = DwgUtil.getHandle(data, bitPos); |
|
2137 |
bitPos = ((Integer) val.get(0)).intValue(); |
|
2138 |
ArrayList prevhv = new ArrayList(); |
|
2139 |
int[] prev = new int[val.size() - 1]; |
|
2140 |
cadena = "PREVIOUS HANDLE = "; |
|
2141 |
for (int i = 1; i < val.size(); i++) { |
|
2142 |
prev[i - 1] = ((Integer) val.get(i)).intValue(); |
|
2143 |
prevhv.add(new Integer(prev[i - 1])); |
|
2144 |
cadena += prev[i - 1] + " "; |
|
2145 |
}//for |
|
2146 |
System.out.println(cadena); |
|
2147 |
dwgObject.setPreviousHandleCode(prev[0]); |
|
2148 |
dwgObject.setPreviousHandle(DwgUtil.handleBinToHandleInt(prevhv)); |
|
2149 |
|
|
2150 |
val = DwgUtil.getHandle(data, bitPos); |
|
2151 |
bitPos = ((Integer) val.get(0)).intValue(); |
|
2152 |
ArrayList nexthv = new ArrayList(); |
|
2153 |
int[] next = new int[val.size() - 1]; |
|
2154 |
cadena = "NEXT HANDLE = "; |
|
2155 |
for (int i = 1; i < val.size(); i++) { |
|
2156 |
next[i - 1] = ((Integer) val.get(i)).intValue(); |
|
2157 |
nexthv.add(new Integer(next[i - 1])); |
|
2158 |
cadena += next[i - 1] + " "; |
|
2159 |
} |
|
2160 |
System.out.println(cadena); |
|
2161 |
dwgObject.setNextHandleCode(next[0]); |
|
2162 |
dwgObject.setNextHandle(DwgUtil.handleBinToHandleInt(nexthv)); |
|
2163 |
} |
|
2164 |
return bitPos; |
|
2165 |
} |
|
2088 | 2166 |
|
2089 | 2167 |
} |
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/readers/DwgFileV15Reader.java | ||
---|---|---|
77 | 77 |
* |
78 | 78 |
* @author jmorell |
79 | 79 |
*/ |
80 |
public class DwgFileV15Reader implements DwgFileReader { |
|
80 |
public class DwgFileV15Reader implements IDwgFileReader {
|
|
81 | 81 |
protected DwgFile dwgFile; |
82 |
|
|
82 | 83 |
protected ByteBuffer bb; |
83 |
|
|
84 |
|
|
84 | 85 |
/** |
85 | 86 |
* Reads the DWG version 15 format |
86 | 87 |
* |
87 |
* @param dwgFile Represents the DWG file that we want to read |
|
88 |
* @throws IOException When DWG file path is wrong |
|
88 |
* @param dwgFile |
|
89 |
* Represents the DWG file that we want to read |
|
90 |
* @throws IOException |
|
91 |
* When DWG file path is wrong |
|
89 | 92 |
*/ |
90 | 93 |
public void read(DwgFile dwgFile, ByteBuffer bb) throws IOException { |
91 | 94 |
this.dwgFile = dwgFile; |
92 | 95 |
this.bb = bb; |
93 |
|
|
96 |
|
|
94 | 97 |
readDwgSectionOffsets(); |
95 | 98 |
try { |
96 |
readDwgObjectOffsets();
|
|
99 |
readDwgObjectOffsets(); |
|
97 | 100 |
//readDwgClasses(bb); |
98 | 101 |
} catch (Exception e) { |
99 |
// System.out.println("Error leyendo offsets y classes. Posible corrupci�n en" + |
|
100 |
// "el DWG file ..."); |
|
102 |
// System.out.println("Error leyendo offsets y classes. Posible |
|
103 |
// corrupci�n en" + |
|
104 |
// "el DWG file ..."); |
|
101 | 105 |
} |
102 | 106 |
readDwgObjects(); |
103 | 107 |
} |
104 |
|
|
105 |
|
|
108 |
|
|
106 | 109 |
/** |
107 | 110 |
* It read the SECTIONS from the header of the DWG file |
108 |
* */
|
|
111 |
*/ |
|
109 | 112 |
protected void readDwgSectionOffsets() { |
110 | 113 |
bb.position(19); |
111 | 114 |
bb.order(ByteOrder.LITTLE_ENDIAN); |
112 | 115 |
short codePage = bb.getShort(); |
113 | 116 |
int count = bb.getInt(); |
114 |
for (int i=0; i<count; i++) {
|
|
117 |
for (int i = 0; i < count; i++) {
|
|
115 | 118 |
byte rec = bb.get(); |
116 | 119 |
int seek = bb.getInt(); |
117 | 120 |
int size = bb.getInt(); |
118 |
if (rec==0) {
|
|
121 |
if (rec == 0) {
|
|
119 | 122 |
dwgFile.addDwgSectionOffset("HEADERS", seek, size); |
120 |
} else if (rec==1) {
|
|
123 |
} else if (rec == 1) {
|
|
121 | 124 |
dwgFile.addDwgSectionOffset("CLASSES", seek, size); |
122 |
} else if (rec==2) {
|
|
125 |
} else if (rec == 2) {
|
|
123 | 126 |
dwgFile.addDwgSectionOffset("OBJECTS", seek, size); |
124 |
} else if (rec==3) {
|
|
127 |
} else if (rec == 3) {
|
|
125 | 128 |
dwgFile.addDwgSectionOffset("UNKNOWN", seek, size); |
126 |
} else if (rec==4) {
|
|
129 |
} else if (rec == 4) {
|
|
127 | 130 |
dwgFile.addDwgSectionOffset("R14DATA", seek, size); |
128 |
} else if (rec==5) {
|
|
131 |
} else if (rec == 5) {
|
|
129 | 132 |
dwgFile.addDwgSectionOffset("R14REC5", seek, size); |
130 | 133 |
} else { |
131 |
// System.out.println("ERROR: C�digo de n�mero de registro no soportado: " + rec); |
|
134 |
// System.out.println("ERROR: C�digo de n�mero de registro |
|
135 |
// no soportado: " + rec); |
|
132 | 136 |
} |
133 | 137 |
} |
134 | 138 |
} |
135 |
|
|
139 |
|
|
136 | 140 |
/** |
137 |
* OpenDWG spec says: |
|
138 |
* This section -object map- is a table which gives the location of |
|
139 |
* each object in the DWG file. |
|
140 |
* This table is broken into sections. It is basically a list of |
|
141 |
* handle/file loc pairs. It could be readed with this pseudocode: |
|
141 |
* OpenDWG spec says: This section -object map- is a table which gives the |
|
142 |
* location of each object in the DWG file. This table is broken into |
|
143 |
* sections. It is basically a list of handle/file loc pairs. It could be |
|
144 |
* readed with this pseudocode: |
|
142 | 145 |
* |
143 |
* Set lastHandle to all 0 and last loc to 0L. |
|
144 |
* Repeat until section size == 2 |
|
145 |
* section size = read short (in bigendian order) |
|
146 |
* Repeat until out of data for this section |
|
147 |
* offset of this handle form last handle as modular char |
|
148 |
* offset of location in file from last location as modular char |
|
149 |
* End repeat |
|
150 |
* End repeat |
|
151 |
* |
|
152 |
* */ |
|
146 |
* Set lastHandle to all 0 and last loc to 0L. Repeat until section size == |
|
147 |
* 2 section size = read short (in bigendian order) Repeat until out of data |
|
148 |
* for this section offset of this handle form last handle as modular char |
|
149 |
* offset of location in file from last location as modular char End repeat |
|
150 |
* End repeat |
|
151 |
* |
|
152 |
*/ |
|
153 | 153 |
protected void readDwgObjectOffsets() throws Exception { |
154 | 154 |
int offset = dwgFile.getDwgSectionOffset("OBJECTS"); |
155 | 155 |
bb.position(offset); |
156 | 156 |
while (true) { |
157 | 157 |
bb.order(ByteOrder.BIG_ENDIAN); |
158 | 158 |
/* |
159 |
* We read the size of the next section. |
|
160 |
* If size == 2, break (it is the last empty -except crc- section)
|
|
161 |
* */
|
|
159 |
* We read the size of the next section. If size == 2, break (it is
|
|
160 |
* the last empty -except crc- section) |
|
161 |
*/ |
|
162 | 162 |
short size = bb.getShort(); |
163 |
if (size==2)
|
|
163 |
if (size == 2)
|
|
164 | 164 |
break; |
165 | 165 |
bb.order(ByteOrder.LITTLE_ENDIAN); |
166 | 166 |
byte[] dataBytes = new byte[size]; |
167 |
for (int i=0; i<dataBytes.length; i++) {
|
|
167 |
for (int i = 0; i < dataBytes.length; i++) {
|
|
168 | 168 |
dataBytes[i] = bb.get(); |
169 | 169 |
} |
170 | 170 |
int[] data = DwgUtil.bytesToMachineBytes(dataBytes); |
171 |
int lastHandle=0;
|
|
172 |
int lastLoc=0;
|
|
173 |
int bitPos=0;
|
|
174 |
int bitMax= (size - 2) * 8; |
|
171 |
int lastHandle = 0;
|
|
172 |
int lastLoc = 0;
|
|
173 |
int bitPos = 0;
|
|
174 |
int bitMax = (size - 2) * 8;
|
|
175 | 175 |
while (bitPos < bitMax) { |
176 | 176 |
ArrayList v = DwgUtil.getModularChar(data, bitPos); |
177 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
178 |
lastHandle = lastHandle + ((Integer)v.get(1)).intValue(); |
|
177 |
bitPos = ((Integer) v.get(0)).intValue();
|
|
178 |
lastHandle = lastHandle + ((Integer) v.get(1)).intValue();
|
|
179 | 179 |
v = DwgUtil.getModularChar(data, bitPos); |
180 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
181 |
lastLoc = lastLoc + ((Integer)v.get(1)).intValue(); |
|
180 |
bitPos = ((Integer) v.get(0)).intValue();
|
|
181 |
lastLoc = lastLoc + ((Integer) v.get(1)).intValue();
|
|
182 | 182 |
dwgFile.addDwgObjectOffset(lastHandle, lastLoc); |
183 | 183 |
}//while |
184 | 184 |
}//while |
185 | 185 |
} |
186 |
|
|
186 |
|
|
187 | 187 |
/* |
188 | 188 |
* Unused. |
189 | 189 |
* |
190 |
* Dwg spec says that drawing entities (objects) that has not |
|
191 |
* a fixed type must read its type from this section
|
|
190 |
* Dwg spec says that drawing entities (objects) that has not a fixed type
|
|
191 |
* must read its type from this section |
|
192 | 192 |
* |
193 |
* |
|
194 |
* */
|
|
193 |
*
|
|
194 |
*/ |
|
195 | 195 |
protected void readDwgClasses() throws Exception { |
196 | 196 |
int offset = dwgFile.getDwgSectionOffset("CLASSES"); |
197 | 197 |
// Por ahora nos saltamos los 16 bytes de control |
198 |
bb.position(offset+16);
|
|
198 |
bb.position(offset + 16);
|
|
199 | 199 |
bb.order(ByteOrder.LITTLE_ENDIAN); |
200 | 200 |
int size = bb.getInt(); |
201 | 201 |
byte[] dataBytes = new byte[size]; |
202 |
for (int i=0; i<dataBytes.length; i++) {
|
|
202 |
for (int i = 0; i < dataBytes.length; i++) {
|
|
203 | 203 |
dataBytes[i] = bb.get(); |
204 | 204 |
} |
205 | 205 |
int[] data = DwgUtil.bytesToMachineBytes(dataBytes); |
206 |
for (int i=0; i<data.length; i++) {
|
|
207 |
data[i] = (byte)ByteUtils.getUnsigned((byte)data[i]);
|
|
206 |
for (int i = 0; i < data.length; i++) {
|
|
207 |
data[i] = (byte) ByteUtils.getUnsigned((byte) data[i]);
|
|
208 | 208 |
} |
209 |
bb.position(bb.position()+2+16);
|
|
209 |
bb.position(bb.position() + 2 + 16);
|
|
210 | 210 |
int maxbit = size * 8; |
211 | 211 |
int bitPos = 0; |
212 |
while ((bitPos+8) < maxbit) {
|
|
212 |
while ((bitPos + 8) < maxbit) {
|
|
213 | 213 |
ArrayList v = DwgUtil.getBitShort(data, bitPos); |
214 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
214 |
bitPos = ((Integer) v.get(0)).intValue();
|
|
215 | 215 |
v = DwgUtil.getBitShort(data, bitPos); |
216 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
216 |
bitPos = ((Integer) v.get(0)).intValue();
|
|
217 | 217 |
v = DwgUtil.getTextString(data, bitPos); |
218 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
218 |
bitPos = ((Integer) v.get(0)).intValue();
|
|
219 | 219 |
v = DwgUtil.getTextString(data, bitPos); |
220 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
220 |
bitPos = ((Integer) v.get(0)).intValue();
|
|
221 | 221 |
v = DwgUtil.getTextString(data, bitPos); |
222 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
222 |
bitPos = ((Integer) v.get(0)).intValue();
|
|
223 | 223 |
v = DwgUtil.testBit(data, bitPos); |
224 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
224 |
bitPos = ((Integer) v.get(0)).intValue();
|
|
225 | 225 |
v = DwgUtil.getBitShort(data, bitPos); |
226 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
226 |
bitPos = ((Integer) v.get(0)).intValue();
|
|
227 | 227 |
} |
228 | 228 |
} |
229 |
|
|
230 |
|
|
229 |
|
|
231 | 230 |
/** |
232 |
* Reads all the object referenced in the object map section of the |
|
233 |
* DWG file (using their object file obsets)
|
|
234 |
* */
|
|
231 |
* Reads all the object referenced in the object map section of the DWG file
|
|
232 |
* (using their object file obsets) |
|
233 |
*/ |
|
235 | 234 |
protected void readDwgObjects() { |
236 |
for (int i=0; i<dwgFile.getDwgObjectOffsets().size(); i++) { |
|
237 |
DwgObjectOffset doo = (DwgObjectOffset)dwgFile.getDwgObjectOffsets().get(i); |
|
235 |
for (int i = 0; i < dwgFile.getDwgObjectOffsets().size(); i++) { |
|
236 |
DwgObjectOffset doo = (DwgObjectOffset) dwgFile |
|
237 |
.getDwgObjectOffsets().get(i); |
|
238 | 238 |
DwgObject obj = readDwgObject(doo.getOffset(), i); |
239 | 239 |
/* |
240 |
azabala: las entidades DWG no implementadas no nos aportan nada |
|
241 |
(aunque la sigo leyendo por si aparecen problemas de puntero de fichero) |
|
242 |
No considero por tanto los DwgObject |
|
243 |
if (obj != null) { |
|
244 |
dwgFile.addDwgObject(obj); |
|
245 |
} |
|
246 |
*/ |
|
247 |
if(obj != null && obj.getClass() != DwgObject.class){ |
|
240 |
* azabala: las entidades DWG no implementadas no nos aportan nada |
|
241 |
* (aunque la sigo leyendo por si aparecen problemas de puntero de |
|
242 |
* fichero) No considero por tanto los DwgObject if (obj != null) { |
|
243 |
* dwgFile.addDwgObject(obj); } |
|
244 |
*/ |
|
245 |
if (obj != null && obj.getClass() != DwgObject.class) { |
|
248 | 246 |
dwgFile.addDwgObject(obj); |
249 | 247 |
} |
250 | 248 |
} |
251 | 249 |
} |
252 |
|
|
250 |
|
|
253 | 251 |
/** |
252 |
* Reads the header of an object in a DWG file Version 15 |
|
253 |
* |
|
254 |
* @param data |
|
255 |
* Array of unsigned bytes obtained from the DWG binary file |
|
256 |
* @param offset |
|
257 |
* The current bit offset where the value begins |
|
258 |
* @return int New offset |
|
259 |
* @throws Exception |
|
260 |
* If an unexpected bit value is found in the DWG file. Occurs |
|
261 |
* when we are looking for LwPolylines. |
|
262 |
*/ |
|
263 |
public int readObjectHeader(int[] data, int offset, DwgObject dwgObject) |
|
264 |
throws Exception { |
|
265 |
int bitPos = offset; |
|
266 |
Integer mode = (Integer) DwgUtil.getBits(data, 2, bitPos); |
|
267 |
bitPos = bitPos + 2; |
|
268 |
dwgObject.setMode(mode.intValue()); |
|
269 |
|
|
270 |
ArrayList v = DwgUtil.getBitLong(data, bitPos); |
|
271 |
bitPos = ((Integer) v.get(0)).intValue(); |
|
272 |
int rnum = ((Integer) v.get(1)).intValue(); |
|
273 |
dwgObject.setNumReactors(rnum); |
|
274 |
|
|
275 |
v = DwgUtil.testBit(data, bitPos); |
|
276 |
bitPos = ((Integer) v.get(0)).intValue(); |
|
277 |
boolean nolinks = ((Boolean) v.get(1)).booleanValue(); |
|
278 |
dwgObject.setNoLinks(nolinks); |
|
279 |
|
|
280 |
v = DwgUtil.getBitShort(data, bitPos); |
|
281 |
bitPos = ((Integer) v.get(0)).intValue(); |
|
282 |
int color = ((Integer) v.get(1)).intValue(); |
|
283 |
dwgObject.setColor(color); |
|
284 |
|
|
285 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
286 |
bitPos = ((Integer) v.get(0)).intValue(); |
|
287 |
float ltscale = ((Double) v.get(1)).floatValue(); |
|
288 |
|
|
289 |
Integer ltflag = (Integer) DwgUtil.getBits(data, 2, bitPos); |
|
290 |
bitPos = bitPos + 2; |
|
291 |
|
|
292 |
Integer psflag = (Integer) DwgUtil.getBits(data, 2, bitPos); |
|
293 |
bitPos = bitPos + 2; |
|
294 |
|
|
295 |
v = DwgUtil.getBitShort(data, bitPos); |
|
296 |
bitPos = ((Integer) v.get(0)).intValue(); |
|
297 |
int invis = ((Integer) v.get(1)).intValue(); |
|
298 |
|
|
299 |
v = DwgUtil.getRawChar(data, bitPos); |
|
300 |
bitPos = ((Integer) v.get(0)).intValue(); |
|
301 |
int weight = ((Integer) v.get(1)).intValue(); |
|
302 |
|
|
303 |
return bitPos; |
|
304 |
} |
|
305 |
|
|
306 |
/** |
|
307 |
* Reads the tail of an object in a DWG file Version 15 |
|
308 |
* |
|
309 |
* @param data |
|
310 |
* Array of bytes obtained from the DWG binary file |
|
311 |
* @param offset |
|
312 |
* Offset for this array of bytes |
|
313 |
* @return int New offset |
|
314 |
* @throws Exception |
|
315 |
* If an unexpected bit value is found in the DWG file. Occurs |
|
316 |
* when we are looking for LwPolylines. |
|
317 |
*/ |
|
318 |
public int readObjectTailer(int[] data, int offset, DwgObject dwgObject) |
|
319 |
throws Exception { |
|
320 |
int bitPos = offset; |
|
321 |
ArrayList v = null; |
|
322 |
String cadena = ""; |
|
323 |
/* |
|
324 |
* Subentity ref handle. Esto se aplica sobre VERTEX, ATTRIB, SEQEND |
|
325 |
*/ |
|
326 |
if (dwgObject.getMode() == 0x0) { |
|
327 |
v = DwgUtil.getHandle(data, bitPos); |
|
328 |
bitPos = ((Integer) v.get(0)).intValue(); |
|
329 |
int[] sh = new int[v.size() - 1]; |
|
330 |
for (int i = 1; i < v.size(); i++) { |
|
331 |
sh[i - 1] = ((Integer) v.get(i)).intValue(); |
|
332 |
} |
|
333 |
ArrayList shv = new ArrayList(); |
|
334 |
for (int i = 0; i < sh.length; i++) { |
|
335 |
shv.add(new Integer(sh[i])); |
|
336 |
} |
|
337 |
dwgObject.setSubEntityHandle(DwgUtil.handleBinToHandleInt(shv)); |
|
338 |
} |
|
339 |
|
|
340 |
/* |
|
341 |
* Reactors handles TODO No se est?n usando para setear nada en |
|
342 |
* DwgObject |
|
343 |
*/ |
|
344 |
for (int i = 0; i < dwgObject.getNumReactors(); i++) { |
|
345 |
v = DwgUtil.getHandle(data, bitPos); |
|
346 |
bitPos = ((Integer) v.get(0)).intValue(); |
|
347 |
int[] handle = new int[v.size() - 1]; |
|
348 |
for (int j = 1; j < v.size(); j++) { |
|
349 |
handle[j - 1] = ((Integer) v.get(j)).intValue(); |
|
350 |
} |
|
351 |
} |
|
352 |
|
|
353 |
/* |
|
354 |
* XDICOBJHANDLE |
|
355 |
*/ |
|
356 |
v = DwgUtil.getHandle(data, bitPos); |
|
357 |
bitPos = ((Integer) v.get(0)).intValue(); |
|
358 |
int[] xh = new int[v.size() - 1]; |
|
359 |
for (int i = 1; i < v.size(); i++) { |
|
360 |
xh[i - 1] = ((Integer) v.get(i)).intValue(); |
|
361 |
} |
|
362 |
ArrayList xhv = new ArrayList(); |
|
363 |
for (int i = 0; i < xh.length; i++) { |
|
364 |
xhv.add(new Integer(xh[i])); |
|
365 |
} |
|
366 |
dwgObject.setXDicObjHandle(DwgUtil.handleBinToHandleInt(xhv)); |
|
367 |
|
|
368 |
/* |
|
369 |
* Layer Handle code |
|
370 |
*/ |
|
371 |
v = DwgUtil.getHandle(data, bitPos); |
|
372 |
bitPos = ((Integer) v.get(0)).intValue(); |
|
373 |
/* |
|
374 |
* v ArrayList has the next structure: v[0] -> offset of the DWG file |
|
375 |
* v[1] -> code of the layer handle v[2] -> counter (number of bytes) |
|
376 |
* v[3] v[4] ... |
|
377 |
*/ |
|
378 |
int[] lh = new int[v.size() - 1]; |
|
379 |
cadena = "LAYER HANDLE = "; |
|
380 |
for (int i = 1; i < v.size(); i++) { |
|
381 |
lh[i - 1] = ((Integer) v.get(i)).intValue(); |
|
382 |
cadena += lh[i - 1] + " "; |
|
383 |
} |
|
384 |
|
|
385 |
dwgObject.setLayerHandleCode(lh[0]); |
|
386 |
|
|
387 |
ArrayList lhv = new ArrayList(); |
|
388 |
for (int i = 0; i < lh.length; i++) { |
|
389 |
lhv.add(new Integer(lh[i])); |
|
390 |
} |
|
391 |
int handle = DwgUtil.handleBinToHandleInt(lhv); |
|
392 |
dwgObject.setLayerHandle(handle); |
|
393 |
System.out.println(cadena + " ==> " + handle); |
|
394 |
|
|
395 |
if (!dwgObject.isNoLinks()) { |
|
396 |
v = DwgUtil.getHandle(data, bitPos); |
|
397 |
bitPos = ((Integer) v.get(0)).intValue(); |
|
398 |
int[] prev = new int[v.size() - 1]; |
|
399 |
ArrayList prevhv = new ArrayList(); |
|
400 |
cadena = "PREVIOUS HANDLE = "; |
|
401 |
for (int i = 1; i < v.size(); i++) { |
|
402 |
prev[i - 1] = ((Integer) v.get(i)).intValue(); |
|
403 |
prevhv.add(new Integer(prev[i - 1])); |
|
404 |
cadena += prev[i - 1] + " "; |
|
405 |
} |
|
406 |
System.out.println(cadena); |
|
407 |
dwgObject.setPreviousHandleCode(prev[0]); |
|
408 |
dwgObject.setPreviousHandle(DwgUtil.handleBinToHandleInt(prevhv)); |
|
409 |
ArrayList nexthv = new ArrayList(); |
|
410 |
v = DwgUtil.getHandle(data, bitPos); |
|
411 |
bitPos = ((Integer) v.get(0)).intValue(); |
|
412 |
int[] next = new int[v.size() - 1]; |
|
413 |
cadena = "NEXT HANDLE = "; |
|
414 |
for (int i = 1; i < v.size(); i++) { |
|
415 |
next[i - 1] = ((Integer) v.get(i)).intValue(); |
|
416 |
nexthv.add(new Integer(next[i - 1])); |
|
417 |
cadena += next[i - 1] + " "; |
|
418 |
} |
|
419 |
System.out.println(cadena); |
|
420 |
dwgObject.setNextHandleCode(next[0]); |
|
421 |
dwgObject.setNextHandle(DwgUtil.handleBinToHandleInt(nexthv)); |
|
422 |
} |
|
423 |
|
|
424 |
if (dwgObject.getLinetypeFlags() == 0x3) { |
|
425 |
v = DwgUtil.getHandle(data, bitPos); |
|
426 |
bitPos = ((Integer) v.get(0)).intValue(); |
|
427 |
int[] lth = new int[v.size() - 1]; |
|
428 |
for (int i = 1; i < v.size(); i++) { |
|
429 |
lth[i - 1] = ((Integer) v.get(i)).intValue(); |
|
430 |
} |
|
431 |
//obj.setLinetype(lth); |
|
432 |
} |
|
433 |
|
|
434 |
if (dwgObject.getPlotstyleFlags() == 0x3) { |
|
435 |
v = DwgUtil.getHandle(data, bitPos); |
|
436 |
bitPos = ((Integer) v.get(0)).intValue(); |
|
437 |
int[] pth = new int[v.size() - 1]; |
|
438 |
for (int i = 1; i < v.size(); i++) { |
|
439 |
pth[i - 1] = ((Integer) v.get(i)).intValue(); |
|
440 |
} |
|
441 |
//obj.setPlotstyle(pth); |
|
442 |
} |
|
443 |
return bitPos; |
|
444 |
} |
|
445 |
|
|
446 |
/** |
|
254 | 447 |
* Return a dwg object from its index in the dwg file |
255 |
* @param index of the requested dwg object in the dwg file |
|
256 | 448 |
* |
257 |
* */ |
|
258 |
public DwgObject getDwgObjectByIndex(int index){ |
|
259 |
DwgObjectOffset doo = (DwgObjectOffset)dwgFile.getDwgObjectOffsets().get(index); |
|
449 |
* @param index |
|
450 |
* of the requested dwg object in the dwg file |
|
451 |
* |
|
452 |
*/ |
|
453 |
public DwgObject getDwgObjectByIndex(int index) { |
|
454 |
DwgObjectOffset doo = (DwgObjectOffset) dwgFile.getDwgObjectOffsets() |
|
455 |
.get(index); |
|
260 | 456 |
return readDwgObject(doo.getOffset(), index); |
261 | 457 |
} |
262 |
|
|
458 |
|
|
263 | 459 |
/** |
264 | 460 |
* Reads a dwg drawing entity (dwg object) given its offset in the file |
265 |
* */ |
|
266 |
|
|
267 |
|
|
461 |
*/ |
|
462 |
|
|
268 | 463 |
protected DwgObject readDwgObject(int offset, int index) { |
269 |
try {
|
|
464 |
try {
|
|
270 | 465 |
bb.position(offset); |
271 | 466 |
int size = DwgUtil.getModularShort(bb); |
272 |
|
|
467 |
|
|
273 | 468 |
bb.order(ByteOrder.LITTLE_ENDIAN); |
274 | 469 |
byte[] dataBytes = new byte[size]; |
275 | 470 |
String[] dataMachValString = new String[size]; |
276 | 471 |
int[] data = new int[size]; |
277 |
for (int i=0; i < size; i++) {
|
|
472 |
for (int i = 0; i < size; i++) {
|
|
278 | 473 |
dataBytes[i] = bb.get(); |
279 |
dataMachValString[i] = HexUtil.bytesToHex(new byte[]{dataBytes[i]}); |
|
280 |
Integer dataMachValShort = Integer.decode("0x" + dataMachValString[i]); |
|
474 |
dataMachValString[i] = HexUtil |
|
475 |
.bytesToHex(new byte[] { dataBytes[i] }); |
|
476 |
Integer dataMachValShort = Integer.decode("0x" |
|
477 |
+ dataMachValString[i]); |
|
281 | 478 |
data[i] = dataMachValShort.byteValue(); |
282 |
data[i] = ByteUtils.getUnsigned((byte)data[i]); |
|
479 |
data[i] = ByteUtils.getUnsigned((byte) data[i]);
|
|
283 | 480 |
} |
284 |
|
|
285 |
|
|
481 |
|
|
286 | 482 |
int bitPos = 0; |
287 | 483 |
ArrayList v = DwgUtil.getBitShort(data, bitPos); |
288 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
289 |
int type = ((Integer)v.get(1)).intValue(); |
|
290 |
|
|
291 |
DwgObject obj = DwgObjectFactory. |
|
292 |
getInstance(). |
|
293 |
create(type, index); |
|
294 |
|
|
295 |
|
|
296 |
v = DwgUtil.getRawLong(data, bitPos); |
|
297 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
298 |
int objBSize = ((Integer)v.get(1)).intValue(); |
|
299 |
obj.setSizeInBits(objBSize); |
|
300 |
|
|
301 |
|
|
302 |
ArrayList entityHandle = new ArrayList(); |
|
303 |
v = DwgUtil.getHandle(data, bitPos); |
|
304 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
305 |
for (int i=1;i<v.size();i++) { |
|
306 |
entityHandle.add(v.get(i)); |
|
307 |
} |
|
308 |
obj.setHandle(DwgUtil. |
|
309 |
handleBinToHandleInt(entityHandle)); |
|
310 |
|
|
311 |
v = DwgUtil.readExtendedData(data, bitPos); |
|
312 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
313 |
ArrayList extData = (ArrayList)v.get(1); |
|
314 |
obj.setExtendedData(extData); |
|
315 |
|
|
316 |
|
|
317 |
boolean gflag = false; |
|
318 |
gflag = obj.isGraphicsFlag(); |
|
319 |
if (gflag) { |
|
320 |
//lee un flag boolean |
|
321 |
v = DwgUtil.testBit(data, bitPos); |
|
322 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
323 |
boolean val = ((Boolean)v.get(1)).booleanValue(); |
|
324 |
//si hay imagen asociada, se lee por completo |
|
325 |
if (val) { |
|
326 |
v = DwgUtil.getRawLong(data, bitPos); |
|
327 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
328 |
size = ((Integer)v.get(1)).intValue(); |
|
329 |
int bgSize = size*8; |
|
330 |
Integer giData = (Integer)DwgUtil.getBits(data, bgSize, bitPos); |
|
484 |
bitPos = ((Integer) v.get(0)).intValue(); |
|
485 |
int type = ((Integer) v.get(1)).intValue(); |
|
486 |
|
|
487 |
DwgObject obj = DwgObjectFactory.getInstance().create(type, index); |
|
488 |
|
|
489 |
v = DwgUtil.getRawLong(data, bitPos); |
|
490 |
bitPos = ((Integer) v.get(0)).intValue(); |
|
491 |
int objBSize = ((Integer) v.get(1)).intValue(); |
|
492 |
obj.setSizeInBits(objBSize); |
|
493 |
|
|
494 |
ArrayList entityHandle = new ArrayList(); |
|
495 |
v = DwgUtil.getHandle(data, bitPos); |
|
496 |
bitPos = ((Integer) v.get(0)).intValue(); |
|
497 |
for (int i = 1; i < v.size(); i++) { |
|
498 |
entityHandle.add(v.get(i)); |
|
499 |
} |
|
500 |
obj.setHandle(DwgUtil.handleBinToHandleInt(entityHandle)); |
|
501 |
|
|
502 |
v = DwgUtil.readExtendedData(data, bitPos); |
|
503 |
bitPos = ((Integer) v.get(0)).intValue(); |
|
504 |
ArrayList extData = (ArrayList) v.get(1); |
|
505 |
obj.setExtendedData(extData); |
|
506 |
|
|
507 |
boolean gflag = false; |
|
508 |
gflag = obj.isGraphicsFlag(); |
|
509 |
if (gflag) { |
|
510 |
//lee un flag boolean |
|
511 |
v = DwgUtil.testBit(data, bitPos); |
|
512 |
bitPos = ((Integer) v.get(0)).intValue(); |
|
513 |
boolean val = ((Boolean) v.get(1)).booleanValue(); |
|
514 |
//si hay imagen asociada, se lee por completo |
|
515 |
if (val) { |
|
516 |
v = DwgUtil.getRawLong(data, bitPos); |
|
517 |
bitPos = ((Integer) v.get(0)).intValue(); |
|
518 |
size = ((Integer) v.get(1)).intValue(); |
|
519 |
int bgSize = size * 8; |
|
520 |
Integer giData = (Integer) DwgUtil.getBits(data, bgSize, |
|
521 |
bitPos); |
|
331 | 522 |
obj.setGraphicData(giData.intValue()); |
332 | 523 |
bitPos = bitPos + bgSize; |
333 |
}
|
|
334 |
}
|
|
335 |
|
|
524 |
}
|
|
525 |
}
|
|
526 |
|
|
336 | 527 |
readSpecificObject(obj, data, bitPos); |
337 |
return obj; |
|
338 |
} catch (Exception e) { |
|
339 |
// System.out.println("Exception capturada. Probablemente se ha encontrado un" + |
|
340 |
// "objeto con type non fixed"); |
|
341 |
//e.printStackTrace(); |
|
342 |
return null; |
|
343 |
} |
|
528 |
return obj; |
|
529 |
} catch (Exception e) { |
|
530 |
// System.out.println("Exception capturada. Probablemente se ha |
|
531 |
// encontrado un" + |
|
532 |
// "objeto con type non fixed"); |
|
533 |
//e.printStackTrace(); |
|
534 |
return null; |
|
535 |
} |
|
344 | 536 |
} |
345 |
|
|
537 |
|
|
346 | 538 |
/* |
347 |
* TODO Esto est? pesimamente dise?ado. |
|
348 |
* Cada objeto DwgObject debe tener un metodo
|
|
349 |
* readSpecificObject(data,bitPos)
|
|
350 |
*
|
|
351 |
* */
|
|
352 |
protected void readSpecificObject(DwgObject obj, int[] data, int bitPos) throws Exception {
|
|
353 |
if (obj.getType()==0x11) {
|
|
354 |
((DwgArc)obj).readDwgArcV15(data, bitPos); |
|
355 |
} else if (obj.getType()==0x12) {
|
|
356 |
((DwgCircle)obj).readDwgCircleV15(data, bitPos); |
|
357 |
} else if (obj.getType()==0x13) {
|
|
358 |
((DwgLine)obj).readDwgLineV15(data, bitPos); |
|
359 |
} else if (obj.getType()==0x1B) {
|
|
360 |
((DwgPoint)obj).readDwgPointV15(data, bitPos); |
|
361 |
} else if (obj.getType()==0x0F) {
|
|
362 |
((DwgPolyline2D)obj).readDwgPolyline2DV15(data, bitPos); |
|
363 |
} else if (obj.getType()==0x10) {
|
|
364 |
((DwgPolyline3D)obj).readDwgPolyline3DV15(data, bitPos); |
|
365 |
} else if (obj.getType()==0x0A) {
|
|
366 |
((DwgVertex2D)obj).readDwgVertex2DV15(data, bitPos); |
|
367 |
} else if (obj.getType()==0x0B) {
|
|
368 |
((DwgVertex3D)obj).readDwgVertex3DV15(data, bitPos); |
|
369 |
} else if (obj.getType()==0x6) {
|
|
370 |
((DwgSeqend)obj).readDwgSeqendV15(data, bitPos); |
|
371 |
} else if (obj.getType()==0x1) {
|
|
372 |
((DwgText)obj).readDwgTextV15(data, bitPos); |
|
373 |
} else if (obj.getType()==0x2) {
|
|
374 |
((DwgAttrib)obj).readDwgAttribV15(data, bitPos); |
|
375 |
} else if (obj.getType()==0x3) {
|
|
376 |
((DwgAttdef)obj).readDwgAttdefV15(data, bitPos); |
|
377 |
} else if (obj.getType()==0x4) {
|
|
378 |
((DwgBlock)obj).readDwgBlockV15(data, bitPos); |
|
379 |
} else if (obj.getType()==0x5) {
|
|
380 |
((DwgEndblk)obj).readDwgEndblkV15(data, bitPos); |
|
381 |
} else if (obj.getType()==0x30) {
|
|
382 |
((DwgBlockControl)obj).readDwgBlockControlV15(data, bitPos); |
|
383 |
} else if (obj.getType()==0x31) {
|
|
384 |
((DwgBlockHeader)obj).readDwgBlockHeaderV15(data, bitPos); |
|
385 |
} else if (obj.getType()==0x32) {
|
|
386 |
((DwgLayerControl)obj).readDwgLayerControlV15(data, bitPos); |
|
387 |
} else if (obj.getType()==0x33) {
|
|
388 |
((DwgLayer)obj).readDwgLayerV15(data, bitPos); |
|
389 |
} else if (obj.getType()==0x7) {
|
|
390 |
((DwgInsert)obj).readDwgInsertV15(data, bitPos); |
|
391 |
} else if (obj.getType()==0x2C) {
|
|
392 |
((DwgMText)obj).readDwgMTextV15(data, bitPos); |
|
393 |
} else if (obj.getType()==0x1F) {
|
|
394 |
((DwgSolid)obj).readDwgSolidV15(data, bitPos); |
|
395 |
} else if (obj.getType()==0x23) {
|
|
396 |
((DwgEllipse)obj).readDwgEllipseV15(data, bitPos); |
|
397 |
} else if (obj.getType()==0x24) {
|
|
398 |
((DwgSpline)obj).readDwgSplineV15(data, bitPos); |
|
399 |
} else if (obj.getType()==0x14) {
|
|
539 |
* TODO Esto est? pesimamente dise?ado. Cada objeto DwgObject debe tener un
|
|
540 |
* metodo readSpecificObject(data,bitPos)
|
|
541 |
*
|
|
542 |
*/
|
|
543 |
protected void readSpecificObject(DwgObject obj, int[] data, int bitPos)
|
|
544 |
throws Exception {
|
|
545 |
if (obj.getType() == 0x11) {
|
|
546 |
((DwgArc) obj).readDwgArcV15(data, bitPos);
|
|
547 |
} else if (obj.getType() == 0x12) {
|
|
548 |
((DwgCircle) obj).readDwgCircleV15(data, bitPos);
|
|
549 |
} else if (obj.getType() == 0x13) {
|
|
550 |
((DwgLine) obj).readDwgLineV15(data, bitPos);
|
|
551 |
} else if (obj.getType() == 0x1B) {
|
|
552 |
((DwgPoint) obj).readDwgPointV15(data, bitPos);
|
|
553 |
} else if (obj.getType() == 0x0F) {
|
|
554 |
((DwgPolyline2D) obj).readDwgPolyline2DV15(data, bitPos);
|
|
555 |
} else if (obj.getType() == 0x10) {
|
|
556 |
((DwgPolyline3D) obj).readDwgPolyline3DV15(data, bitPos);
|
|
557 |
} else if (obj.getType() == 0x0A) {
|
|
558 |
((DwgVertex2D) obj).readDwgVertex2DV15(data, bitPos);
|
|
559 |
} else if (obj.getType() == 0x0B) {
|
|
560 |
((DwgVertex3D) obj).readDwgVertex3DV15(data, bitPos);
|
|
561 |
} else if (obj.getType() == 0x6) {
|
|
562 |
((DwgSeqend) obj).readDwgSeqendV15(data, bitPos);
|
|
563 |
} else if (obj.getType() == 0x1) {
|
|
564 |
((DwgText) obj).readDwgTextV15(data, bitPos);
|
|
565 |
} else if (obj.getType() == 0x2) {
|
|
566 |
((DwgAttrib) obj).readDwgAttribV15(data, bitPos);
|
|
567 |
} else if (obj.getType() == 0x3) {
|
|
568 |
((DwgAttdef) obj).readDwgAttdefV15(data, bitPos);
|
|
569 |
} else if (obj.getType() == 0x4) {
|
|
570 |
((DwgBlock) obj).readDwgBlockV15(data, bitPos);
|
|
571 |
} else if (obj.getType() == 0x5) {
|
|
572 |
((DwgEndblk) obj).readDwgEndblkV15(data, bitPos);
|
|
573 |
} else if (obj.getType() == 0x30) {
|
|
574 |
((DwgBlockControl) obj).readDwgBlockControlV15(data, bitPos);
|
|
575 |
} else if (obj.getType() == 0x31) {
|
|
576 |
((DwgBlockHeader) obj).readDwgBlockHeaderV15(data, bitPos);
|
|
577 |
} else if (obj.getType() == 0x32) {
|
|
578 |
((DwgLayerControl) obj).readDwgLayerControlV15(data, bitPos);
|
|
579 |
} else if (obj.getType() == 0x33) {
|
|
580 |
((DwgLayer) obj).readDwgLayerV15(data, bitPos);
|
|
581 |
} else if (obj.getType() == 0x7) {
|
|
582 |
((DwgInsert) obj).readDwgInsertV15(data, bitPos);
|
|
583 |
} else if (obj.getType() == 0x2C) {
|
|
584 |
((DwgMText) obj).readDwgMTextV15(data, bitPos);
|
|
585 |
} else if (obj.getType() == 0x1F) {
|
|
586 |
((DwgSolid) obj).readDwgSolidV15(data, bitPos);
|
|
587 |
} else if (obj.getType() == 0x23) {
|
|
588 |
((DwgEllipse) obj).readDwgEllipseV15(data, bitPos);
|
|
589 |
} else if (obj.getType() == 0x24) {
|
|
590 |
((DwgSpline) obj).readDwgSplineV15(data, bitPos);
|
|
591 |
} else if (obj.getType() == 0x14) {
|
|
400 | 592 |
//System.out.println("... detectado un dim del tipo 0x14 ..."); |
401 |
} else if (obj.getType()==0x15) {
|
|
593 |
} else if (obj.getType() == 0x15) {
|
|
402 | 594 |
//System.out.println("... detectado un dim del tipo 0x15 ..."); |
403 |
//((DwgLinearDimension)obj).readDwgLinearDimensionV15(data, bitPos); |
|
404 |
} else if (obj.getType()==0x16) { |
|
595 |
//((DwgLinearDimension)obj).readDwgLinearDimensionV15(data, |
|
596 |
// bitPos); |
|
597 |
} else if (obj.getType() == 0x16) { |
|
405 | 598 |
//System.out.println("... detectado un dim del tipo 0x16 ..."); |
406 |
} else if (obj.getType()==0x17) {
|
|
599 |
} else if (obj.getType() == 0x17) {
|
|
407 | 600 |
//System.out.println("... detectado un dim del tipo 0x17 ..."); |
408 |
} else if (obj.getType()==0x18) {
|
|
601 |
} else if (obj.getType() == 0x18) {
|
|
409 | 602 |
//System.out.println("... detectado un dim del tipo 0x18 ..."); |
410 |
} else if (obj.getType()==0x19) {
|
|
603 |
} else if (obj.getType() == 0x19) {
|
|
411 | 604 |
//System.out.println("... detectado un dim del tipo 0x19 ..."); |
412 |
} else if (obj.getType()==0x1A) {
|
|
605 |
} else if (obj.getType() == 0x1A) {
|
|
413 | 606 |
//System.out.println("... detectado un dim del tipo 0x1A ..."); |
414 |
} else if (obj.getType()==0x4D) {
|
|
415 |
((DwgLwPolyline)obj).readDwgLwPolylineV15(data, bitPos); |
|
416 |
} else if (obj.getType()==0x4E) {
|
|
417 |
((DwgLwPolyline)obj).readDwgLwPolylineV15(data, bitPos); |
|
418 |
} else if (obj.getType()==0x4F) {
|
|
419 |
((DwgLwPolyline)obj).readDwgLwPolylineV15(data, bitPos); |
|
420 |
} else if (obj.getType()==0x50) {
|
|
421 |
((DwgLwPolyline)obj).readDwgLwPolylineV15(data, bitPos); |
|
422 |
} else if (obj.getType()==0x51) {
|
|
423 |
((DwgLwPolyline)obj).readDwgLwPolylineV15(data, bitPos); |
|
424 |
} else if (obj.getType()==0x52) {
|
|
425 |
((DwgLwPolyline)obj).readDwgLwPolylineV15(data, bitPos); |
|
426 |
} else if (obj.getType()==0x53) {
|
|
427 |
((DwgLwPolyline)obj).readDwgLwPolylineV15(data, bitPos); |
|
607 |
} else if (obj.getType() == 0x4D) {
|
|
608 |
((DwgLwPolyline) obj).readDwgLwPolylineV15(data, bitPos);
|
|
609 |
} else if (obj.getType() == 0x4E) {
|
|
610 |
((DwgLwPolyline) obj).readDwgLwPolylineV15(data, bitPos);
|
|
611 |
} else if (obj.getType() == 0x4F) {
|
|
612 |
((DwgLwPolyline) obj).readDwgLwPolylineV15(data, bitPos);
|
|
613 |
} else if (obj.getType() == 0x50) {
|
|
614 |
((DwgLwPolyline) obj).readDwgLwPolylineV15(data, bitPos);
|
|
615 |
} else if (obj.getType() == 0x51) {
|
|
616 |
((DwgLwPolyline) obj).readDwgLwPolylineV15(data, bitPos);
|
|
617 |
} else if (obj.getType() == 0x52) {
|
|
618 |
((DwgLwPolyline) obj).readDwgLwPolylineV15(data, bitPos);
|
|
619 |
} else if (obj.getType() == 0x53) {
|
|
620 |
((DwgLwPolyline) obj).readDwgLwPolylineV15(data, bitPos);
|
|
428 | 621 |
} else { |
429 |
//System.out.println("Tipo de objeto pendiente de implementaci�n"); |
|
622 |
//System.out.println("Tipo de objeto pendiente de |
|
623 |
// implementaci�n"); |
|
430 | 624 |
} |
431 | 625 |
} |
432 |
} |
|
626 |
} |
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/readers/objreaders/v1314/DwgVertex3DReader1314.java | ||
---|---|---|
1 |
/* |
|
2 |
* Created on 25-ene-2007 by azabala |
|
3 |
* |
|
4 |
*/ |
|
5 |
package com.iver.cit.jdwglib.dwg.readers.objreaders.v1314; |
|
6 |
|
|
7 |
import com.iver.cit.jdwglib.dwg.DwgObject; |
|
8 |
import com.iver.cit.jdwglib.dwg.readers.IDwgFileReader; |
|
9 |
import com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader; |
|
10 |
|
|
11 |
/** |
|
12 |
* @author alzabord |
|
13 |
* |
|
14 |
* TODO To change the template for this generated type comment go to |
|
15 |
* Window - Preferences - Java - Code Style - Code Templates |
|
16 |
*/ |
|
17 |
public class DwgVertex3DReader1314 implements IDwgObjectReader{ |
|
18 |
|
|
19 |
/* (non-Javadoc) |
|
20 |
* @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#readSpecificObj(int[], int, com.iver.cit.jdwglib.dwg.DwgObject) |
|
21 |
*/ |
|
22 |
public void readSpecificObj(int[] data, int offset, DwgObject dwgObj) { |
|
23 |
// TODO Auto-generated method stub |
|
24 |
|
|
25 |
} |
|
26 |
|
|
27 |
/* (non-Javadoc) |
|
28 |
* @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#setFileReader(com.iver.cit.jdwglib.dwg.readers.IDwgFileReader) |
|
29 |
*/ |
|
30 |
public void setFileReader(IDwgFileReader headTailReader) { |
|
31 |
// TODO Auto-generated method stub |
|
32 |
|
|
33 |
} |
|
34 |
|
|
35 |
} |
|
0 | 36 |
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/readers/objreaders/v1314/DwgInsertReader1314.java | ||
---|---|---|
1 |
/* |
|
2 |
* Created on 25-ene-2007 by azabala |
|
3 |
* |
|
4 |
*/ |
|
5 |
package com.iver.cit.jdwglib.dwg.readers.objreaders.v1314; |
|
6 |
|
|
7 |
import com.iver.cit.jdwglib.dwg.DwgObject; |
|
8 |
import com.iver.cit.jdwglib.dwg.readers.IDwgFileReader; |
|
9 |
import com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader; |
|
10 |
|
|
11 |
/** |
|
12 |
* @author alzabord |
|
13 |
* |
|
14 |
* TODO To change the template for this generated type comment go to |
|
15 |
* Window - Preferences - Java - Code Style - Code Templates |
|
16 |
*/ |
|
17 |
public class DwgInsertReader1314 implements IDwgObjectReader{ |
|
18 |
|
|
19 |
/* (non-Javadoc) |
|
20 |
* @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#readSpecificObj(int[], int, com.iver.cit.jdwglib.dwg.DwgObject) |
|
21 |
*/ |
|
22 |
public void readSpecificObj(int[] data, int offset, DwgObject dwgObj) { |
|
23 |
// TODO Auto-generated method stub |
|
24 |
|
|
25 |
} |
|
26 |
|
|
27 |
/* (non-Javadoc) |
|
28 |
* @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#setFileReader(com.iver.cit.jdwglib.dwg.readers.IDwgFileReader) |
|
29 |
*/ |
|
30 |
public void setFileReader(IDwgFileReader headTailReader) { |
|
31 |
// TODO Auto-generated method stub |
|
32 |
|
|
33 |
} |
|
34 |
|
|
35 |
} |
|
0 | 36 |
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/readers/objreaders/v1314/DwgArcReader1314.java | ||
---|---|---|
1 |
/* |
|
2 |
* Created on 25-ene-2007 by azabala |
|
3 |
* |
|
4 |
*/ |
|
5 |
package com.iver.cit.jdwglib.dwg.readers.objreaders.v1314; |
|
6 |
|
|
7 |
import com.iver.cit.jdwglib.dwg.DwgObject; |
|
8 |
import com.iver.cit.jdwglib.dwg.readers.IDwgFileReader; |
|
9 |
import com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader; |
|
10 |
|
|
11 |
/** |
|
12 |
* @author alzabord |
|
13 |
* |
|
14 |
* TODO To change the template for this generated type comment go to |
|
15 |
* Window - Preferences - Java - Code Style - Code Templates |
|
16 |
*/ |
|
17 |
public class DwgArcReader1314 implements IDwgObjectReader{ |
|
18 |
|
|
19 |
/* (non-Javadoc) |
|
20 |
* @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#readSpecificObj(int[], int, com.iver.cit.jdwglib.dwg.DwgObject) |
|
21 |
*/ |
|
22 |
public void readSpecificObj(int[] data, int offset, DwgObject dwgObj) { |
|
23 |
// TODO Auto-generated method stub |
|
24 |
|
|
25 |
} |
|
26 |
|
|
27 |
/* (non-Javadoc) |
|
28 |
* @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#setFileReader(com.iver.cit.jdwglib.dwg.readers.IDwgFileReader) |
|
29 |
*/ |
|
30 |
public void setFileReader(IDwgFileReader headTailReader) { |
|
31 |
// TODO Auto-generated method stub |
|
32 |
|
|
33 |
} |
|
34 |
|
|
35 |
} |
|
0 | 36 |
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/readers/objreaders/v1314/DwgAttdefReader1314.java | ||
---|---|---|
1 |
/* |
|
2 |
* Created on 25-ene-2007 by azabala |
|
3 |
* |
|
4 |
*/ |
|
5 |
package com.iver.cit.jdwglib.dwg.readers.objreaders.v1314; |
|
6 |
|
|
7 |
import com.iver.cit.jdwglib.dwg.DwgObject; |
|
8 |
import com.iver.cit.jdwglib.dwg.readers.IDwgFileReader; |
|
9 |
import com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader; |
|
10 |
|
|
11 |
/** |
|
12 |
* @author alzabord |
|
13 |
* |
|
14 |
* TODO To change the template for this generated type comment go to |
|
15 |
* Window - Preferences - Java - Code Style - Code Templates |
|
16 |
*/ |
|
17 |
public class DwgAttdefReader1314 implements IDwgObjectReader{ |
|
18 |
|
|
19 |
/* (non-Javadoc) |
|
20 |
* @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#readSpecificObj(int[], int, com.iver.cit.jdwglib.dwg.DwgObject) |
|
21 |
*/ |
|
22 |
public void readSpecificObj(int[] data, int offset, DwgObject dwgObj) { |
|
23 |
// TODO Auto-generated method stub |
|
24 |
|
|
25 |
} |
|
26 |
|
|
27 |
/* (non-Javadoc) |
|
28 |
* @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#setFileReader(com.iver.cit.jdwglib.dwg.readers.IDwgFileReader) |
|
29 |
*/ |
|
30 |
public void setFileReader(IDwgFileReader headTailReader) { |
|
31 |
// TODO Auto-generated method stub |
|
32 |
|
|
33 |
} |
|
34 |
|
|
35 |
} |
|
0 | 36 |
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/readers/objreaders/v1314/DwgSolidReader1314.java | ||
---|---|---|
1 |
/* |
|
2 |
* Created on 25-ene-2007 by azabala |
|
3 |
* |
|
4 |
*/ |
|
5 |
package com.iver.cit.jdwglib.dwg.readers.objreaders.v1314; |
|
6 |
|
|
7 |
import com.iver.cit.jdwglib.dwg.DwgObject; |
|
8 |
import com.iver.cit.jdwglib.dwg.readers.IDwgFileReader; |
|
9 |
import com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader; |
|
10 |
|
|
11 |
/** |
|
12 |
* @author alzabord |
|
13 |
* |
|
14 |
* TODO To change the template for this generated type comment go to |
|
15 |
* Window - Preferences - Java - Code Style - Code Templates |
|
16 |
*/ |
|
17 |
public class DwgSolidReader1314 implements IDwgObjectReader{ |
|
18 |
|
|
19 |
/* (non-Javadoc) |
|
20 |
* @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#readSpecificObj(int[], int, com.iver.cit.jdwglib.dwg.DwgObject) |
|
21 |
*/ |
Also available in: Unified diff