root / branches / FMap_CAD / libraries / libFMap / docs / AnĂ¡lisis CAD.html @ 3513
History | View | Annotate | Download (15.8 KB)
1 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
---|---|
2 |
<HTML>
|
3 |
<HEAD>
|
4 |
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=iso-8859-1"> |
5 |
<TITLE>Análisis CAD</TITLE> |
6 |
<META NAME="GENERATOR" CONTENT="OpenOffice.org 1.1.1 (Linux)"> |
7 |
<META NAME="CREATED" CONTENT="20050316;8512200"> |
8 |
<META NAME="CHANGED" CONTENT="20050316;11573900"> |
9 |
</HEAD>
|
10 |
<BODY LANG="es-ES" DIR="LTR"> |
11 |
<P><A NAME="1_Capas"></A><FONT SIZE=6>Análisis CAD<BR><FONT SIZE=5><A HREF="#1_Capas">1. |
12 |
Capas</A><BR><A HREF="#2_Geometrias">2. Geometrías</A><BR><A HREF="#3_Editor">3. |
13 |
Editor</A><BR><BR>1. Capas<BR></FONT></FONT>Los ficheros de CAD se |
14 |
van a abrir mediante una capa colección (a partir de ahora
|
15 |
<B>capa CAD</B>) de la cual colgarán las capas individuales |
16 |
correspondientes a las capas internas del fichero de CAD (a partir de |
17 |
ahora <B>capa interna CAD</B>). Durante la edición, aparece el |
18 |
concepto de capa activa que es distinto al concepto de capa activa |
19 |
mantenido en FMap. Utilizaremos el término <B>capa en edición</B> |
20 |
para referirnos a la capa interna CAD sobre la que se insertarán
|
21 |
las geometrías dibujadas durante la edición y el |
22 |
término <B>capa activa</B> para la capa/s seleccionada/s |
23 |
cuando no estamos editando sobre la que se realizan operaciones de |
24 |
zoom al tema, selección, ... De esta manera para editar un
|
25 |
archivo CAD pondremos como capa activa la capa CAD del fichero que |
26 |
queremos editar y diremos a gvSIG que queremos comenzar la edición.
|
27 |
En ese instante, una de las capas internas CAD (usualmente la capa |
28 |
cero) se pondrá como capa en edición y no podremos |
29 |
poner como capa en edición ninguna capa que no pertenezca a la
|
30 |
capa que estamos editando.<BR><BR> Las capas |
31 |
internas CAD tienen una serie de atributos:</P>
|
32 |
<UL>
|
33 |
<LI><P STYLE="margin-bottom: 0cm">Visibilidad: Toda capa en gvSIG |
34 |
tiene ese atributo, por lo que ya está implementado
|
35 |
</P>
|
36 |
<LI><P STYLE="margin-bottom: 0cm">En edición: Cuando se pone |
37 |
en edición una capa CAD, sólo una de sus capas |
38 |
internas CAD estará en edición. |
39 |
</P>
|
40 |
<LI><P STYLE="margin-bottom: 0cm">Bloqueada: No se permite la |
41 |
edición sobre ella
|
42 |
</P>
|
43 |
<LI><P STYLE="margin-bottom: 0cm">Color de dibujo.</P> |
44 |
<LI><P>Tipo de linea.</P> |
45 |
</UL>
|
46 |
<P><A NAME="2_Geometrias"></A><BR><FONT SIZE=5>2. Geometrías<BR></FONT> |
47 |
Las geometrías de CAD serán como las geometrías |
48 |
de FMap pero con algunas características adicionales ya que
|
49 |
deberán de tener un color (permitiéndose los valores |
50 |
típicos de un campo de color más los valores "por |
51 |
capa" y "por bloque") y un tipo de linea asociado. |
52 |
Además, para la realización del snapping, toda |
53 |
geometría deberá de devolver una serie de puntos de |
54 |
snapping a los que ajustar los puntos que introduce el usuario y para |
55 |
el uso de la herramienta por defecto, deberá de devolver los
|
56 |
puntos sobre los que se situarán handlers para la modificación |
57 |
de los mismos.<BR><BR> Los puntos a los que |
58 |
se puede ajustar mediante el snapping son los siguientes: <!--[if !supportLists]--><!--[endif]--></P> |
59 |
<UL>
|
60 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Punto |
61 |
más cercano</FONT> |
62 |
</P>
|
63 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Punto |
64 |
final</FONT>
|
65 |
</P>
|
66 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Punto |
67 |
medio</FONT>
|
68 |
</P>
|
69 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Centro</FONT> |
70 |
</P>
|
71 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt"><FONT FACE="times new roman">T</FONT>angente</FONT> |
72 |
</P>
|
73 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Perpendicular</FONT> |
74 |
</P>
|
75 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Cuadrante</FONT> |
76 |
</P>
|
77 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Punto |
78 |
de inserción</FONT> |
79 |
</P>
|
80 |
<LI><P STYLE="line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Punto |
81 |
intersección</FONT> |
82 |
</P>
|
83 |
</UL>
|
84 |
<P>Distinguimos dos tipos de geometrías, las simples y las |
85 |
complejas. La manera de utilizar geometrías complejas será |
86 |
mediante una geometría especial que sea una colección |
87 |
de geometrías. Algunas de las geometrías simples pueden |
88 |
dibujarse especificando distintas coordenadas y todas pueden |
89 |
dibujarse mediante el uso del ratón y mediante el uso de la
|
90 |
consola. Tenemos la siguiente clasificación de geometrías |
91 |
junto con sus distintos métodos de dibujado:</P> |
92 |
<UL>
|
93 |
<LI><P>Simples |
94 |
</P>
|
95 |
</UL>
|
96 |
<UL>
|
97 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Punto. |
98 |
</FONT>
|
99 |
</P>
|
100 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Línea. |
101 |
Permite dibujar una línea especificando el punto de inicio y
|
102 |
el punto final. Como se ha comentado se pueden elegir entre varias |
103 |
opciones a la hora de indicar estos puntos, por ejemplo una vez |
104 |
dibujado el punto de inicio podemos definir el punto final |
105 |
especificando la longitud del segmento y su orientación
|
106 |
(ángulo).</FONT> |
107 |
</P>
|
108 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Arco.</FONT> |
109 |
<FONT SIZE=2 STYLE="font-size: 11pt">Un arco es una porción |
110 |
de un círculo. Se define mediante tres puntos. Hay varios
|
111 |
métodos para dibujar un círculo:</FONT> |
112 |
</P>
|
113 |
<UL>
|
114 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Tres |
115 |
puntos (inicio, segundo y final).</FONT>
|
116 |
</P>
|
117 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Inicio, |
118 |
centro y final.</FONT>
|
119 |
</P>
|
120 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Inicio, |
121 |
centro, longitud de la cuerda.</FONT>
|
122 |
</P>
|
123 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Inicio, |
124 |
final, radio.</FONT>
|
125 |
</P>
|
126 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Inicio, |
127 |
final, ángulo incluído.</FONT> |
128 |
</P>
|
129 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Inicio, |
130 |
final, dirección inicial.</FONT> |
131 |
</P>
|
132 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Inicio, |
133 |
radio, ángulo.</FONT> |
134 |
</P>
|
135 |
</UL>
|
136 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt"><FONT FACE="times new roman">C</FONT>írculo. |
137 |
Se especifica mediante cualquiera de los siguientes métodos:.</FONT> |
138 |
</P>
|
139 |
<UL>
|
140 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Centro, |
141 |
Radio.</FONT>
|
142 |
</P>
|
143 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Centro, |
144 |
Diámetro.</FONT> |
145 |
</P>
|
146 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Dos |
147 |
puntos.</FONT>
|
148 |
</P>
|
149 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Tres |
150 |
puntos.</FONT>
|
151 |
</P>
|
152 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Radio, |
153 |
tangente, tangente</FONT>
|
154 |
</P>
|
155 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Convertir |
156 |
arco a círculo.</FONT> |
157 |
</P>
|
158 |
</UL>
|
159 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Elipse. |
160 |
Métodos para dibujar una elipse:</FONT> |
161 |
</P>
|
162 |
<UL>
|
163 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Eje, |
164 |
eje.</FONT>
|
165 |
</P>
|
166 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Eje, |
167 |
rotación.</FONT> |
168 |
</P>
|
169 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Centro, |
170 |
eje.</FONT>
|
171 |
</P>
|
172 |
<LI><P STYLE="line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Centro, |
173 |
rotación.</FONT> |
174 |
</P>
|
175 |
</UL>
|
176 |
</UL>
|
177 |
<UL>
|
178 |
<LI><P>Complejas</P> |
179 |
</UL>
|
180 |
<UL>
|
181 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%">P<FONT SIZE=2 STYLE="font-size: 11pt">olilínea. |
182 |
Es una entidad formada por un conjunto de líneas y/o arcos.</FONT> |
183 |
</P>
|
184 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Rectángulo. |
185 |
Se dibuja un rectángulo especificando sus esquinas opuestas.
|
186 |
Por defecto se dibuja paralelo a la alineación del grill.
|
187 |
Debe permitir la opción de dibujar un cuadrado.</FONT> |
188 |
</P>
|
189 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Dibujar |
190 |
polígonos.</FONT> <FONT SIZE=2 STYLE="font-size: 11pt">Están |
191 |
compuestos por un mínimo de 3 lados de igual longitud (en
|
192 |
otros programas de CAD tienen un máximo de alrededor de 1000
|
193 |
lados). Métodos para dibujar un polígono:</FONT> |
194 |
</P>
|
195 |
<UL>
|
196 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Centro |
197 |
y distancia del centro a cada vértice.</FONT> |
198 |
</P>
|
199 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Centro |
200 |
y vértice (se especifica la ubicación de un vértice).</FONT> |
201 |
</P>
|
202 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Centro |
203 |
y distancia al punto medio de un lado.</FONT>
|
204 |
</P>
|
205 |
</UL>
|
206 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Spline. |
207 |
Es una curva suave definida por un conjunto de puntos. Se define |
208 |
especificando los puntos que la definen. Debe tener la opción
|
209 |
de Tolerancia, que determina con cuanta precisión la spline
|
210 |
se ajusta al conjunto de puntos que se especifica.</FONT>
|
211 |
</P>
|
212 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Bloques. |
213 |
Los bloques son unas entidades especiales que una vez guardadas |
214 |
pueden ser insertadas y manipuladas en el dibujo como una entidad |
215 |
única. Las operaciones con bloques más comunes son:</FONT> |
216 |
</P>
|
217 |
<UL>
|
218 |
<LI><P STYLE="margin-bottom: 0cm; line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Crear |
219 |
un bloque.</FONT>
|
220 |
</P>
|
221 |
<LI><P STYLE="line-height: 150%"><FONT SIZE=2 STYLE="font-size: 11pt">Insertar |
222 |
un bloque.</FONT>
|
223 |
</P>
|
224 |
</UL>
|
225 |
</UL>
|
226 |
<P STYLE="line-height: 150%"><A NAME="3_Editor"></A><FONT SIZE=6>3. |
227 |
Editor<BR></FONT>El editor de geometrías se dispondrá |
228 |
en dos capas, la capa del modelo y la capa de la interfaz, con el fin |
229 |
de que independientemente de que se añadan las geometrías |
230 |
desde la consola o mediante el uso del ratón, la ejecución |
231 |
de las acciones pase siempre por los mismos métodos del
|
232 |
modelo. Para entender este apartado conviene estar mínimamente
|
233 |
familiarizado con la interfaz gráfica de AutoCAD 2004 o
|
234 |
similares.<BR><FONT SIZE=2><BR></FONT><FONT SIZE=4>3.1 Modelo del |
235 |
editor</FONT></P> |
236 |
<P STYLE="line-height: 150%">El modelo del editor tendrá una |
237 |
herramienta seleccionada mediante la cual operará con las
|
238 |
geometrías de las capas internas CAD (la capa interna CAD en
|
239 |
edición si la herramienta es de dibujo). Cada herramienta
|
240 |
viene definida por un autómata finito determinista en el que
|
241 |
las transiciones entre estados vienen definidas por la acción
|
242 |
del usuario con la herramienta (introducción de un punto,
|
243 |
introducción de un texto, cancelar, ...) y los estados
|
244 |
identifican el estado actual de la herramienta (esperando un punto, |
245 |
terminada, ...). Por ejemplo, el diagrama de estados finitos de la |
246 |
herramienta linea sería el siguiente ) (para el AutoCAD 2004):</P> |
247 |
<P ALIGN=LEFT STYLE="line-height: 150%"><IMG SRC="cad/diagramas/linea.gif" NAME="Imagen1" ALIGN=LEFT WIDTH=500 HEIGHT=440 BORDER=0><BR CLEAR=LEFT>La |
248 |
edición de CAD se realizará sobre un MapControl. Para |
249 |
ello contamos con el inconveniente de que las herramientas de |
250 |
MapControl no tienen estado y han de pintar ellas toda la imagen. Por |
251 |
el contrario, las herramientas que estamos definiendo tienen un |
252 |
estado y al dibujar y operar deben conocer cuál es o cuáles |
253 |
son las geometrías seleccionadas, recibiendo un objeto sobre
|
254 |
el que dibujarán en el que ya están dibujadas las |
255 |
geometrías del fichero en edición. Para emplear |
256 |
herramientas de CAD utilizaremos pues una herramienta especial |
257 |
CADToolAdapter que capturará los eventos del ratón y de |
258 |
la consola de Andami, transformándolos en eventos de
|
259 |
transición entre estados para la herramienta de CAD
|
260 |
seleccionada. El CADToolAdapter deberá de dibujar la capa en
|
261 |
edición y luego delegar el dibujado en la herramienta CAD
|
262 |
seleccionada. Resumiendo, la herramienta CADToolAdapter servirá
|
263 |
de adaptador entre las facilidades que proporcional MapControl para |
264 |
las herramientas y las necesidades de las herramientas de CAD.<BR><BR> |
265 |
Las funciones del CADToolAdapter serán las siguientes:</P> |
266 |
<UL>
|
267 |
<LI><P STYLE="margin-bottom: 0cm">Mantener una referencia al |
268 |
<A HREF="./Edici%F3n vectorial en FMap.html">EditableFeatureSource</A> |
269 |
que está en edición. |
270 |
</P>
|
271 |
<LI><P STYLE="margin-bottom: 0cm">Mantener la selección |
272 |
actual de la fuente de datos editable. |
273 |
</P>
|
274 |
<LI><P STYLE="margin-bottom: 0cm">Traducir los eventos de ratón |
275 |
y las entradas por consola en transiciones entre estados de la |
276 |
CadTool seleccionada. |
277 |
</P>
|
278 |
<LI><P STYLE="margin-bottom: 0cm">Dibujar la fuente de datos y |
279 |
delegar el dibujado del estado actual de la herramienta en la |
280 |
CadTool seleccionada. |
281 |
</P>
|
282 |
<LI><P STYLE="margin-bottom: 0cm">Obtener los puntos de snap dado un |
283 |
punto y dibujar el efecto del snaping para la posición actual
|
284 |
del ratón sea cual sea el estado de la herramienta
|
285 |
seleccionada. |
286 |
</P>
|
287 |
<LI><P STYLE="margin-bottom: 0cm">Obtener el punto de rastreo para |
288 |
la posición actual del ratón si está activado</P> |
289 |
<LI><P STYLE="margin-bottom: 0cm">Traducir los puntos recibidos del |
290 |
MapControl de coordenadas de la imagen a coordenadas del mapa |
291 |
ajustando al punto de snap en caso haber alguno y estar activada |
292 |
dicha funcionalidad. |
293 |
</P>
|
294 |
<LI><P>Traducir los eventos del MapControl en transiciones en el |
295 |
estado de las herramientas de CAD.</P>
|
296 |
</UL>
|
297 |
<P>Para realizar el snapping, se deben de introducir en un índice |
298 |
espacial, los puntos de snapping de todas las geometrías,
|
299 |
además de que deben mantenerse actualizados dichos índices. |
300 |
Esto quiere decir que si se modifica una geometría se deberán |
301 |
de eliminar los puntos de la geometría antes de la
|
302 |
modificación e insertar los puntos de la geometría tras |
303 |
la modificación. <BR><BR><BR> |
304 |
</P>
|
305 |
<P>Para soportar todo lo anterior las capas vectoriales FLyrVect
|
306 |
dibujarán la capa en edición (y no la capa original) |
307 |
cuando se ponen en estado de edición.<BR><BR><FONT SIZE=4>3.2 |
308 |
Interfaz del editor</FONT><BR>La interfaz del editor será un |
309 |
MapControl más una consola de edición interactiva. |
310 |
Dicha consola deberá de tener las siguientes características:</P> |
311 |
<UL>
|
312 |
<LI><P STYLE="margin-bottom: 0cm">Histórico de introducciones |
313 |
del usuario |
314 |
</P>
|
315 |
<LI><P STYLE="margin-bottom: 0cm">Tener el foco implícitamente |
316 |
siempre |
317 |
</P>
|
318 |
<LI><P>Aspectos usuales de toda consola |
319 |
</P>
|
320 |
</UL>
|
321 |
<P><BR><BR> |
322 |
</P>
|
323 |
</BODY>
|
324 |
</HTML>
|