Revision 9927
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/objects/DwgArc.java | ||
---|---|---|
35 | 35 |
package com.iver.cit.jdwglib.dwg.objects; |
36 | 36 |
|
37 | 37 |
import java.awt.geom.Point2D; |
38 |
import java.util.ArrayList; |
|
39 | 38 |
import java.util.List; |
40 | 39 |
|
41 | 40 |
import com.iver.cit.gvsig.fmap.core.FPolyline2D; |
42 | 41 |
import com.iver.cit.gvsig.fmap.core.FShape; |
43 | 42 |
import com.iver.cit.jdwglib.dwg.DwgFile; |
44 | 43 |
import com.iver.cit.jdwglib.dwg.DwgObject; |
45 |
import com.iver.cit.jdwglib.dwg.DwgUtil; |
|
46 | 44 |
import com.iver.cit.jdwglib.dwg.IDwg2FMap; |
47 | 45 |
import com.iver.cit.jdwglib.dwg.IDwg3DTestable; |
48 | 46 |
import com.iver.cit.jdwglib.dwg.IDwgBlockMember; |
... | ... | |
70 | 68 |
super(index); |
71 | 69 |
} |
72 | 70 |
|
71 |
|
|
73 | 72 |
/** |
74 |
* Read an Arc in the DWG format Version 15 |
|
75 |
* |
|
76 |
* @param data Array of unsigned bytes obtained from the DWG binary file |
|
77 |
* @param offset The current bit offset where the value begins |
|
78 |
* @throws Exception If an unexpected bit value is found in the DWG file. Occurs |
|
79 |
* when we are looking for LwPolylines. |
|
80 |
*/ |
|
81 |
public void readDwgArcV15(int[] data, int offset) throws Exception { |
|
82 |
//System.out.println("readDwgArc() executed ..."); |
|
83 |
int bitPos = offset; |
|
84 |
bitPos = readObjectHeaderV15(data, bitPos); |
|
85 |
ArrayList v = DwgUtil.getBitDouble(data, bitPos); |
|
86 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
87 |
double x = ((Double)v.get(1)).doubleValue(); |
|
88 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
89 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
90 |
double y = ((Double)v.get(1)).doubleValue(); |
|
91 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
92 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
93 |
double z = ((Double)v.get(1)).doubleValue(); |
|
94 |
double[] coord = new double[]{x, y, z}; |
|
95 |
center = coord; |
|
96 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
97 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
98 |
double val = ((Double)v.get(1)).doubleValue(); |
|
99 |
radius = val; |
|
100 |
v = DwgUtil.testBit(data, bitPos); |
|
101 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
102 |
boolean flag = ((Boolean)v.get(1)).booleanValue(); |
|
103 |
if (flag) { |
|
104 |
val=0.0; |
|
105 |
} else { |
|
106 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
107 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
108 |
val = ((Double)v.get(1)).doubleValue(); |
|
109 |
} |
|
110 |
thickness = val; |
|
111 |
v = DwgUtil.testBit(data, bitPos); |
|
112 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
113 |
flag = ((Boolean)v.get(1)).booleanValue(); |
|
114 |
if (flag) { |
|
115 |
x = y = 0.0; |
|
116 |
z = 1.0; |
|
117 |
} else { |
|
118 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
119 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
120 |
x = ((Double)v.get(1)).doubleValue(); |
|
121 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
122 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
123 |
y = ((Double)v.get(1)).doubleValue(); |
|
124 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
125 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
126 |
z = ((Double)v.get(1)).doubleValue(); |
|
127 |
} |
|
128 |
coord = new double[]{x, y, z}; |
|
129 |
extrusion = coord; |
|
130 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
131 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
132 |
val = ((Double)v.get(1)).doubleValue(); |
|
133 |
initAngle = val; |
|
134 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
135 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
136 |
val = ((Double)v.get(1)).doubleValue(); |
|
137 |
endAngle = val; |
|
138 |
bitPos = readObjectTailV15(data, bitPos); |
|
139 |
} |
|
140 |
/** |
|
141 | 73 |
* @return Returns the center. |
142 | 74 |
*/ |
143 | 75 |
public double[] getCenter() { |
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/objects/DwgAttdef.java | ||
---|---|---|
35 | 35 |
package com.iver.cit.jdwglib.dwg.objects; |
36 | 36 |
|
37 | 37 |
import java.awt.geom.Point2D; |
38 |
import java.util.ArrayList; |
|
39 |
import java.util.Vector; |
|
40 | 38 |
|
41 | 39 |
import com.iver.cit.jdwglib.dwg.DwgObject; |
42 |
import com.iver.cit.jdwglib.dwg.DwgUtil; |
|
43 | 40 |
|
44 | 41 |
/** |
45 | 42 |
* The DwgAttdef class represents a DWG Attdef |
... | ... | |
70 | 67 |
private String prompt; |
71 | 68 |
private int styleHandle; |
72 | 69 |
|
73 |
/** |
|
74 |
* Read an Attdef in the DWG format Version 15 |
|
75 |
* |
|
76 |
* @param data Array of unsigned bytes obtained from the DWG binary file |
|
77 |
* @param offset The current bit offset where the value begins |
|
78 |
* @throws Exception If an unexpected bit value is found in the DWG file. Occurs |
|
79 |
* when we are looking for LwPolylines. |
|
80 |
*/ |
|
81 |
public void readDwgAttdefV15(int[] data, int offset) throws Exception { |
|
82 |
//System.out.println("readDwgAttdef() executed ..."); |
|
83 |
int bitPos = offset; |
|
84 |
bitPos = readObjectHeaderV15(data, bitPos); |
|
85 |
ArrayList v = DwgUtil.getRawChar(data, bitPos); |
|
86 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
87 |
int dflag = ((Integer)v.get(1)).intValue(); |
|
88 |
dataFlag = dflag; |
|
89 |
if ((dflag & 0x1)==0) { |
|
90 |
v = DwgUtil.getRawDouble(data, bitPos); |
|
91 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
92 |
double elev = ((Double)v.get(1)).doubleValue(); |
|
93 |
elevation = elev; |
|
94 |
} |
|
95 |
v = DwgUtil.getRawDouble(data, bitPos); |
|
96 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
97 |
double x1 = ((Double)v.get(1)).doubleValue(); |
|
98 |
v = DwgUtil.getRawDouble(data, bitPos); |
|
99 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
100 |
double y1 = ((Double)v.get(1)).doubleValue(); |
|
101 |
insertionPoint = new Point2D.Double(x1, y1); |
|
102 |
double x=0, y=0, z=0; |
|
103 |
if ((dflag & 0x2)==0) { |
|
104 |
v = DwgUtil.getDefaultDouble(data, bitPos, x1); |
|
105 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
106 |
x = ((Double)v.get(1)).doubleValue(); |
|
107 |
v = DwgUtil.getDefaultDouble(data, bitPos, y1); |
|
108 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
109 |
y = ((Double)v.get(1)).doubleValue(); |
|
110 |
} |
|
111 |
alignmentPoint = new Point2D.Double(x, y); |
|
112 |
v = DwgUtil.testBit(data, bitPos); |
|
113 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
114 |
boolean flag = ((Boolean)v.get(1)).booleanValue(); |
|
115 |
if (flag) { |
|
116 |
y = 0.0; |
|
117 |
x = y; |
|
118 |
z = 1.0; |
|
119 |
} else { |
|
120 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
121 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
122 |
x = ((Double)v.get(1)).doubleValue(); |
|
123 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
124 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
125 |
y = ((Double)v.get(1)).doubleValue(); |
|
126 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
127 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
128 |
z = ((Double)v.get(1)).doubleValue(); |
|
129 |
} |
|
130 |
extrusion = new double[]{x, y, z}; |
|
131 |
v = DwgUtil.testBit(data, bitPos); |
|
132 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
133 |
flag = ((Boolean)v.get(1)).booleanValue(); |
|
134 |
double th; |
|
135 |
if (flag) { |
|
136 |
th=0.0; |
|
137 |
} else { |
|
138 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
139 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
140 |
th = ((Double)v.get(1)).doubleValue(); |
|
141 |
} |
|
142 |
thickness = th; |
|
143 |
if ((dflag & 0x4)==0) { |
|
144 |
v = DwgUtil.getRawDouble(data, bitPos); |
|
145 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
146 |
double oblique = ((Double)v.get(1)).doubleValue(); |
|
147 |
obliqueAngle = oblique; |
|
148 |
} |
|
149 |
if ((dflag & 0x8)==0) { |
|
150 |
v = DwgUtil.getRawDouble(data, bitPos); |
|
151 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
152 |
double rot = ((Double)v.get(1)).doubleValue(); |
|
153 |
rotationAngle = rot; |
|
154 |
} |
|
155 |
v = DwgUtil.getRawDouble(data, bitPos); |
|
156 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
157 |
double height = ((Double)v.get(1)).doubleValue(); |
|
158 |
this.height = height; |
|
159 |
if ((dflag & 0x10)==0) { |
|
160 |
v = DwgUtil.getRawDouble(data, bitPos); |
|
161 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
162 |
double width = ((Double)v.get(1)).doubleValue(); |
|
163 |
widthFactor = width; |
|
164 |
} |
|
165 |
v = DwgUtil.getTextString(data, bitPos); |
|
166 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
167 |
String text = (String)v.get(1); |
|
168 |
this.text = text; |
|
169 |
if ((dflag & 0x20)==0) { |
|
170 |
v = DwgUtil.getBitShort(data, bitPos); |
|
171 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
172 |
int gen = ((Integer)v.get(1)).intValue(); |
|
173 |
generation = gen; |
|
174 |
} |
|
175 |
if ((dflag & 0x40)==0) { |
|
176 |
v = DwgUtil.getBitShort(data, bitPos); |
|
177 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
178 |
int halign = ((Integer)v.get(1)).intValue(); |
|
179 |
this.halign = halign; |
|
180 |
} |
|
181 |
if ((dflag & 0x80)==0) { |
|
182 |
v = DwgUtil.getBitShort(data, bitPos); |
|
183 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
184 |
int valign = ((Integer)v.get(1)).intValue(); |
|
185 |
this.valign = valign; |
|
186 |
} |
|
187 |
v = DwgUtil.getTextString(data, bitPos); |
|
188 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
189 |
String tag = (String)v.get(1); |
|
190 |
this.tag = tag; |
|
191 |
v = DwgUtil.getBitShort(data, bitPos); |
|
192 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
193 |
int fl = ((Integer)v.get(1)).intValue(); |
|
194 |
fieldLength = fl; |
|
195 |
v = DwgUtil.getRawChar(data, bitPos); |
|
196 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
197 |
int flags = ((Integer)v.get(1)).intValue(); |
|
198 |
this.flags = flags; |
|
199 |
v = DwgUtil.getTextString(data, bitPos); |
|
200 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
201 |
String prompt = (String)v.get(1); |
|
202 |
this.prompt = prompt; |
|
203 |
bitPos = readObjectTailV15(data, bitPos); |
|
204 |
v = DwgUtil.getHandle(data, bitPos); |
|
205 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
206 |
int[] handle = new int[v.size()-1]; |
|
207 |
for (int j=1;j<v.size();j++) { |
|
208 |
handle[j-1] = ((Integer)v.get(j)).intValue(); |
|
209 |
} |
|
210 |
ArrayList handleVect = new ArrayList(); |
|
211 |
for (int i=0;i<handle.length;i++) { |
|
212 |
handleVect.add(new Integer(handle[i])); |
|
213 |
} |
|
214 |
styleHandle = DwgUtil.handleBinToHandleInt(handleVect); |
|
215 |
} |
|
70 |
|
|
216 | 71 |
/* (non-Javadoc) |
217 | 72 |
* @see java.lang.Object#clone() |
218 | 73 |
*/ |
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/objects/DwgLayerControl.java | ||
---|---|---|
47 | 47 |
super(index); |
48 | 48 |
// TODO Auto-generated constructor stub |
49 | 49 |
} |
50 |
|
|
51 |
/** |
|
52 |
* Read a Layer control in the DWG format Version 15 |
|
53 |
* |
|
54 |
* @param data Array of unsigned bytes obtained from the DWG binary file |
|
55 |
* @param offset The current bit offset where the value begins |
|
56 |
* @throws Exception If an unexpected bit value is found in the DWG file. Occurs |
|
57 |
* when we are looking for LwPolylines. |
|
58 |
*/ |
|
59 |
public void readDwgLayerControlV15(int[] data, int offset) throws Exception { |
|
60 |
} |
|
61 | 50 |
} |
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/objects/DwgAttrib.java | ||
---|---|---|
74 | 74 |
private String prompt; |
75 | 75 |
private int styleHandle; |
76 | 76 |
|
77 |
/** |
|
78 |
* Read an Attrib in the DWG format Version 15 |
|
79 |
* |
|
80 |
* @param data Array of unsigned bytes obtained from the DWG binary file |
|
81 |
* @param offset The current bit offset where the value begins |
|
82 |
* @throws Exception If an unexpected bit value is found in the DWG file. Occurs |
|
83 |
* when we are looking for LwPolylines. |
|
84 |
*/ |
|
85 |
public void readDwgAttribV15(int[] data, int offset) throws Exception { |
|
86 |
//System.out.println("readDwgAttdef() executed ..."); |
|
87 |
int bitPos = offset; |
|
88 |
bitPos = readObjectHeaderV15(data, bitPos); |
|
89 |
ArrayList v = DwgUtil.getRawChar(data, bitPos); |
|
90 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
91 |
int dflag = ((Integer)v.get(1)).intValue(); |
|
92 |
dataFlag = dflag; |
|
93 |
if ((dflag & 0x1)==0) { |
|
94 |
v = DwgUtil.getRawDouble(data, bitPos); |
|
95 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
96 |
double elev = ((Double)v.get(1)).doubleValue(); |
|
97 |
elevation = elev; |
|
98 |
} |
|
99 |
v = DwgUtil.getRawDouble(data, bitPos); |
|
100 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
101 |
double x1 = ((Double)v.get(1)).doubleValue(); |
|
102 |
v = DwgUtil.getRawDouble(data, bitPos); |
|
103 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
104 |
double y1 = ((Double)v.get(1)).doubleValue(); |
|
105 |
insertionPoint = new Point2D.Double(x1, y1); |
|
106 |
double x=0, y=0, z=0; |
|
107 |
if ((dflag & 0x2)==0) { |
|
108 |
v = DwgUtil.getDefaultDouble(data, bitPos, x1); |
|
109 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
110 |
x = ((Double)v.get(1)).doubleValue(); |
|
111 |
v = DwgUtil.getDefaultDouble(data, bitPos, y1); |
|
112 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
113 |
y = ((Double)v.get(1)).doubleValue(); |
|
114 |
} |
|
115 |
alignmentPoint = new Point2D.Double(x, y); |
|
116 |
v = DwgUtil.testBit(data, bitPos); |
|
117 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
118 |
boolean flag = ((Boolean)v.get(1)).booleanValue(); |
|
119 |
if (flag) { |
|
120 |
y = 0.0; |
|
121 |
x = y; |
|
122 |
z = 1.0; |
|
123 |
} else { |
|
124 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
125 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
126 |
x = ((Double)v.get(1)).doubleValue(); |
|
127 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
128 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
129 |
y = ((Double)v.get(1)).doubleValue(); |
|
130 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
131 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
132 |
z = ((Double)v.get(1)).doubleValue(); |
|
133 |
} |
|
134 |
extrusion = new double[]{x, y, z}; |
|
135 |
v = DwgUtil.testBit(data, bitPos); |
|
136 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
137 |
flag = ((Boolean)v.get(1)).booleanValue(); |
|
138 |
double th; |
|
139 |
if (flag) { |
|
140 |
th=0.0; |
|
141 |
} else { |
|
142 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
143 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
144 |
th = ((Double)v.get(1)).doubleValue(); |
|
145 |
} |
|
146 |
thickness = th; |
|
147 |
if ((dflag & 0x4)==0) { |
|
148 |
v = DwgUtil.getRawDouble(data, bitPos); |
|
149 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
150 |
double oblique = ((Double)v.get(1)).doubleValue(); |
|
151 |
obliqueAngle = oblique; |
|
152 |
} |
|
153 |
if ((dflag & 0x8)==0) { |
|
154 |
v = DwgUtil.getRawDouble(data, bitPos); |
|
155 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
156 |
double rot = ((Double)v.get(1)).doubleValue(); |
|
157 |
rotationAngle = rot; |
|
158 |
} |
|
159 |
v = DwgUtil.getRawDouble(data, bitPos); |
|
160 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
161 |
double height = ((Double)v.get(1)).doubleValue(); |
|
162 |
this.height = height; |
|
163 |
if ((dflag & 0x10)==0) { |
|
164 |
v = DwgUtil.getRawDouble(data, bitPos); |
|
165 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
166 |
double width = ((Double)v.get(1)).doubleValue(); |
|
167 |
widthFactor = width; |
|
168 |
} |
|
169 |
v = DwgUtil.getTextString(data, bitPos); |
|
170 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
171 |
String text = (String)v.get(1); |
|
172 |
this.text = text; |
|
173 |
if ((dflag & 0x20)==0) { |
|
174 |
v = DwgUtil.getBitShort(data, bitPos); |
|
175 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
176 |
int gen = ((Integer)v.get(1)).intValue(); |
|
177 |
generation = gen; |
|
178 |
} |
|
179 |
if ((dflag & 0x40)==0) { |
|
180 |
v = DwgUtil.getBitShort(data, bitPos); |
|
181 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
182 |
int halign = ((Integer)v.get(1)).intValue(); |
|
183 |
this.halign = halign; |
|
184 |
} |
|
185 |
if ((dflag & 0x80)==0) { |
|
186 |
v = DwgUtil.getBitShort(data, bitPos); |
|
187 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
188 |
int valign = ((Integer)v.get(1)).intValue(); |
|
189 |
this.valign = valign; |
|
190 |
} |
|
191 |
v = DwgUtil.getTextString(data, bitPos); |
|
192 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
193 |
String tag = (String)v.get(1); |
|
194 |
this.tag = tag; |
|
195 |
v = DwgUtil.getBitShort(data, bitPos); |
|
196 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
197 |
int fl = ((Integer)v.get(1)).intValue(); |
|
198 |
fieldLength = fl; |
|
199 |
v = DwgUtil.getRawChar(data, bitPos); |
|
200 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
201 |
int flags = ((Integer)v.get(1)).intValue(); |
|
202 |
this.flags = flags; |
|
203 |
bitPos = readObjectTailV15(data, bitPos); |
|
204 |
v = DwgUtil.getHandle(data, bitPos); |
|
205 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
206 |
int[] handle = new int[v.size()-1]; |
|
207 |
for (int j=1;j<v.size();j++) { |
|
208 |
handle[j-1] = ((Integer)v.get(j)).intValue(); |
|
209 |
} |
|
210 |
ArrayList handleVect = new ArrayList(); |
|
211 |
for (int i=0;i<handle.length;i++) { |
|
212 |
handleVect.add(new Integer(handle[i])); |
|
213 |
} |
|
214 |
styleHandle = DwgUtil.handleBinToHandleInt(handleVect); |
|
215 |
} |
|
77 |
|
|
216 | 78 |
/** |
217 | 79 |
* @return Returns the elevation. |
218 | 80 |
*/ |
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/objects/DwgLine.java | ||
---|---|---|
35 | 35 |
package com.iver.cit.jdwglib.dwg.objects; |
36 | 36 |
|
37 | 37 |
import java.awt.geom.Point2D; |
38 |
import java.util.ArrayList; |
|
39 | 38 |
import java.util.List; |
40 | 39 |
|
41 | 40 |
import com.iver.cit.gvsig.fmap.core.FPolyline2D; |
42 | 41 |
import com.iver.cit.gvsig.fmap.core.FShape; |
43 | 42 |
import com.iver.cit.jdwglib.dwg.DwgFile; |
44 | 43 |
import com.iver.cit.jdwglib.dwg.DwgObject; |
45 |
import com.iver.cit.jdwglib.dwg.DwgUtil; |
|
46 | 44 |
import com.iver.cit.jdwglib.dwg.IDwg2FMap; |
47 | 45 |
import com.iver.cit.jdwglib.dwg.IDwg3DTestable; |
48 | 46 |
import com.iver.cit.jdwglib.dwg.IDwgBlockMember; |
... | ... | |
68 | 66 |
private boolean zflag = false; |
69 | 67 |
|
70 | 68 |
/** |
71 |
* Read a Line in the DWG format Version 15 |
|
72 |
* |
|
73 |
* @param data Array of unsigned bytes obtained from the DWG binary file |
|
74 |
* @param offset The current bit offset where the value begins |
|
75 |
* @throws Exception If an unexpected bit value is found in the DWG file. Occurs |
|
76 |
* when we are looking for LwPolylines. |
|
77 |
*/ |
|
78 |
public void readDwgLineV15(int[] data, int offset) throws Exception { |
|
79 |
int bitPos = offset; |
|
80 |
bitPos = readObjectHeaderV15(data, bitPos); |
|
81 |
ArrayList v = DwgUtil.testBit(data, bitPos); |
|
82 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
83 |
zflag = ((Boolean)v.get(1)).booleanValue(); |
|
84 |
v = DwgUtil.getRawDouble(data, bitPos); |
|
85 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
86 |
double x1 = ((Double)v.get(1)).doubleValue(); |
|
87 |
v = DwgUtil.getDefaultDouble(data, bitPos, x1); |
|
88 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
89 |
double x2 = ((Double)v.get(1)).doubleValue(); |
|
90 |
v = DwgUtil.getRawDouble(data, bitPos); |
|
91 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
92 |
double y1 = ((Double)v.get(1)).doubleValue(); |
|
93 |
v = DwgUtil.getDefaultDouble(data, bitPos, y1); |
|
94 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
95 |
double y2 = ((Double)v.get(1)).doubleValue(); |
|
96 |
double[] p1; |
|
97 |
double[] p2; |
|
98 |
if (!zflag) { |
|
99 |
v = DwgUtil.getRawDouble(data, bitPos); |
|
100 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
101 |
double z1 = ((Double)v.get(1)).doubleValue(); |
|
102 |
v = DwgUtil.getDefaultDouble(data, bitPos, z1); |
|
103 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
104 |
double z2 = ((Double)v.get(1)).doubleValue(); |
|
105 |
p1 = new double[]{x1, y1, z1}; |
|
106 |
p2 = new double[]{x2, y2, z2}; |
|
107 |
} else { |
|
108 |
p1 = new double[]{x1, y1}; |
|
109 |
p2 = new double[]{x2, y2}; |
|
110 |
} |
|
111 |
this.p1 = p1; |
|
112 |
this.p2 = p2; |
|
113 |
v = DwgUtil.testBit(data, bitPos); |
|
114 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
115 |
boolean flag = ((Boolean)v.get(1)).booleanValue(); |
|
116 |
double val; |
|
117 |
if (flag) { |
|
118 |
val=0.0; |
|
119 |
} else { |
|
120 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
121 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
122 |
val = ((Double)v.get(1)).doubleValue(); |
|
123 |
} |
|
124 |
thickness = val; |
|
125 |
v = DwgUtil.testBit(data, bitPos); |
|
126 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
127 |
flag = ((Boolean)v.get(1)).booleanValue(); |
|
128 |
double x, y, z; |
|
129 |
if (flag) { |
|
130 |
x = y = 0.0; |
|
131 |
z = 1.0; |
|
132 |
} else { |
|
133 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
134 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
135 |
x = ((Double)v.get(1)).doubleValue(); |
|
136 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
137 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
138 |
y = ((Double)v.get(1)).doubleValue(); |
|
139 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
140 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
141 |
z = ((Double)v.get(1)).doubleValue(); |
|
142 |
} |
|
143 |
double[] coord = new double[]{x, y, z}; |
|
144 |
extrusion = coord; |
|
145 |
bitPos = readObjectTailV15(data, bitPos); |
|
146 |
} |
|
147 |
/** |
|
148 | 69 |
* @return Returns the p1. |
149 | 70 |
*/ |
150 | 71 |
public double[] getP1() { |
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/objects/DwgBlock.java | ||
---|---|---|
34 | 34 |
*/ |
35 | 35 |
package com.iver.cit.jdwglib.dwg.objects; |
36 | 36 |
|
37 |
import java.util.ArrayList; |
|
38 |
|
|
39 | 37 |
import com.iver.cit.jdwglib.dwg.DwgObject; |
40 |
import com.iver.cit.jdwglib.dwg.DwgUtil; |
|
41 | 38 |
|
42 | 39 |
/** |
43 | 40 |
* The DwgBlock class represents a DWG Block |
... | ... | |
52 | 49 |
private String name; |
53 | 50 |
|
54 | 51 |
/** |
55 |
* Read a Block in the DWG format Version 15 |
|
56 |
* |
|
57 |
* @param data Array of unsigned bytes obtained from the DWG binary file |
|
58 |
* @param offset The current bit offset where the value begins |
|
59 |
* @throws Exception If an unexpected bit value is found in the DWG file. Occurs |
|
60 |
* when we are looking for LwPolylines. |
|
61 |
*/ |
|
62 |
public void readDwgBlockV15(int[] data, int offset) throws Exception { |
|
63 |
int bitPos = offset; |
|
64 |
bitPos = readObjectHeaderV15(data, bitPos); |
|
65 |
ArrayList v = DwgUtil.getTextString(data, bitPos); |
|
66 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
67 |
String text = (String)v.get(1); |
|
68 |
name = text; |
|
69 |
bitPos = readObjectTailV15(data, bitPos); |
|
70 |
} |
|
71 |
/** |
|
72 | 52 |
* @return Returns the name. |
73 | 53 |
*/ |
74 | 54 |
public String getName() { |
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/objects/DwgBlockControl.java | ||
---|---|---|
34 | 34 |
*/ |
35 | 35 |
package com.iver.cit.jdwglib.dwg.objects; |
36 | 36 |
|
37 |
import java.util.ArrayList; |
|
38 | 37 |
import java.util.Vector; |
39 | 38 |
|
40 | 39 |
import com.iver.cit.jdwglib.dwg.DwgObject; |
41 |
import com.iver.cit.jdwglib.dwg.DwgUtil; |
|
42 | 40 |
|
43 | 41 |
/** |
44 | 42 |
* The DwgBlockControl class represents a DWG Block control |
... | ... | |
46 | 44 |
* @author jmorell |
47 | 45 |
*/ |
48 | 46 |
public class DwgBlockControl extends DwgObject { |
49 |
public DwgBlockControl(int index) { |
|
50 |
super(index); |
|
51 |
// TODO Auto-generated constructor stub |
|
52 |
} |
|
53 | 47 |
|
54 | 48 |
private int nullHandle; |
55 | 49 |
private Vector code2Handles; |
56 | 50 |
private int modelSpaceHandle; |
57 | 51 |
private int paperSpaceHandle; |
58 | 52 |
|
59 |
/** |
|
60 |
* Read a Block control in the DWG format Version 15 |
|
61 |
* |
|
62 |
* @param data Array of unsigned bytes obtained from the DWG binary file |
|
63 |
* @param offset The current bit offset where the value begins |
|
64 |
* @throws Exception If an unexpected bit value is found in the DWG file. Occurs |
|
65 |
* when we are looking for LwPolylines. |
|
66 |
*/ |
|
67 |
public void readDwgBlockControlV15(int[] data, int offset) throws Exception { |
|
68 |
//System.out.println("readDwgBlockControl() executed ..."); |
|
69 |
int bitPos = offset; |
|
70 |
ArrayList v = DwgUtil.getBitLong(data, bitPos); |
|
71 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
72 |
int numReactors = ((Integer)v.get(1)).intValue(); |
|
73 |
setNumReactors(numReactors); |
|
74 |
v = DwgUtil.getBitShort(data, bitPos); |
|
75 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
76 |
int enum = ((Integer)v.get(1)).intValue(); |
|
77 |
v = DwgUtil.getHandle(data, bitPos); |
|
78 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
79 |
int[] handle = new int[v.size()-1]; |
|
80 |
for (int i=1;i<v.size();i++) { |
|
81 |
handle[i-1] = ((Integer)v.get(i)).intValue(); |
|
82 |
} |
|
83 |
ArrayList handleVect = new ArrayList(); |
|
84 |
for (int i=0;i<handle.length;i++) { |
|
85 |
handleVect.add(new Integer(handle[i])); |
|
86 |
} |
|
87 |
nullHandle = DwgUtil.handleBinToHandleInt(handleVect); |
|
88 |
v = DwgUtil.getHandle(data, bitPos); |
|
89 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
90 |
handle = new int[v.size()-1]; |
|
91 |
for (int i=1;i<v.size();i++) { |
|
92 |
handle[i-1] = ((Integer)v.get(i)).intValue(); |
|
93 |
} |
|
94 |
if (enum>0) { |
|
95 |
Vector handles = new Vector(); |
|
96 |
for (int i=0;i<enum;i++) { |
|
97 |
v = DwgUtil.getHandle(data, bitPos); |
|
98 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
99 |
handle = new int[v.size()-1]; |
|
100 |
for (int j=1;j<v.size();j++) { |
|
101 |
handle[j-1] = ((Integer)v.get(j)).intValue(); |
|
102 |
} |
|
103 |
handles.add(handle); |
|
104 |
} |
|
105 |
code2Handles = handles; |
|
106 |
} |
|
107 |
v = DwgUtil.getHandle(data, bitPos); |
|
108 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
109 |
handle = new int[v.size()-1]; |
|
110 |
for (int j=1;j<v.size();j++) { |
|
111 |
handle[j-1] = ((Integer)v.get(j)).intValue(); |
|
112 |
} |
|
113 |
handleVect = new ArrayList(); |
|
114 |
for (int i=0;i<handle.length;i++) { |
|
115 |
handleVect.add(new Integer(handle[i])); |
|
116 |
} |
|
117 |
modelSpaceHandle = DwgUtil.handleBinToHandleInt(handleVect); |
|
118 |
v = DwgUtil.getHandle(data, bitPos); |
|
119 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
120 |
handle = new int[v.size()-1]; |
|
121 |
for (int j=1;j<v.size();j++) { |
|
122 |
handle[j-1] = ((Integer)v.get(j)).intValue(); |
|
123 |
} |
|
124 |
handleVect = new ArrayList(); |
|
125 |
for (int i=0;i<handle.length;i++) { |
|
126 |
handleVect.add(new Integer(handle[i])); |
|
127 |
} |
|
128 |
paperSpaceHandle = DwgUtil.handleBinToHandleInt(handleVect); |
|
53 |
public DwgBlockControl(int index) { |
|
54 |
super(index); |
|
129 | 55 |
} |
56 |
|
|
57 |
public Vector getCode2Handles() { |
|
58 |
return code2Handles; |
|
59 |
} |
|
60 |
public void setCode2Handles(Vector code2Handles) { |
|
61 |
this.code2Handles = code2Handles; |
|
62 |
} |
|
63 |
public int getModelSpaceHandle() { |
|
64 |
return modelSpaceHandle; |
|
65 |
} |
|
66 |
public void setModelSpaceHandle(int modelSpaceHandle) { |
|
67 |
this.modelSpaceHandle = modelSpaceHandle; |
|
68 |
} |
|
69 |
public int getNullHandle() { |
|
70 |
return nullHandle; |
|
71 |
} |
|
72 |
public void setNullHandle(int nullHandle) { |
|
73 |
this.nullHandle = nullHandle; |
|
74 |
} |
|
75 |
public int getPaperSpaceHandle() { |
|
76 |
return paperSpaceHandle; |
|
77 |
} |
|
78 |
public void setPaperSpaceHandle(int paperSpaceHandle) { |
|
79 |
this.paperSpaceHandle = paperSpaceHandle; |
|
80 |
} |
|
130 | 81 |
} |
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/objects/DwgEllipse.java | ||
---|---|---|
35 | 35 |
package com.iver.cit.jdwglib.dwg.objects; |
36 | 36 |
|
37 | 37 |
import java.awt.geom.Point2D; |
38 |
import java.util.ArrayList; |
|
39 | 38 |
import java.util.List; |
40 | 39 |
|
41 | 40 |
import com.iver.cit.gvsig.fmap.core.FPolyline2D; |
42 | 41 |
import com.iver.cit.gvsig.fmap.core.FShape; |
43 | 42 |
import com.iver.cit.jdwglib.dwg.DwgFile; |
44 | 43 |
import com.iver.cit.jdwglib.dwg.DwgObject; |
45 |
import com.iver.cit.jdwglib.dwg.DwgUtil; |
|
46 | 44 |
import com.iver.cit.jdwglib.dwg.IDwg2FMap; |
47 | 45 |
import com.iver.cit.jdwglib.dwg.IDwg3DTestable; |
48 | 46 |
import com.iver.cit.jdwglib.dwg.IDwgBlockMember; |
... | ... | |
67 | 65 |
private double initAngle; |
68 | 66 |
private double endAngle; |
69 | 67 |
|
70 |
/** |
|
71 |
* Read a Ellipse in the DWG format Version 15 |
|
72 |
* |
|
73 |
* @param data Array of unsigned bytes obtained from the DWG binary file |
|
74 |
* @param offset The current bit offset where the value begins |
|
75 |
* @throws Exception If an unexpected bit value is found in the DWG file. Occurs |
|
76 |
* when we are looking for LwPolylines. |
|
77 |
*/ |
|
78 |
public void readDwgEllipseV15(int[] data, int offset) throws Exception { |
|
79 |
int bitPos = offset; |
|
80 |
bitPos = readObjectHeaderV15(data, bitPos); |
|
81 |
ArrayList v = DwgUtil.getBitDouble(data, bitPos); |
|
82 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
83 |
double x = ((Double)v.get(1)).doubleValue(); |
|
84 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
85 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
86 |
double y = ((Double)v.get(1)).doubleValue(); |
|
87 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
88 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
89 |
double z = ((Double)v.get(1)).doubleValue(); |
|
90 |
double[] coord = new double[]{x, y, z}; |
|
91 |
center = coord; |
|
92 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
93 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
94 |
x = ((Double)v.get(1)).doubleValue(); |
|
95 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
96 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
97 |
y = ((Double)v.get(1)).doubleValue(); |
|
98 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
99 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
100 |
z = ((Double)v.get(1)).doubleValue(); |
|
101 |
coord = new double[]{x, y, z}; |
|
102 |
majorAxisVector = coord; |
|
103 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
104 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
105 |
x = ((Double)v.get(1)).doubleValue(); |
|
106 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
107 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
108 |
y = ((Double)v.get(1)).doubleValue(); |
|
109 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
110 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
111 |
z = ((Double)v.get(1)).doubleValue(); |
|
112 |
coord = new double[]{x, y, z}; |
|
113 |
extrusion = coord; |
|
114 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
115 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
116 |
double val = ((Double)v.get(1)).doubleValue(); |
|
117 |
axisRatio = val; |
|
118 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
119 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
120 |
val = ((Double)v.get(1)).doubleValue(); |
|
121 |
initAngle = val; |
|
122 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
123 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
124 |
val = ((Double)v.get(1)).doubleValue(); |
|
125 |
endAngle = val; |
|
126 |
bitPos = readObjectTailV15(data, bitPos); |
|
127 |
} |
|
128 | 68 |
/** |
129 | 69 |
* @return Returns the axisRatio. |
130 | 70 |
*/ |
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/objects/DwgEndblk.java | ||
---|---|---|
47 | 47 |
super(index); |
48 | 48 |
// TODO Auto-generated constructor stub |
49 | 49 |
} |
50 |
|
|
51 |
/** |
|
52 |
* Read a Endblk in the DWG format Version 15 |
|
53 |
* |
|
54 |
* @param data Array of unsigned bytes obtained from the DWG binary file |
|
55 |
* @param offset The current bit offset where the value begins |
|
56 |
* @throws Exception If an unexpected bit value is found in the DWG file. Occurs |
|
57 |
* when we are looking for LwPolylines. |
|
58 |
*/ |
|
59 |
public void readDwgEndblkV15(int[] data, int offset) throws Exception { |
|
60 |
int bitPos = offset; |
|
61 |
bitPos = readObjectHeaderV15(data, bitPos); |
|
62 |
bitPos = readObjectTailV15(data, bitPos); |
|
63 |
} |
|
64 | 50 |
} |
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/objects/DwgCircle.java | ||
---|---|---|
35 | 35 |
package com.iver.cit.jdwglib.dwg.objects; |
36 | 36 |
|
37 | 37 |
import java.awt.geom.Point2D; |
38 |
import java.util.ArrayList; |
|
39 | 38 |
import java.util.List; |
40 | 39 |
|
41 | 40 |
import com.iver.cit.gvsig.fmap.core.FPolyline2D; |
42 | 41 |
import com.iver.cit.gvsig.fmap.core.FShape; |
43 | 42 |
import com.iver.cit.jdwglib.dwg.DwgFile; |
44 | 43 |
import com.iver.cit.jdwglib.dwg.DwgObject; |
45 |
import com.iver.cit.jdwglib.dwg.DwgUtil; |
|
46 | 44 |
import com.iver.cit.jdwglib.dwg.IDwg2FMap; |
47 | 45 |
import com.iver.cit.jdwglib.dwg.IDwg3DTestable; |
48 | 46 |
import com.iver.cit.jdwglib.dwg.IDwgBlockMember; |
... | ... | |
68 | 66 |
private double[] extrusion; |
69 | 67 |
|
70 | 68 |
/** |
71 |
* Read a Circle in the DWG format Version 15 |
|
72 |
* |
|
73 |
* @param data Array of unsigned bytes obtained from the DWG binary file |
|
74 |
* @param offset The current bit offset where the value begins |
|
75 |
* @throws Exception If an unexpected bit value is found in the DWG file. Occurs |
|
76 |
* when we are looking for LwPolylines. |
|
77 |
*/ |
|
78 |
public void readDwgCircleV15(int[] data, int offset) throws Exception { |
|
79 |
int bitPos = offset; |
|
80 |
bitPos = readObjectHeaderV15(data, bitPos); |
|
81 |
ArrayList v = DwgUtil.getBitDouble(data, bitPos); |
|
82 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
83 |
double x = ((Double)v.get(1)).doubleValue(); |
|
84 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
85 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
86 |
double y = ((Double)v.get(1)).doubleValue(); |
|
87 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
88 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
89 |
double z = ((Double)v.get(1)).doubleValue(); |
|
90 |
double[] coord = new double[]{x, y, z}; |
|
91 |
center = coord; |
|
92 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
93 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
94 |
double val = ((Double)v.get(1)).doubleValue(); |
|
95 |
radius = val; |
|
96 |
v = DwgUtil.testBit(data, bitPos); |
|
97 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
98 |
boolean flag = ((Boolean)v.get(1)).booleanValue(); |
|
99 |
if (flag) { |
|
100 |
val=0.0; |
|
101 |
} else { |
|
102 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
103 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
104 |
val = ((Double)v.get(1)).doubleValue(); |
|
105 |
} |
|
106 |
thickness = val; |
|
107 |
v = DwgUtil.testBit(data, bitPos); |
|
108 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
109 |
flag = ((Boolean)v.get(1)).booleanValue(); |
|
110 |
if (flag) { |
|
111 |
x = y = 0.0; |
|
112 |
z = 1.0; |
|
113 |
} else { |
|
114 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
115 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
116 |
x = ((Double)v.get(1)).doubleValue(); |
|
117 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
118 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
119 |
y = ((Double)v.get(1)).doubleValue(); |
|
120 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
121 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
122 |
z = ((Double)v.get(1)).doubleValue(); |
|
123 |
} |
|
124 |
coord = new double[]{x, y, z}; |
|
125 |
extrusion = coord; |
|
126 |
bitPos = readObjectTailV15(data, bitPos); |
|
127 |
} |
|
128 |
/** |
|
129 | 69 |
* @return Returns the center. |
130 | 70 |
*/ |
131 | 71 |
public double[] getCenter() { |
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/objects/DwgBlockHeader.java | ||
---|---|---|
77 | 77 |
super(index); |
78 | 78 |
objects = new Vector(); |
79 | 79 |
} |
80 |
|
|
80 | 81 |
/** |
81 |
* Read a Block header in the DWG format Version 15 |
|
82 |
* |
|
83 |
* @param data Array of unsigned bytes obtained from the DWG binary file |
|
84 |
* @param offset The current bit offset where the value begins |
|
85 |
* @throws Exception If an unexpected bit value is found in the DWG file. Occurs |
|
86 |
* when we are looking for LwPolylines. |
|
87 |
*/ |
|
88 |
public void readDwgBlockHeaderV15(int[] data, int offset) throws Exception { |
|
89 |
int bitPos = offset; |
|
90 |
ArrayList v = DwgUtil.getBitLong(data, bitPos); |
|
91 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
92 |
int numReactors = ((Integer)v.get(1)).intValue(); |
|
93 |
setNumReactors(numReactors); |
|
94 |
v = DwgUtil.getTextString(data, bitPos); |
|
95 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
96 |
String name = (String)v.get(1); |
|
97 |
this.name = name; |
|
98 |
v = DwgUtil.testBit(data, bitPos); |
|
99 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
100 |
boolean flag = ((Boolean)v.get(1)).booleanValue(); |
|
101 |
flag64 = flag; |
|
102 |
v = DwgUtil.getBitShort(data, bitPos); |
|
103 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
104 |
int xrefplus1 = ((Integer)v.get(1)).intValue(); |
|
105 |
xRefPlus = xrefplus1; |
|
106 |
v = DwgUtil.testBit(data, bitPos); |
|
107 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
108 |
boolean xdep = ((Boolean)v.get(1)).booleanValue(); |
|
109 |
this.xdep = xdep; |
|
110 |
v = DwgUtil.testBit(data, bitPos); |
|
111 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
112 |
boolean anon = ((Boolean)v.get(1)).booleanValue(); |
|
113 |
anonymous = anon; |
|
114 |
v = DwgUtil.testBit(data, bitPos); |
|
115 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
116 |
boolean hasatts = ((Boolean)v.get(1)).booleanValue(); |
|
117 |
hasAttrs = hasatts; |
|
118 |
v = DwgUtil.testBit(data, bitPos); |
|
119 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
120 |
boolean bxref = ((Boolean)v.get(1)).booleanValue(); |
|
121 |
blkIsXRef = bxref; |
|
122 |
v = DwgUtil.testBit(data, bitPos); |
|
123 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
124 |
boolean xover = ((Boolean)v.get(1)).booleanValue(); |
|
125 |
xRefOverLaid = xover; |
|
126 |
v = DwgUtil.testBit(data, bitPos); |
|
127 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
128 |
boolean loaded = ((Boolean)v.get(1)).booleanValue(); |
|
129 |
this.loaded = loaded; |
|
130 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
131 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
132 |
double bx = ((Double)v.get(1)).doubleValue(); |
|
133 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
134 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
135 |
double by = ((Double)v.get(1)).doubleValue(); |
|
136 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
137 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
138 |
double bz = ((Double)v.get(1)).doubleValue(); |
|
139 |
double[] coord = new double[]{bx, by, bz}; |
|
140 |
basePoint = coord; |
|
141 |
v = DwgUtil.getTextString(data, bitPos); |
|
142 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
143 |
String pname = (String)v.get(1); |
|
144 |
xRefPName = pname; |
|
145 |
int icount = 0; |
|
146 |
while (true) { |
|
147 |
v = DwgUtil.getRawChar(data, bitPos); |
|
148 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
149 |
int val = ((Integer)v.get(1)).intValue(); |
|
150 |
if (val==0) { |
|
151 |
break; |
|
152 |
} |
|
153 |
icount++; |
|
154 |
} |
|
155 |
v = DwgUtil.getTextString(data, bitPos); |
|
156 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
157 |
String desc = (String)v.get(1); |
|
158 |
blockDescription = desc; |
|
159 |
v = DwgUtil.getBitLong(data, bitPos); |
|
160 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
161 |
int pdsize = ((Integer)v.get(1)).intValue(); |
|
162 |
if (pdsize>0) { |
|
163 |
int count = pdsize + icount; |
|
164 |
//int pdata = ((Integer)DwgUtil.getBits(data, count, bitPos)).intValue(); |
|
165 |
//previewData = pdata; |
|
166 |
bitPos = bitPos + count; |
|
167 |
} |
|
168 |
v = DwgUtil.getHandle(data, bitPos); |
|
169 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
170 |
int[] handle = new int[v.size()-1]; |
|
171 |
for (int j=1;j<v.size();j++) { |
|
172 |
handle[j-1] = ((Integer)v.get(j)).intValue(); |
|
173 |
} |
|
174 |
ArrayList handleVect = new ArrayList(); |
|
175 |
for (int i=0;i<handle.length;i++) { |
|
176 |
handleVect.add(new Integer(handle[i])); |
|
177 |
} |
|
178 |
blockControlHandle = DwgUtil.handleBinToHandleInt(handleVect); |
|
179 |
for (int i=0;i<numReactors;i++) { |
|
180 |
v = DwgUtil.getHandle(data, bitPos); |
|
181 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
182 |
handle = new int[v.size()-1]; |
|
183 |
for (int j=1;j<v.size();j++) { |
|
184 |
handle[j-1] = ((Integer)v.get(j)).intValue(); |
|
185 |
} |
|
186 |
} |
|
187 |
v = DwgUtil.getHandle(data, bitPos); |
|
188 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
189 |
handle = new int[v.size()-1]; |
|
190 |
for (int j=1;j<v.size();j++) { |
|
191 |
handle[j-1] = ((Integer)v.get(j)).intValue(); |
|
192 |
} |
|
193 |
v = DwgUtil.getHandle(data, bitPos); |
|
194 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
195 |
handle = new int[v.size()-1]; |
|
196 |
for (int j=1;j<v.size();j++) { |
|
197 |
handle[j-1] = ((Integer)v.get(j)).intValue(); |
|
198 |
} |
|
199 |
handleVect = new ArrayList(); |
|
200 |
for (int i=0;i<handle.length;i++) { |
|
201 |
handleVect.add(new Integer(handle[i])); |
|
202 |
} |
|
203 |
nullHandle = DwgUtil.handleBinToHandleInt(handleVect); |
|
204 |
v = DwgUtil.getHandle(data, bitPos); |
|
205 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
206 |
handle = new int[v.size()-1]; |
|
207 |
for (int j=1;j<v.size();j++) { |
|
208 |
handle[j-1] = ((Integer)v.get(j)).intValue(); |
|
209 |
} |
|
210 |
handleVect = new ArrayList(); |
|
211 |
for (int i=0;i<handle.length;i++) { |
|
212 |
handleVect.add(new Integer(handle[i])); |
|
213 |
} |
|
214 |
blockEntityHandle = DwgUtil.handleBinToHandleInt(handleVect); |
|
215 |
if ((!bxref) && (!xover)) { |
|
216 |
v = DwgUtil.getHandle(data, bitPos); |
|
217 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
218 |
handle = new int[v.size()-1]; |
|
219 |
for (int j=1;j<v.size();j++) { |
|
220 |
handle[j-1] = ((Integer)v.get(j)).intValue(); |
|
221 |
} |
|
222 |
handleVect = new ArrayList(); |
|
223 |
for (int i=0;i<handle.length;i++) { |
|
224 |
handleVect.add(new Integer(handle[i])); |
|
225 |
} |
|
226 |
firstEntityHandle = DwgUtil.handleBinToHandleInt(handleVect); |
|
227 |
v = DwgUtil.getHandle(data, bitPos); |
|
228 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
229 |
handle = new int[v.size()-1]; |
|
230 |
for (int j=1;j<v.size();j++) { |
|
231 |
handle[j-1] = ((Integer)v.get(j)).intValue(); |
|
232 |
} |
|
233 |
handleVect = new ArrayList(); |
|
234 |
for (int i=0;i<handle.length;i++) { |
|
235 |
handleVect.add(new Integer(handle[i])); |
|
236 |
} |
|
237 |
lastEntityHandle = DwgUtil.handleBinToHandleInt(handleVect); |
|
238 |
} |
|
239 |
v = DwgUtil.getHandle(data, bitPos); |
|
240 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
241 |
handle = new int[v.size()-1]; |
|
242 |
for (int j=1;j<v.size();j++) { |
|
243 |
handle[j-1] = ((Integer)v.get(j)).intValue(); |
|
244 |
} |
|
245 |
handleVect = new ArrayList(); |
|
246 |
for (int i=0;i<handle.length;i++) { |
|
247 |
handleVect.add(new Integer(handle[i])); |
|
248 |
} |
|
249 |
endBlkEntityHandle = DwgUtil.handleBinToHandleInt(handleVect); |
|
250 |
if (icount>0) { |
|
251 |
Vector handles = new Vector(); |
|
252 |
for (int i=0;i<icount;i++) { |
|
253 |
v = DwgUtil.getHandle(data, bitPos); |
|
254 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
255 |
handle = new int[v.size()-1]; |
|
256 |
for (int j=1;j<v.size();j++) { |
|
257 |
handle[j-1] = ((Integer)v.get(j)).intValue(); |
|
258 |
} |
|
259 |
handles.add(handle); |
|
260 |
} |
|
261 |
insertHandles = handles; |
|
262 |
} |
|
263 |
v = DwgUtil.getHandle(data, bitPos); |
|
264 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
265 |
handle = new int[v.size()-1]; |
|
266 |
for (int j=1;j<v.size();j++) { |
|
267 |
handle[j-1] = ((Integer)v.get(j)).intValue(); |
|
268 |
} |
|
269 |
handleVect = new ArrayList(); |
|
270 |
for (int i=0;i<handle.length;i++) { |
|
271 |
handleVect.add(new Integer(handle[i])); |
|
272 |
} |
|
273 |
layoutHandle = DwgUtil.handleBinToHandleInt(handleVect); |
|
274 |
} |
|
275 |
/** |
|
276 | 82 |
* @return Returns the basePoint. |
277 | 83 |
*/ |
278 | 84 |
public double[] getBasePoint() { |
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/objects/DwgInsert.java | ||
---|---|---|
35 | 35 |
package com.iver.cit.jdwglib.dwg.objects; |
36 | 36 |
|
37 | 37 |
import java.awt.geom.Point2D; |
38 |
import java.util.ArrayList; |
|
39 | 38 |
import java.util.List; |
40 | 39 |
|
41 | 40 |
import com.iver.cit.gvsig.fmap.core.FPoint2D; |
... | ... | |
43 | 42 |
import com.iver.cit.gvsig.fmap.core.FShape; |
44 | 43 |
import com.iver.cit.jdwglib.dwg.DwgFile; |
45 | 44 |
import com.iver.cit.jdwglib.dwg.DwgObject; |
46 |
import com.iver.cit.jdwglib.dwg.DwgUtil; |
|
47 | 45 |
import com.iver.cit.jdwglib.dwg.IDwg2FMap; |
48 | 46 |
import com.iver.cit.jdwglib.dwg.IDwg3DTestable; |
49 | 47 |
import com.iver.cit.jdwglib.dwg.IDwgBlockMember; |
... | ... | |
69 | 67 |
private int lastAttribHandle; |
70 | 68 |
private int seqendHandle; |
71 | 69 |
|
70 |
|
|
72 | 71 |
/** |
73 |
* Read a Insert in the DWG format Version 15 |
|
74 |
* |
|
75 |
* @param data Array of unsigned bytes obtained from the DWG binary file |
|
76 |
* @param offset The current bit offset where the value begins |
|
77 |
* @throws Exception If an unexpected bit value is found in the DWG file. Occurs |
|
78 |
* when we are looking for LwPolylines. |
|
79 |
*/ |
|
80 |
public void readDwgInsertV15(int[] data, int offset) throws Exception { |
|
81 |
//System.out.println("readDwgInsert() executed ..."); |
|
82 |
int bitPos = offset; |
|
83 |
bitPos = readObjectHeaderV15(data, bitPos); |
|
84 |
ArrayList v = DwgUtil.getBitDouble(data, bitPos); |
|
85 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
86 |
double x = ((Double)v.get(1)).doubleValue(); |
|
87 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
88 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
89 |
double y = ((Double)v.get(1)).doubleValue(); |
|
90 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
91 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
92 |
double z = ((Double)v.get(1)).doubleValue(); |
|
93 |
double[] coord = new double[]{x, y, z}; |
|
94 |
insertionPoint = coord; |
|
95 |
int dflag = ((Integer)DwgUtil.getBits(data, 2, bitPos)).intValue(); |
|
96 |
bitPos = bitPos + 2; |
|
97 |
if (dflag==0x0) { |
|
98 |
v = DwgUtil.getRawDouble(data, bitPos); |
|
99 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
100 |
x = ((Double)v.get(1)).doubleValue(); |
|
101 |
v = DwgUtil.getDefaultDouble(data, bitPos, x); |
|
102 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
103 |
y = ((Double)v.get(1)).doubleValue(); |
|
104 |
v = DwgUtil.getDefaultDouble(data, bitPos, x); |
|
105 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
106 |
z = ((Double)v.get(1)).doubleValue(); |
|
107 |
} else if (dflag==0x1) { |
|
108 |
x = 1.0; |
|
109 |
v = DwgUtil.getDefaultDouble(data, bitPos, x); |
|
110 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
111 |
y = ((Double)v.get(1)).doubleValue(); |
|
112 |
v = DwgUtil.getDefaultDouble(data, bitPos, x); |
|
113 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
114 |
z = ((Double)v.get(1)).doubleValue(); |
|
115 |
} else if (dflag==0x2) { |
|
116 |
v = DwgUtil.getRawDouble(data, bitPos); |
|
117 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
118 |
x = ((Double)v.get(1)).doubleValue(); |
|
119 |
z = x; |
|
120 |
y = z; |
|
121 |
} else { |
|
122 |
z = 1.0; |
|
123 |
y = z; |
|
124 |
x = y; |
|
125 |
} |
|
126 |
coord = new double[]{x, y, z}; |
|
127 |
scale = coord; |
|
128 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
129 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
130 |
double rot = ((Double)v.get(1)).doubleValue(); |
|
131 |
rotation = rot; |
|
132 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
133 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
134 |
x = ((Double)v.get(1)).doubleValue(); |
|
135 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
136 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
137 |
y = ((Double)v.get(1)).doubleValue(); |
|
138 |
v = DwgUtil.getBitDouble(data, bitPos); |
|
139 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
140 |
z = ((Double)v.get(1)).doubleValue(); |
|
141 |
coord = new double[]{x, y, z}; |
|
142 |
extrusion = coord; |
|
143 |
v = DwgUtil.testBit(data, bitPos); |
|
144 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
145 |
boolean hasattr = ((Boolean)v.get(1)).booleanValue(); |
|
146 |
bitPos = readObjectTailV15(data, bitPos); |
|
147 |
v = DwgUtil.getHandle(data, bitPos); |
|
148 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
149 |
int[] handle = new int[v.size()-1]; |
|
150 |
for (int i=1;i<v.size();i++) { |
|
151 |
handle[i-1] = ((Integer)v.get(i)).intValue(); |
|
152 |
} |
|
153 |
ArrayList handleVect = new ArrayList(); |
|
154 |
for (int i=0;i<handle.length;i++) { |
|
155 |
handleVect.add(new Integer(handle[i])); |
|
156 |
} |
|
157 |
blockHeaderHandle = DwgUtil.handleBinToHandleInt(handleVect); |
|
158 |
if (hasattr) { |
|
159 |
v = DwgUtil.getHandle(data, bitPos); |
|
160 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
161 |
handle = new int[v.size()-1]; |
|
162 |
for (int i=1;i<v.size();i++) { |
|
163 |
handle[i-1] = ((Integer)v.get(i)).intValue(); |
|
164 |
} |
|
165 |
handleVect = new ArrayList(); |
|
166 |
for (int i=0;i<handle.length;i++) { |
|
167 |
handleVect.add(new Integer(handle[i])); |
|
168 |
} |
|
169 |
firstAttribHandle = DwgUtil.handleBinToHandleInt(handleVect); |
|
170 |
v = DwgUtil.getHandle(data, bitPos); |
|
171 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
172 |
handle = new int[v.size()-1]; |
|
173 |
for (int i=1;i<v.size();i++) { |
|
174 |
handle[i-1] = ((Integer)v.get(i)).intValue(); |
|
175 |
} |
|
176 |
handleVect = new ArrayList(); |
|
177 |
for (int i=0;i<handle.length;i++) { |
|
178 |
handleVect.add(new Integer(handle[i])); |
|
179 |
} |
|
180 |
lastAttribHandle = DwgUtil.handleBinToHandleInt(handleVect); |
|
181 |
v = DwgUtil.getHandle(data, bitPos); |
|
182 |
bitPos = ((Integer)v.get(0)).intValue(); |
|
183 |
handle = new int[v.size()-1]; |
|
184 |
for (int i=1;i<v.size();i++) { |
|
185 |
handle[i-1] = ((Integer)v.get(i)).intValue(); |
|
186 |
} |
|
187 |
handleVect = new ArrayList(); |
|
188 |
for (int i=0;i<handle.length;i++) { |
|
189 |
handleVect.add(new Integer(handle[i])); |
|
190 |
} |
|
191 |
seqendHandle = DwgUtil.handleBinToHandleInt(handleVect); |
|
192 |
} |
|
193 |
} |
|
194 |
/** |
|
195 | 72 |
* @return Returns the blockHeaderHandle. |
196 | 73 |
*/ |
197 | 74 |
public int getBlockHeaderHandle() { |
Also available in: Unified diff