Contenidos - El Foro de Gabriel Ortiz

Anuncio
Programando con Avenue
Sonia Carretero Antón
Nieves Lantada Zarzosa
Adaptació: SIGTE
28/02/00
Aclaración
Hace tiempo que envie este fichero a otros tantos como vosotros que me lo solicitaron, pero
nadie me ha dicho si le ha sido de utilidad. Se trata de un fichero comprimido (.zip) con
windows, que contiene varios fichero de formato word (uno por capitulo). Lo que si me
gustaria deciros es que no es una versión definitiva, ya que una compañera (Sonia Carretero y
yo), hicimos un borrador para la empresa ESRI, quien se encargaría de hacer correcciones e
insertar las figuras que falta. Nunca más volvimos a saber de la publicación y nuestra
relación con la empresa no fue mejorando por decirlo de alguna manera. Espero que os
valga, y ante todo supongo que no es necesario que insista en que su uso no debería ser con
afán de lucro, sino meramente educativo o de investigación.
Mail rebut el, 24/02/00 a les 16:27 hores de
[email protected]
Contenido
Índice
1. El entorno de desarrollo de ArcView
2. Creación de scripts en Avenue
3. Introducción a objetos y requerimientos
4. Comprensión de las clases en ArcView
5. Comprensión de eventos
6. Personalización de la aplicación y documento proyecto
7. Ramificación y bucles
8. Trabajo con temas y leyendas
9. Creación y consulta de tablas
10. Creación de shapes y gráficos
11. Trabajo con GUIs de documentos
12. Construcción de extensiones
Apéndices
A. Leer y escribir ficheros de texto
B. Comunicación con otro software
C. La demo Acme
D. Solución a los ejercicios
E. Comandos de requerimiento en Avenue
F. Teclas de función en ArcView
G. Contrato de licencia
H. Instalación de datos
I. Reconocimiento de datos
Evaluación del curso
S E C C I Ó N 1
El entorno de desarrollo de ArcView
El Entorno de desarrollo de ArcView................................................................ 1-2
Los controles y GUIs de documentos de ArcView..................................... 1-4
Personalización de la interfaz de usuario................................................... 1-6
La Caja de Diálogo de Personalización............................................................ .1-8
La lista de propiedades.............................................................................. 1-10
Establecer las propiedades del control...................................................... 1-12
Establecer las propiedades para los menús............................................... 1-14
Personalización de la ventana del proyecto............................................... 1-16
Salvar su GUI personalizada...................................................................... 1-18
Acceso a su GUI personalizada................................................................. 1-20
Ejercicio 1: visión de conjunto.................................................................... 1-22
Ejercicio 1: Diseño de una GUI personalizada................................................ 1-25
El Entorno de desarrollo de ArcView
 Lenguaje de programación orientado a objetos.
 Una interfaz gráfica para la personalización y desarrollo
fig (1-2)
El Entorno de desarrollo de ArcView
El entorno de desarrollo del Gis de ArcView® consiste en un lenguaje de programación orientado a objetos y una interfaz gráfica para la
personalización. La interfaz gráfica, incluye la Caja de Diálogo de Personalización (Customize) y el Editor de Scripts, que le permiten
escribir, ejecutar y depurar el código de Avenue y la personalización de la interfaz de usuario gráfica standard (GUI), mientras trabaja en el
entorno de desarrollo familiar de ArcView.
Caja de Diálogo de Personalización
Use la Caja de Diálogo de Personalización para editar menús, botones, herramientas y campos de menú y sus propiedades.
Editor de Scripts
Use el Editor de Scripts para crear y testear los scripts de Avenue. Aprenderá más sobre el Editor de Scripts en la sección siguiente.
Los controles y GUIs de documentos de ArcView
 Los documentos GUI están formados por grupos de control.
 Los controles son menús, botones, herramientas y campos de menú.
 Cada control se asocia a un script de Avenue
fig(1-4)
Los controles y GUIs de documentos de ArcView
Cada documento de ArcView tiene una GUI. La GUI está formada por los menús, botones, herramientas y campos de menú que se usan
en el documento. Los menús, botones y herramientas aparecen representados en tres barras horizontales: la barra de menu, la barra de
botones y la barra de herramientas. A estas barras y campos de menú se les llama también grupos de control.
Controles.
Al campo de menú, botón y herramienta individual se les llama controles.
Grupos de control.
Son coleccciones de controles e incluye barras de menú (menus), menús, barra de botones (botones), barra de herramientas
(herramientas) y grupos de campos de menú.
Scripts de Avenue.
Cada control (menú, herramienta, o campos de menú) tiene asociado un script de Avenue. Usted puede ver, copiar o editar el script
de cada control.
Personalización de la interfaz de usuario
 Personaliza una interfaz de usuario gráfica (GUI)
 Construye nuevas funciones para aplicaciones específicas
 Crea herramientas y botones personalizados
 Empaqueta para la distribución.
fig(1-6)
Personalización de la interfaz de usuario
Avenue proporciona al usuario un entorno de desarrollo fácil para la personalización y creación de aplicaciones de ArcView. Use Avenue
para simplificar operaciones, construir nuevas funciones o desarrollar aplicaciones completas con GUIs personalizadas.
Use Avenue para personalizar ArcView
Utilizará Avenue para personalizar la interfaz gráfica de usuario (GUI). En esta sección, se introducen las bases de la GUI de
ArcView, y aprenderá a crear nuevos menús, botones y herramientas para modificar la GUI.
Cree interfaces personalizadas
Con Avenue, puede crear interfaces personalizadas para una aplicación. Por ejemplo, una GUI puede ser diseñada para las tareas
realizadas por una aplicación de planificación ambiental, mientras otra GUI podrá ser hecha para una aplicación que busca nuevas áreas
de mercado.
Simplifique tareas comunes
Para agilizar operaciones, puede combinar algunos pasos en un campo de menú o botón.
Comuníquese con otro software
Avenue proporciona herramientas que permiten a ArcView trabajar y comunicarse con otras aplicaciones. Avenue utiliza métodos
estándar para transferir datos e instrucciones.
Empaquete GUIs personalizadas
Puede empaquetar y distribuir su versión personalizada de ArcView.
La Caja de Diálogo de Personalización
 Modifica las GUIs de los documentos.
 Las GUIs de los documentos están formadas por controles.
 Selecciona o añade un control y edita sus propiedades
Doble Clic
Tipo de documento GUI
Control de asignación de la Categoría
Editor de
Control
Lista de
propiedades
La Caja de Diálogo de Personalización
La Caja de Diálogo de Personalización es la interfaz visual que se usa para personalizar las GUIs de los documentos. Con esta caja puede
mover, añadir o borrar controles, o cambiar sus propiedades.
Para abrir la Caja de dialogo de personalización, escoja Personalizar desde el menú Project (Proyecto) o haga doble clic en un espacio en
blanco de la barra de botones o de herramientas.
Tipo de documento GUI
Escoja el tipo de documento GUI según los controles que quiera personalizar.
Categoría del grupo de control
Seleccione la categoría del grupo de control que quiere personalizar. Cuando escoja una categoría, el grupo de control
seleccionado, aparecerá en el Editor de Control.
Editor de control
El Editor de Control muestra los controles especificados por el tipo de documento y la categoría que usted seleccione. Use el Editor
de Control para seleccionar un control al tiempo que lo edita. Use el Editor de Control para añadir o borrar controles y separadores.
Lista de propiedades
Las propiedades definen como aparece representado y como funciona un control. La lista de propiedades muestra las propiedades
actuales establecidas para el control seleccionado.
Deshacer la edición desde la Caja de Diálogo de Personalización.
Puede deshacer la última acción usando <Control>+Z (UNIX y PC) o <Command>+Z (Macintosh). ArcView mantiene el estado
deshacer hasta el siguiente comando. No puede rehacer una acción deshecha.
Mover controles
Use el ratón para seleccionar un control, entonces arrástrelo y déjelo en la nueva posición.
La lista de propiedades
 Las propiedades definen como se representa y como funciona un control
 Seleccione un control para ver sus propiedades
 Cada grupo de control tiene una lista de propiedades distinta.
fig.(1-10)
La lista de propiedades
Cada control tiene unas propiedades que puede cambiar. En la lista de propiedades aparece el nombre de la propiedad y los valores
asignados al control seleccionado.
La lista de propiedades es diferente para cada categoría de controles (menús, botones, herramientas y campos de menú). Por ejemplo,
botones y herramientas tienen una propiedad Icon (icono); menús y campos de menús no. Estos últimos tienen una propiedad Label
(etiqueta) que no tienen botones y herramientas.
Para más información...
Las propiedades de los controles pueden asignarse con scripts de Avenue. Este tema se comenta con más detalle en la sección 11
de este manual, Trabajando con GUIs de documentos.
Establecer las propiedades del control
Doble clic para cambiar una propiedad
Cursor
Ayuda
Icono
Establecer las propiedades del control
Algunas propiedades conmutan entre true y false (verdadero y falso respectivamente), otras requieren una cadena, y otras presentan una
ventana de cremallera con una lista de posibles elecciones. Puede cambiar una propiedad mediante doble clic sobre el nombre de la
propiedad o sobre el valor actual que tiene asignado.
Propiedad Cursor
Define el cursor que aparecerá cuando se aplique una herramienta en la ventana del documento.
Propiedad Disabled (inhabilitado)
Define si un control está inhabilitado (true) o habilitado (false). Un control inhabilitado aparece en gris y no puede seleccionarse.
Propiedad Help (ayuda)
Define la cadena de ayuda que aparecerá en la barra de estado de la ventana de la aplicación, tanto si está asociada a una
herramienta como a un botón.
Propiedad Help Topic (ayuda del tema)
Define la ayuda en línea asociada con un control. Puede personalizar la ayuda en línea de ArcView y cargarla en el Icon Manager
(Gestor de iconos).
Propiedad Icon (icono)
Define el nombre del icono que aparece en el botón o herramienta. Puede crear sus propios gráficos y luego cargarlos en el gestor
de iconos.
Propiedad Invisible
Define si un control está invisible (true) o visible (false). Si un control está invisible no aparecerá en la GUI.
Propiedad Tag (comentario)
Almacena un texto adicional (con el propósito de identificarlos o comentarlos) necesaria para un control. Los comentarios de los
controles se almacenan con el proyecto.
Establecer las propiedades para los menús
 La propiedad Label (etiqueta) asigna una cadena de texto
Asigna una clave de acceso con un ‘&’
La clave de acceso está subrayada
 La propiedad Shortcut asigna una combinación de teclas de función
Etiqueta
Teclas de función
Establecer las propiedades para los menús
Las propiedades Label (etiqueta) y Shortcut son válidas para menús y campos de menú. Las claves del acceso y de función permiten
acceder al menú desde el teclado. Son usadas como una alternativa al ratón.
Etiqueta
La propiedad Etiqueta especifica el texto para un menú o campo de menú.
Claves de acceso
En la propiedad etiqueta, teclee un ampersand (&) delante de la letra/tecla de acceso. En el menú, esta letra aparece subrayada.
Por ejemplo, las propiedades etiqueta para el menú File y el campo de menú Save Project son &File y &Save Project respectivamente.
Para acceder al menú File y Save Project, el usuario tecleará <Alt>+F, entonces S (sin la tecla <Alt>).
Las claves de acceso deben ser únicas para cada menú, y para cada campo de menú. La clave de acceso es comúnmente la primera letra
de cada campo de menú, pero puede ser cualquier letra.
Shortcut
Use esta propiedad para especificar la combinación de teclas de función que darán acceso directo a un campo de menú (sin el paso
intermedio de acceder al menú). Escoja la combinación deseada desde la caja de diálogo Shortcut. En el menú desplegable, la teclas de
función aparecerán a la derecha del campo de menú.
Por ejemplo, la elección de menú Save Project tiene las teclas de función Ctrl+S. Para salvar un proyecto, el usuario tecleará <Crtl>+S (sin
acceder primero al menú File).
Vea el apéndice F de este manual donde aparece una lista de estas teclas.
Nota
Los campos de menú no reconocen el acceso mediante teclas de función.
Personalización de la ventana del proyecto
 Maneja las interfaces de usuario de los documentos
 Copia y borra las interfaces de usuario de los documentos
 Actualiza las propiedades de las interfaces de usuario de los documentos
fig. (1-16)
Personalización de la ventana del proyecto
En la Caja de Diálogo de Personalización, haga clic en el botón Edit (Editar) para acceder a la Caja de Diálogo de Personalización de
Tipos. Esta última caja le permite editar las propiedades de las interfaces de usuario del documento que aparece en la ventana del
proyecto. Puede añadir o borrar tipos de documentos, cambiar el orden en el que estos aparecen o cambiar el icono asociado con ellos.
Por ejemplo, si su proyecto tienen cinco vistas, tres contienen datos para países y dos para ciudades, puede crear los tipos “cities” y
“countries” que aparecerán en la ventana del proyecto. Entonces podrá asociar la vista city con el tipo cities y la vista country con el tipo
countries. Entonces cuando seleccione el icono cities en la ventana del proyecto, sólo aparecerán listadas las vistas que están asociadas
con el tipo.
Deshacer su ediciones en la Caja de Diálogo de Personalización de Tipos.
Puede deshacer la última edición en la Caja de Diálogo de Personalización de Tipos pulsando crtl-Z (UNIX y Windows) o CommandZ (Macintosh).
Documentos virtuales
Los nuevos tipos de documentos se refieren a documentos virtuales. Los documentos virtuales tienen su propio tipo de documento vista,
tabla, composición, gráfico o script. La Caja de Diálogo de Personalización de tipos permite manipular documentos virtuales. Para más
información, vea la ayuda sobre este tema: Customize Types (Dialogo box), Virtual documents.
Salvar su GUI personalizada
 Salve la GUI con el proyecto en curso.
Fig.
 Salve la GUI con el proyecto llamado default.apr en su directorio home
 Restablezca la GUI original desde default.apr en el directorio de instalación
fig. (1-18)
Salvar su GUI personalizada
Después de la personalización de ArcView, guarde los cambios en el proyecto. Los cambios pueden guardarse para un proyecto
específico, para un proyecto personal por defecto o para el proyecto por defecto del sistema de ArcView.
Guardar los cambios en un fichero de proyecto específico
Si guarda los cambios para un proyecto específico, un proyecto creado por el usuario (ej. Myproj.apr), el usuario que abra más
tarde el proyecto verá la GUI personalizada. Los cambios son únicos para el proyecto y no afectan a otros proyectos.
Make Default (Valores por omisión)
Si hace clic en el botón Make Default (Valores por omisión) en la Caja de Diálogo de Personalización, el fichero de proyecto
personal por defecto llamado default.apr se reemplaza en el directorio home. Cada vez que usted inicie ArcView (o cualquiera que
comparta el mismo directorio home o acceso), visualizará esta GUI.
Reset (Restablecer)
La apariencia original de los controles de ArcView y los scripts asociados se establece en el proyecto por defecto del sistema de
ArcView llamado default.apr, el cual se almacena en el directorio de instalación de ArcView (ej. c:\win32app\arcview\etc).
Si quiere volver a la GUI original de ArcView después de hacer los cambios, haga clic en el botón Reset (Restablecer).
El fichero de proyecto por defecto del sistema de ArcView puede modificarse, pero las modificaciones afectarán a todos los usuarios de
esta copia de ArcView. Debería hacerse sólo después de muchas consideraciones, ya que será necesaria una reinstalación del software si
este fichero se sobrescribe y no fue salvado en una copia.
Reemplazar el fichero de proyecto del sistema default.apr
Antes de reemplazar el fichero de proyecto del sistema, default.apr en el directorio de instalación de ArcView, haga una copia. Entonces
escriba un script de Avenue que use el requerimiento MakeSysDefault. Para más información vea la ayuda sobre este tema: System and
User Default Projects.
Acceso a su GUI personalizada
 Cuando se inicializa ArcView, lee los ficheros de proyecto en este orden:
1. Proyecto del sistema por defecto
2. Proyecto home por defecto
3. Proyecto actual
fig. (1-20)
Acceso a su GUI personalizada
Cuando se inicia ArcView, se lee el fichero de proyecto del sistema, default.apr. Entonces se lee el proyecto por defecto (si existe uno) en
el directorio home del usuario. Finalmente, se abre el proyecto leído.
El proyecto por defecto de home y el proyecto actual contienen sólo la información que define los cambios del proyecto por defecto del
sistema. No hay más información en estos ficheros de proyecto, en cuanto a la GUI por defecto, no cambia. Por tanto, el usuario ve que
la GUI final es una combinación de estos tres ficheros.
Iniciar ArcView
Además de leer varios ficheros de proyecto durante la inicialización, ArcView también lee y ejecuta algunos scripts. Aprenderá como
modificar estos scripts en otras secciones.
Al iniciar ArcView, se leen los siguientes ficheros en este orden:
Personalizaciones que afectan a todos los usuarios:
$AVHOME/etc/startup
$AVHOME/etc/default.apr
script en el directorio de instalación
proyecto en el directorio de instalación
Personalización en su entorno de trabajo personal
$AVHOME/default.apr
Appl.Initialize
proyecto en el directorio home
script en default.apr de home
Personalización en un proyecto específico
aProject.apr
Appl.Initialize
su proyecto específico
script en el aProject.apr
Ejercicio 1 : visión de conjunto
 Experimente con la Caja de Diálogo de Personalización
 Cree su directorio de trabajo para almacenar los datos
 Los nombres de las rutas que necesita conocer
ruta para el directorio de trabajo:
ruta para el directorio de datos de partida:
ruta para el directorio de ejercicios:
ruta para el directorio de datos:
ruta para el directorio home:
 Instrucciones para iniciar ArcView
Para iniciar ArcView:
 Tres tipos de pasos: obligatorio, opcional y propuesto:
Paso 1
Paso 1
(opcional)
1
Ejercicio 1 : visión de conjunto
En este ejercicio, usará la Caja de Diálogo de Personalización para hacer personalizaciones sencillas.
Crear un directorio temporal
Durante este curso, creará algunos scripts de Avenue y necesitará un lugar donde almacenarlos. Antes de iniciar el primer ejercicio,
creará un directorio de trabajo llamado pavetemp. Almacenará todos sus datos y los ficheros en él. Cree el directorio usando los
comandos apropiados de su sistema operativo o con el administrador de archivos. Si es necesario, el instructor le explicará como crear el
directorio pavetemp. El instructor puede haberlo creado ya para usted.
Directorio de datos de partida
El instructor le dirá donde se encunetran los datos necesarios para este curso. Anote la ruta en el espacio proporcionado en la
página anterior. El directorio principal se llama pave y contiene los subdirectorios exercice y data.
Directorio de ejercicio y datos
El directorio exercice contiene un proyecto (*.apr) para cada ejercicio de este manual. El directorio data contiene los datos para
utilizar en cada ejercicio. El instructor le dará las rutas de estos directorios. Es conveniente, anotarlos en el espacio proporcionado para
ellos en la página anterior.
Pasos obligatorios
Los pasos obligatorios proporcionan las instrucciones detalladas. Los pasos que implican escribir un script, por ejemplo, conocer
cada objeto y requerimiento que se necesita para realizar una tarea.
Pasos opcionales
Pasos opcionales que puede realizar si el tiempo se los permite.
Pasos propuestos
Los pasos propuestos puede realizarlos también si tiene tiempo. Sin embargo, estos pasos no proporcionan instrucciones
detalladas; sólo describen la tarea a realizar, permitiéndole, al estudiante, determinar el mejor camino para llevarla a cabo.
Ejercicio 1: Diseño de un GUI personalizado
Paso 1
Cree el directorio pavetemp
Paso 2
Inicie ArcView y abra un proyecto
Paso 3
Borre y mueva los controles en la barra de botones de la vista
Paso 4
Modifique las propiedades invisible e inhabilitado
Paso 5
Determine las propiedades Icon y Help
Paso 6
Salve su GUI personalizada
Paso 7
Modifique el menú de la vista y la barra de herramientas
(opcional)
8
Asigne la propiedad Apply de las herrramientas
Ejercicio 1: Diseño de una GUI personalizada
Convenciones utilizadas en los ejercicios:
 Los nombres de ficheros, de documentos, nombre de botones y campos de menús aparecen en negrita.
 Use el botón izquierdo del ratón a menos que se indique de otra manera, o si se encuentra bajo sistema UNIX®.
 Los párrafos con instrucciones están sangrados.
Paso 1
Cree el directorio de trabajo
Durante este primer día de curso, creará algunos scripts de Avenue y necesitará almacenarlos.
Use su sistema operativo para crear el directorio pavetemp donde almacenar los datos. Si lo necesita, el instructor le explicará
como crear el directorio de trabajo pavetemp. (En algunos casos, el instructor puede haberlo creado ya para usted).
Paso 2:
Inicie ArcView y abra un proyecto
Inicie ArcView. Referirse al Ejercicio visión de conjunto (pág. 1-20)
Después de iniviar ArcView, abra el proyecto para este ejercicio.
Desde el menú File (Archivo), escoja Open Project (Abrir proyecto).
Haga doble clic en las carpetas de los directorios y navegue hasta el directorio exercice (vea las notas de la pág. 1-20). Haga doble
clic en ex1.apr para abrir el proyecto para este ejercicio.
Cuando abra el proyecto, verá una vista llamada Census Tracs.
En este ejercicio, aprenderá cómo diseñar una interfaz gráfica de usuario en ArcView usando la Caja de Diálogo de Personalización. Verá
también el efecto de salvar su GUI personalizada para diferentes ficheros de proyecto.
Paso 3
Borre y mueva los controles en la barra de botones de la vista
Usará la Caja de Diálogo de Personalización para borrar y mover los botones existentes en la barra de botones de la vista Census Tracts.
Con la vista Census Tracts activa, abra la Caja de Diálogo de Personalización mediante doble clic sobre un espacio en la barra de
botones o herramientas.
figura
Si quiere modificar la barra de botones de la vista, asigne View (Vista) a Type (tipo) y Buttons (botones) a Category (categoría).
En el Editor de Control (en el centro de la Caja de Diálogo de Personalización) verá una copia de la barra de botones de la vista. El botón
Save (salvar) está actualmente seleccionado.
Figura
Amplíe la Caja de Diálogo de Personalización para ver la barra de botones entera.
Suponga que su usuario no necesitará el botón Locate Address (localizar dirección, para la geocodificación interactiva), y también quiere
borrar el botón de la barra de botones.
Haga clic en el botón Locate Adress para seleccionarlo
figura
Ahora con clic en Delete (borrar). Mediante el botón de borrado, borrará sus propiedades.
Su cambio se refleja en el Editor de Control y en la barra de botones de la vista en la ventana de la aplicación.
figura
Luego, modificará la barra de botones moviendo el botón seleccionado del modo siguiente.
figura
En el Editor de Control, sitúe el cursor sobre el botón Select Features Using Graphic
(Selección gráfica de entidades).
Figura
Pulse y mantenga el botón del ratón y arrástrelo a la derecha del botón de consulta, entonces suelte el botón del ratón.
figura
Ahora pulse y mantenga el botón del ratón sobre el botón Clear Selected Features
(Borrado de entidades seleccionadas).
figura
Arrástrelo a la derecha del botón de la selección gráfica de entidades.
Figura
Paso 4
Modifique las propiedades invisible e inhabilitado
En este paso, trabajará con las propiedades de dos botones. Aprenderá como hacer visible y habilitar un botón en su GUI personalizada.
Primero, suponga que está construyendo el sistema de visualización en pantalla y quiere resaltar el botón guardar proyecto.
Haga clic en el botón Save Project (Guardar Proyecto) para seleccionarlo.
figura
En la lista de propiedades, haga doble clic en la propiedad Invisible para conmutar la asignación desde False (falso) a True
(verdadero).
figura
Observe que el botón está invisible en la barra de botones de la vista en la ventana de la aplicación (sin embargo es visible en la Caja de
Diálogo de Personalización).
figura
Ahora modificará el botón añadir tema para inhabilitarlo. Un control inhabilitado aparece en gris y no puede seleccionarse haciendo clic en
él.
Haga clic en el botón Add Theme (Añadir Tema) para seleccionarlo.
figura
En la Lista de Propiedades, haga doble clic en la propiedad Disabled (Inhabilitado) para cambiar el valor a True.
figura
Observe que el botón está inhabilitado en la barra de botones de la vista en la ventana de la aplicación.
figura
Desde la ventana de la aplicación, haga clic en el botón Add Theme para ver que su propiedad está también inhabilitada.
Puede inhabilitar o poner un control invisible cuando quiera restringir a los usuarios que utilicen ese control (por ejemplo, no quiere que el
usuario guarde el proyecto o añada temas a la vista).
Paso 5
Determine las propiedades Icon y Help
Luego, cambiará el icono de un botón, añadirá un nuevo botón y cargará un gráfico de usuario como icono del nuevo botón. También
añadirá alguna ayuda al nuevo botón.
Suponga que quiere modificar un icono que sus usuarios encuentran difícil de leer o incomprensible. Modificará el icono para el botón de
consulta.
En la Caja de Diálogo de Personalización, haga clic en el botón Query (Consulta) para seleccionarlo.
figura
En la lista de propiedades, haga doble clic en la propiedad Icon.
figura
En el gestor de iconos, elija el icono Q, entonces haga clic en OK.
figura
Su nuevo botón de consulta aparece en la barra de botones de la vista.
figura
Luego, añadirá un nuevo botón con el logotipo de una compañía al final de la barra de botones. Para este botón, cargará un bitmap
creado por el usuario en el gestor de iconos.
Haga clic en el botón Help (ayuda) para seleccionarlo.
Figura
En lugar de situar un botón nuevo a la derecha del botón Help, añadirá un separador para crear un espacio.
Haga clic en Separator (Separador) para insertar un botón después del separador.
figura
Haga clic en New para insertar un botón después del separador.
figura
Haga doble clic en la propiedad Icon para que aparezca el Gestor de Iconos, entonces pulse Load (Cargar).
En la ventana de búsqueda de ficheros, establezca la lista de ficheros de tipo Windows Bitmap (*.bmp), muévase hasta el
directorio data (vea las notas en la página 1-20) y entonces elija jtlogo.bmp rojo y azul y haga clic en OK.
Figura
El fichero jtlogo.bmp se cargará en el Gestor de Iconos
figura
Haga clic en OK para situar el icono en el nuevo botón.
figura
Cuando el usuario mueve el cursor sobre el botón, aparece una cadena de ayuda en la barra de estado. Ahora añadirá la ayuda al nuevo
botón.
En la Lista de Propiedades, haga doble clic en la propiedad Help (Ayuda).
figura
Teclee la cadena Información sobre JT Consultores en la caja de diálogo de Ayuda, entonces haga clic en OK.
figura
Para testear esta propiedad, mueva el cursor sobre el botón JT en la ventana de la aplicación y mire en la barra de estado para ver
la cadena de ayuda.
Figura
Herramienta de aviso para Microsoft Windows 95 y Microsoft Windows NT
Cuando el botón se posa en un botón o herramienta, aparece sobre el control una caja con un pequeño texto. A esto se le llama una
herramienta de aviso. Para crear una herramienta de aviso, haga doble clic en la propiedad Help, entonces en la caja de diálogo de Ayuda,
escriba la herramienta de aviso usando esta sintaxis: Tool Tip string77Status bar help string. Por ejemplo, la propiedad de Ayuda del botón
JT puede verse que es: JT Info//Information about JT Consultants. Para testear, observe directamente sobre el botón la herramienta. Para
más información, busque la ayuda sobre este tema: Help Property.
Paso 6
Salve su GUI personalizada
En este paso, verá el efecto de salvar una GUI personalizada para diferentes ficheros de proyecto. Salvará el proyecto en el fichero de
proyecto actual, entonces hará pequeños cambios y salvará el fichero de proyecto (default.apr) en su directorio home.
Active la ventana de proyecto. Desde el menú File (Archivo), elija Save Project As (Guardar proyecto como). Mueva su directorio
pavetemp (vea pág. 1-20) y salve el proyecto como paveex1.apr.
Ahora haga pequeños cambios en la interfaz y cree un proyecto personal por defecto.
Active la vista. En la Caja de Diálogo de Personalización, asigne View (Vista) a Type (Tipo) y Buttons (Botones) a Category
(Categoría).
En la Caja de Diálogo de Pesonalización, haga clic en el botón Save (salvar) para seleccionarlo. Haga doble clic en la propiedad Invisible
para conmutarla a False, haciendo visible de esta forma el botón Save.
Haga clic en el botón JT para seleccionarlo. Haga doble clic en la propiedad Invisible para conmutarla a True, de esta forma el
botón se hará invisible.
En la Caja de Diálogo de Personalización, haga clic en Make Default (Valor por omisión). Esto salvará los cambios en el fichero de
proyecto llamado default.apr en su directorio home.
Cierre la Caja de Diálogo de Personalización y desde el menú File (Archivo), elija Exit (Salir) para salir de ArcView. Haga clic en No
cuando pregunte para salvar los cambios en paveex1.apr.
Ahora tiene dos barras de botones de la vista diferentes: una en el directorio pavetemp y otra en el directorio home. Ahora examine la
diferencia entre los dos ficheros.
Inicie ArcView
Haga clic en New (nuevo) para abrir una vista nueva y examine la GUI creada desde default.apr, en su directorio home. EL botón
Save (Guardar) está visible y el botón JT invisible. Observe también que el botón Query (consulta) tiene una Q como icono.
figura
Active la ventana del proyecto. Desde el menú File (Archivo), elija Open Project (Abrir Proyecto), haga clic en No cuando pregunte
para salvar los cambios en el proyecto Untitled (Sin título).
Muévase al directorio pavetemp y abra paveex1.apr. Examine la GUI personalizada que guardó en paveex1.apr. El botón Save
(Guardar) está invisible, el JT está visible, y el botón Add Theme (Añadir Tema) está inhabilitado.
figura
Para restablecer la GUI original de ArcView, abra la Caja de Diálogo de Personalización y haga clic en Reset (Restablecer). Esta GUI está
almacenada en el proyecto llamado default.apr en el directorio de instalación de ArcView.
figura
Active la ventana de proyecto y desde el menú File (Archivo) elija Close Project (Cerrar Proyecto) y no guarde el proyecto.
Ahora borrará el fichero default.apr en su directorio home.
Use el sistema operativo o el gestor de archivos para moverse al directorio home (vea la pág. 1-20) y borre el fichero default.apr.
Si deja el fichero default.apr en el directorio home, cuando inicie ArcView y abra un proyecto verá estas personalizaciones.
Paso 7
Modifique el menú de la vista y la barra de herramientas
(opcional)
En primer lugar personalizará la barra de menú de la vista, añadiendo un nuevo menú con campos para cada tema en la vista Atlanta.
Abra el proyecto paveex1.apr.
Con la vista Census Tracs activa, use la Caja de Diálogo de Personalización para cambiar la Category a Menus
. Haga clic en &Theme (&Tema) para seleccionarlo, entonces haga clic en el New Menu (Nuevo Menú). Se creará un menú nuevo a la
derecha del menú Theme (Tema).
figura
Luego, cambiará el texto en su nuevo menú y añadirá una clave de acceso.
Haga doble clic en la propiedad Label y teclee &Layers en la caja de diálogo. Haga clic en OK.
figura
Se creará un nuevo menú llamado Layers (Capas) en la barra de menú.
figura
Ahora está preparado para diseñar los campos del menú que los nombres de los temas de la vista Census Tracts.
Haga clic en New Item (nuevo campo) tres veces para crear tres campos de menú. Haga clic en la primera elección para
seleccionarla y doble clic en Label Property y teclee como nueva etiqueta &Population, entonces haga clic en OK.
Haga lo mismo para los otros dos campos y etiquételos con &Income y &Education respectivamente.
&Layers
&Population
&Income
&Education
Para acceder al menú, active la vista y pulse <ALT>+L.
figura
Pulse P, I o E para hacer desaparecer el menú. En un ejercicio posterior asignará scripts para ejecutarlos desde los campos de
menú.
Ahora personalizará la barra de herramientas de la vista mediante la adición de una nueva herramienta. Suponga que el usuario quiere una
función que devuelva las coordenadas x, y de la localización seleccionada en la vista. Debido a que la función requiere el uso del ratón
desde el usuario, se añadirá una herramienta en lugar de un botón.
En la Caja de Diálogo de Personalización, cambie Category a Tools.
En el editor de control, haga clic en la herramienta Identify (identificar) para seleccionarla.
figura
Haga clic en Tool (herramienta) para crear una nueva herramienta a la derecha de la herramienta Identify (identificar). Después de
aparecer la nueva herramienta, arrástrela al extremo derecho de la barra de herramientas (a la derecha de la herramienta Snapping
,Selección). Haga doble clic en la propiedad Icon y seleccione el icono XY2 y haga clic en OK.
figura
El Editor de Control y la barra de herramientas aparecen ahora con una nueva herramienta.
figura
La herrramienta también se debe asignar a un cursor.
Haga doble clic en la propiedad Cursor, elija Cursors.Bullseye para el cursor y haga clic en OK.
figura
Para ver el cursor bull’s-eye, haga clic en la nueva herramienta XY y mueva el cursor por el mapa de la vista.
8
Asigne la propiedad Apply de las herrramientas
Asigne la propiedad Apply para la herramienta XY creada en el paso anterior. Cuando la propiedad está asignada, seleccione el
script XYTool del Gestor de Scripts. Testee la nueve herramienta de nuevo para ver el informe de coordenadas XY.
Fin
S E C C I Ó N 2
Creación de scripts en Avenue
Creación de scripts en Avenue.......................................................................... 2-2
Escribir scripts con el Editor de Scripts...................................................... 2-4
Cargar un fichero de texto.......................................................................... 2-6
Cargar un script del sistema....................................................................... 2-8
Compilar y testear un script........................................................................ 2-10
Depurar un script........................................................................................ 2-12
Guardar un script....................................................................................... 2-14
Ejercicio 2: Escribir y testear scripts................................................................ 1-17
Creación de scripts en Avenue
 Paso 1: Introducir el código
figura
 Paso 2: Compilar el script
figura
 Paso 3: Testear y depurar cuando sea necesario.
figura
 Paso 4: Guardar el script.
figura
Creación de scripts en Avenue
Las aplicaciones Gis de ArcView® personalizadas se crean con los scripts de Avenue™. Los scripts se escriben, compilan, testean y
depuran desde el documento del Editor de Scripts de ArcView.
Aprenderá cómo utilizar el Editor de Scripts para crear sus propios scripts o modificar los scripts de ArcView existentes.
Hay cuatro pasos para crear su primer script en Avenue: introducir el código, compilar el código, testear y ejecutar el script, y guardarlo
cuando sea correcto.
Introducir el código
El primer paso es introducir el código en una ventana de scripts. Hay tres formas de hacerlo: tecleando en la ventana del script,
copiando un script existente en la ventana del script, o copiando un fichero de texto en la ventana del script.
Compilar su script
Compile el código para convertirlo al formato que entiende ArcView y encontrar los errores de sintaxis.
Testear y depurar su script
Cuando no existen errores de compilación, está preparado para testear el script. Si encuentra un error durante la ejecución, corrija
el error, entonces recompile y retestee el script. Este procedimiento, conocido como depuracion, puede necesitar ser repetido varias veces
antes de que el script proporcione los resultados deseados.
Guardar su script
Cuando el script sea correcto, guárdelo con el proyecto. Más tarde, puede asociarlo con un control. Los usuarios ejecutan los
scripts al actuar sobre los botones, herramientas, menús y campos de menú de la GUI. En otra sección posterior se explica como ejecutar
los scrips desde la GUI.
Escribir scripts con el Editor de Scripts
 Escribir, compilar, ejecutar y depurar el script
 Cortar, copiar, pegar y editar scripts
 Añadir comentarios para documentar su trabajo
figura
Escribir scripts con el Editor de Scripts
El Editor de Scripts es un documento que le permite crear, compilar, ejecutar, depurar y modificar scripts. Al igual que otros documentos de
Arcview, el editor de scritps tiene un único grupo de menús y botones para permitir estas operaciones.
Una ventana del editor de scripts contienen estamentos de Avenue que pueden ser compilados y salvados como un script. Al hacer clic en
el icono Scripts en la ventana del proyecto, aparecen listados los scripts que se crean en el proyecto.
Una forma de empezar a escribir el código de Avenue, es tecleándolo en la ventana del Script. Para editarlo se utilizan los botones de
cortar, copiar y pegar texto.
Usar comentarios en un script
Es una buena costumbre añadir comentarios a su código para documentar el trabajo. Un apóstrofe ( ‘ ) indica un comentario en
Avenue. Un comentario puede ocupar una línea entera o puede aparecer al final de la línea. Avenue ignora los comentarios y líneas en
blanco.
Determinar el tamaño de la fuente del script
Puede asignar el tamaño de la fuente usada en el editor de script elijiendo Properties (Propiedades) del menú Script. Puede asignar el
tamaño de la fuente como pequeña, media o grande. Para más información, busque en la ayuda: Scripts Properties (Dialogo Box).
Cargar un fichero de texto
 Fichero de texto (ej. Hello.ave)
aMessage = “Hello World”
MsgBox.Info (aMessage, “My Message”)
 Seleccione el fichero de texto
figura
 Cargue el fichero de texto en una ventana de script
figura
Cargar un fichero de texto
Puede usar también el editor de texto para teclear su código de Avenue en un fichero de texto ASCII, y entonces cargar el fichero de texto
en la ventana del Editor de Scripts.
Botón de carga de fichero de texto
El botón de carga de ficheros de texto hace aparecer en pantalla un buscador de ficheros desde el cual se puede elegir el fichero de
texto para insertarlo en la ventana activa del Editor de Scripts. Puede añadir varios ficheros de texto juntos o añadir un fichero de texto a
un script existente en una única ventana del editor de scripts.
Cargar un script del sistema
 Haga clic en el botón Load System Script (carga de script del sistema)
figura
 Seleccione un script del sistema de ArcView
 El script se carga en la ventana del script activa
figura
Cargar un script del sistema
Algunos scripts que puede querer utilizar están ya escritos por completo o parcialmente como parte del software de ArcView. Puede cargar
algunos de los scripts del sistema de ArcView en una ventana de scripts y editarlos. Puede ahorrar tiempo cargándo y editándo un script
del sistema que sea similar al que quiere escribir.
Cargar un script existente
El botón Load System Script carga un script del sistema en la ventana de Scripts. Haciento clic en este botón aparece un Gestor de
Scripts.
Gestor de Scripts
Utilice el Gestor de Scripts para elegir un script e insertarlo en la ventana de scripts. El gestor de scripts es una caja de diálogo que
lista todos los scripts del proyecto actual. Esta lista muestra todos los scripts del sistema, y los nuevos scripts creados por usted en el
proyecto actual o en el proyecto default de home.
Ejemplo
Por ejempo, puede cargar un script llamado View.ZoomIn en el Script3. El script View.ZoomIn contiene dos líneas de código en
Avenue que activan el documento ventana (GetActiveDoc) y hacen un zoom in (ZoomIn), es decir aumenta el dibujo en la pantalla
(GetDisplay) con un factor 125. Para cambiar la función de aumento al factor 250, reemplace 125 por 250.
Utilizar una librería de scripts
Además de los scripts del sistema, ArcView tiene algunos scripts que proporcionan funciones adicionales (ej. Buffer, intersect, histograms).
Están localizados en :$SAVHOME/samples/scripts. Para más información, busque en Contenidos en la Ayuda de ArcView de este libro:
Sample scripts and extensions.
Compilar y testear un script
 Compile el script
figura
 Testee el script
figura
Caja de mensaje
Compilar y testear un script
Cuando haya acabado de teclear o cargar el código en la ventana del Script, el script está preparado para compilar y testear. El editor de
scripts tiene dos botones para ayudarle con estas tareas: el botón Compile (Compilar) y el botón Run (ejecutar)
Compilar el script
Al compilar su script lo convierte en código legible para ArcView y chequea los errores de sintaxis del código en Avenue. Si existen
errores de sintaxis, aparece un mensaje de error, y el script no se compila. Cuando se ejecuta el script se usa la versión compilada. El
botón Run (Ejecutar) está inhabilitado hasta que el script se compile con éxito.
Testear el script
Use el botón Run (Ejecutar) para ejecutar y testear el script. (Los scripts normalmente se ejecutan con el botón Run con el
propósito de testearlo solamente). Una vez que es script es testeado y funciona correctamente, asócielo a un control particular de la GUI.
El usuario puede entonces ejecutarlo desde la GUI.
Cajas de mensajes de información
MsgBox.Info muestra en pantalla una caja de diálogo que contiene un mensaje para el usuario. Requiere dos parámetros: un
mensaje y un título para el título de la barra en la ventana. Ambos parámetros son cadenas.
Las cajas de mensajes se explican con más detalle en secciones posteriores.
Depurar un script
 Depura paso a paso
figura
 Introduce o borra un punto de ruptura
figura
 Examina las variables
figura
 Mensajes de error
figura figura
Depurar un script
El Editor de Scripts contiene varios botones para ayudarle a depurar su código. Puede ver como se ejecuta, ver los valores de las
variables, y encontrar la localización exacta del problema.
Depurar paso a paso
El botón Step (Paso) o <F8> le permiten escalonar el script a cada objeto y requerimiento cada vez. (Vea la sección 3, Introcucción
a objetos y requerimientos, para más información sobre objetos y requerimientos). El botón Step está inhabilitado hasta que el script se
compila con éxito.
Introducir o borrar un punto de ruptura
Puede introducir puntos de ruptura para interrumpir la ejecución del script. El botón Toggle Breakpoint (Conmutar Puntos de
Ruptura) inserta o borra puntos de ruptuta en la posición actual del cursor. El botón Toggle Breakpoint está inhabilitado hasta que el script
se compila con éxito. ArcView no guarda los puntos de ruptura cuando cierra el proyecto o sale de ArcView.
Examinar variables
Puede chequear los valores de las variables usando el botón Examine Variables. (Vea la sección 3, Introducción a objetos y
requerimientos, para más información sobre variables). El botón Examine Variables muestra en pantalla una ventana que muestra el tipo
(ej. Local o global), nombre, clase y valor de la variable. Este botón está inhabilitado hasta que el script se compila con éxito.
Mensajes de error
ArcView puede mostrar mensajes de error al compilar y ejecutar. Interprete cada mensaje de error o búsquelo en la ayuda en línea.
Aislar errores
En los scripts más largos, debería aislar los errores para localizarlos. Copie y pegue el código incorrecto en un script vacío. Testee
y ejecute el script corto para identificar el error. Una técnica es usar cajas de mensaje (o av.SetName(su variable)) para visualizar las
variables y ver como cambian durante la ejecución.
Guardar un script
Guardar un fichero de proyecto
Fichero de proyecto (ej. World.ap)
(SED.147
Name: “Hello”
Source:“‘The famous Hello World
World\”\natitle=
\ “ Welcome \ “ \ n
MsgBox.Info (aMessage, aTitle)”
script.
\naMessage
 Escribir un fichero de texto
Fichero de texto (ej. Hello.ave)
‘ The famous Hello World script amessage= “Hello World”
aTitle = “Welcome”
MsgBox.Info (aMessage, aTitle)
=
\“Hello
Guardar un script
Los scripts se pueden guardar con el proyecto actual.
separado del proyecto.
También puede guardarlos como un fichero de texto para almacenarlos por
Guardar el proyecto
Cuando guarda el proyecto actual, algunos scripts se crean y guardan con el fichero del proyecto (ej. World.apr)
Vea la sección 1, El Entorno de Desarrollo de ArcView, para más información sobre como salvar scripts en el proyecto por defecto
de home.
Escribir un fichero de texto
El botón Write Text File (Escribir un fichero de texto) escribe en un fichero de texto los contenidos de la ventana del script activa.
Se escribirá un fichero de texto en su directorio home (ej. C:\temp), y añadido con una extensión .ave (ej. Hello.ave). Utilizando este botón
puede salvar su script y enviárselo a alguien como un fichero ASCII.
Si tiene resaltado algún texto en el script, sólo se escribirá en el fichero de salida el texto seleccionado.
Ejercicio 2: Escribir y testear scripts
Paso 1
Iniciar ArcView y abrir un proyecto
Paso 2
Escibir, compilar, ejecutar y renombrar un script
Paso 3
Cargar un fichero de texto y arreglar un error de compilación
Paso 4
Examinar variables durante la ejecución del script
Paso 5
Guardar el script como un fichero de texto
Paso 6
Modificar un script existente
Ejercicio 2: Escribir y testear scripts
En este ejercicio, tecleará su primer script de Avenue y seguirá los pasos necesarios para ejecutarlo con éxito. Examinará la compilación y
errores de ejecución, y aprenderá técnicas de depuración de scripts.
Paso 1
Iniciar ArcView y abrir un proyecto
Si es necesario, inicie ArcView.
Desde el menú File (Archivo), elija Open Project (Abrir Proyecto). Muévase al directorio exercice (vea pág.1-20). Haga doble clic
en ex2.apr para abrir el proyecto de este ejercicio.
Cuando abra el proyecto, verá la ventana de proyecto vacía.
Paso 2
Escibir, compilar, ejecutar y renombrar un script
Ahora, creará su primer script, que hará aparecer un mensaje de saludo.
En la ventana de proyecto, haga clic en el icono Scripts, entonces con clic en New (Nuevo) se abre un nuevo script.
figura
Aparece una nueva ventana de script vacía llamada Script1.
Figura
Primero, teclee el script, incluyendo dos comentarios. Los comentarios son una forma de documentar su trabajo. Un apóstrofe indica un
comentario en Avenue.
En la primera línea, teclee un comentario que contenga su nombre y la fecha. En la segunda línea teclee un comentario
describiendo el script que ha hecho. En la tercera línea cree y visualice una caja de mensaje.
Teclee lo siguiente:
MsgBox. Info (“Hello World”,”Welcome Message”)
Info es un requerimiento de Avenue que tiene dos parámetros: el primero es el mensaje que se visualiza en la caja de mensaje y el
segundo es el título de la barra en la ventana de la caja de mensaje. Aprenderá más sobre requerimientos en la siguiente sección.
Su script será ahora este, salvo sus comentarios que serán distintos.
figura
Observe que el botón a la derecha del botón de compilación, usado para ejecutar y depurar el script, está inhabilitado antes de compilar el
script.
Haga clic en el botón Compile (Compilar) para chequear los errores y compilar el script.
Figura
Ahora que es script está compilado, el botón Compilar está inhabilitado y los otros botones aparecen habilitados.
Haga clic en el botón Run (Ejecutar) para ejecutar y testear el script.
Figura
Cuando aparezca el mensaje Hello, haga clic en OK para hacer desaparecer la ventana del mensaje.
Figura
Ha ejecutado con éxito su primer script; ahora está preparado para darle un nombre descriptivo.
Desde el menú Script, elija Properties (Propiedades). En la caja de diálogo del script, cambie el nombre del Script1 a Hello,
entonces haga clic en OK.
Figura
Observe los cambios en el título de la ventana del script y en la lista de scripts de la ventana del proyecto. Si salva el proyecto, el script
Hello se guardará con el fichero del proyecto (ex2.apr) y lo verá la próxima vez que abra este proyecto.
Paso 3
Cargar un fichero de texto y arreglar un error de compilación
En este paso, cargará un fichero de texto que contiene un código de Avenue, en una ventana de Script. El código contiene un error de
compilación que usted arreglará.
En la ventana del proyecto, haga clic en el icono Scripts, y luego en New para abrir un nuevo script. Aparecerá una ventana
llamada Script1.
Haga clic en el botón Load Text File (Carga Fichero de Texto).
Figura
Muévase al directorio data y seleccione el fichero employee.ave. Examine las variables creadas en este script: name1, name2,
empAge y tehMesage. Tres de las variables son cadenas de texto y la variabla empAge es un número. Aprenderá más sobre variables en
la sección 3.
Figura
Haga clic en el botón Compile (Compilar) para compilar el script. Aparecerá el siguiente mensaje de error debido a que la variable
theTitle (usada como parámetro de MsgBox.Info) no ha sido definida.
Figura
Haga clic en OK para hacer desaparecer el mensaje de error.
Para fijar el error, añada esta línea al script, antes del estamento MsgBox.Info:
theTitle = “Employee Data”
El script final será este:
Figura
Haga clic de nuevo en el botón Compile y el script se compilará con éxito.
Concatenar cadenas de texto
Dos signos de suma (++) se utilizan para concatenar dos cadenas de texto con un espacio entre ellas.
Paso 4
Examinar variables durante la ejecución del script
Aprender como examinar variables durante la ejecución del script es una forma de ayuda para depurar sus scripts. Antes de ejecutar un
script, defina un punto de ruptura y examine los valores de las variables.
Utilice el ratón, haga clic y arrastre resaltando hasta “Name and Age:”, entonces haga clic en el botón Toggle Breakpoint
(Conmutar Punto de Ruptura):
figura
Después de añadir el punto de ruptura, haga clic en Run para ejecutar el script. No aparecerá ninguna caja de mensaje ya que la
ejecución se ha detenido en el punto de ruptura (ej. Antes de llegar a la línea de MsgBox.Info)
Ahora haga clic en el botón Examine Variables (Examinar variables).
figura
Observe que todas las variables tienen un tipo y un valor excepto theMessage y theTitle. El punto de ruptura se encuentra antes de que
estas variables sean asignadas.
figura
Haga clic en OK para hacer desaparecer la ventana. Entonces borre los puntos de ruptura haciendo clic en el botón Toggle
Breakpoint.
figura
Ahora en el script, haga clic en la palabra MsgBox, entonces haga clic en el botón Toggle Breakpoint. MsgBox está resaltada.
Haga clic en el botón Run y examine las variables con el botón Examine Variables. Ahora todas las variables tienen un valor asignado.
figura
Haga clic en el botón Run para continuar la ejecución del script.
figura
Haga clic en OK para hacer desaparecer la ventana de mensaje.
Paso 5
Guardar el script como un fichero de texto
Ahora, guardará su script como un fichero de texto.
Haga clic en el botón Write Text File (Salvar como fichero de texto)
figura
En el buscador de archivos de script, muévase al directorio pavetemp y llame al fichero employee.ave.
Haga clic en OK para guardar el script.
Este fichero de texto se guarda en un lugar aparte del fichero de proyecto.
Paso 6
Modificar un script existente
Cambie las variables en el script employee.ave a su nombre y edad y ejecute el script de nuevo. Intente, modificar el mensaje y título en la
caja de mensaje. Para hacer un pequeño ruido, añada la siguiente línea justo antes de la línea de la caja de mesaje:
System.Beep.
Fin
S E C C I Ó N 3
Introducción a objetos y requerimientos
Introducción a objetos y requerimientos.......................................................... 3-2
Construir estamentos en Avenue............................................................... 3-4
Usar estamentos de asignación................................................................. 3-6
Usar variables............................................................................................ .3-8
Usar enumeraciones.................................................................................. .3-10
Usar números............................................................................................. 3-12
Usar cadenas..............................................................................................
3-14
Usar cajas de mensaje............................................................................... 3-12
Expandir requerimientos............................................................................. 3-14
Ayuda en línea en Avenue.................................................................................. 3-20
Obtener la ayuda para requerimientos....................................................... 3-22
Ejercicio 3: Escribir estamentos de Avenue....................................................
.3-25
Introducción a objetos y requerimientos
 ArcView está compuesto de objetos
 Los objetos tienen propiedades que se modifican con requerimientos
 Los objetos y requerimientos confeccionan los estamentos de Avenue.
Aplicaciones
Proyectos
Figura
figura
Vistas
Controles
figura
figura
Introducción a objetos y requerimientos
En esta sección, se comentan algunos de los conceptos básicos de la programación orientada a objetos. Examinará como se manejan los
objetos del GIS de ArcView® mediante requerimientos. También utilizará la ayuda en línea para encontrar los requerimientos de las
operaciones que quiera realizar. Aprenderá como construir estamentos en Avenue, y como usar cadenas, números, y enumeraciones en
su primer script de Avenue.
Objetos
Un objeto es una entidad que representa algo en su trabajo con ArcView. Los objetos son elementos de la interfaz tales como
controles y ventanas de documentos, o pueden ser componentes de un proyecto como vistas o composiciones o pueden ser elementos
básicos de Avenue tales como números, fechas, booleanos y cadenas, o pueden ser primitivas gráficas tales como puntos, líneas u otras
superficies.
Requerimientos
Un requerimiento en Avenue le permite crear, manejar y manipular o proporciona información sobre objetos. Por ejemplo, puede
añadir un tema a la vista enviando a la vista el requerimiento AddTheme, o encontrar un documento específico en un proyecto enviando al
proyecto el requerimiento FindDoc, o cambiar el icono del botón mediante el requerimiento SetIcon enviado a un objeto botón.
Construir estamentos en Avenue
 Los requerimientos se envían a los objetos
 Los estamentos tienen el formato: Objeto.Requerimiento
av.GetProject
theView.Print
System.Beep
 Los requerimientos necesitan parámetros: Objeto.Requerimiento (parámetros)
av.Resize (800,1000)
theView.SetName (“Redlands”)
theProject.FindDoc (“Chart1”)
theButton.SetIcon (dollar)
 Los estamentos con números: Objeto Requerimiento Objeto
2 + 7
x - 25
theValue * 100
theCount / 8
Construir estamentos en Avenue
Los objetos y requerimientos permiten realizar operaciones, deben estar estructurados en estamentos. Cree un estamento enviando a un
objeto un requerimiento utilizando una sintaxis particular. La sintaxis general de un estamento es Objeto. Requerimiento.
Parámetros
La mayoría de los requerimientos necesitan parámetros que proporcionan información específica. Un parámetro puede ser el
nombre de un documento, una cadena de un título o el número de segundos de retraso. La clase de parámetros está definida por el
requerimiento. Por ejemplo, Resize requiere dos números, FindDoc requiere una cadena, FindTheme requiere una cadena, e Info requiere
dos cadenas.
Estamentos con números
Cuando se realizan operaciones matemáticas se escriben convencionalmente con estamentos con números y la sintaxis es Objeto
Requerimiento Objeto.
Usar estamentos de asignación
 Un requerimiento enviado a un objeto devuelve otro objeto
 Asigna una variable al objeto devuelto
aNumber = 4+40
aDoc = theProject.FindDoc (“World”)
aString = theTheme.GetName
aTheme = theView.FindTheme (“Canada”)
‘número
‘documento
‘cadena
‘tema
 Asigna variables directamente
x = 7
companyTitle = “JB Global Systems, Inc.”
aConstant = 1.5
 Asigna variables locales o globales
‘número
‘cadena
‘número
myLocalVar = 25 * 23
_myGlobalVar = myValue * 37
_theTheme=theView.FindTheme(“Canadá”)
‘ local para el script
‘ global para el proyecto
‘ global
Usar estamentos de asignación
El resultado de enviar un requerimiento a un objeto es otro objeto. Use un estamento de asignación para asignar una variable al objeto
devuelto. La clase de la variable se define mediante un requerimiento: por ejemplo, GetProject devuelve un proyecto, FinDoc devuelve un
documento, FindTheme devuelve un tema, Info devuelve una cadena y * devuelve un número. También puede asignar una variable, una
cadena o número tecleándolo a la derecha de un signo igual.
Variables locales
Una variable local es utilizable sólo en el script en el que se encuentra asignada.
Variables globales
Una variable global está precedida de un signo de subrayado (_). Una vez que son asignadas, estas variables se pueden utilizar en
todos los scripts del proyecto actual.
Es posible utilizar la misma variable global en varios proyectos. Los scripts del sistema Project.Open y Project. New contienen una
línea av.ClearGlobals, que limpia las variables globales. Usted puede editar los scripts y borrar esta línea. Sea cuidadoso, ya que la
memoria para las variables globales permanece asignada aún después de cerrar el proyecto y abrir uno nuevo.
Comprensión de variables
Las variables de Avenue se refieren a objetos. Una variable se crea cuando aparece a la izquierda del estamento de asignación. La
variable referencia el objeto a la derecha del signo igual. Para más información, vea la ayuda de temas: Working assignement statements y
variables, Local y global variables.
Usar variables
 No declarada o no definido su tipo
 Debe comenzar con una letra o signo de subrayado
 No diferencia la mayúsculas de las minúsculas
 El compilador de Avenue encuentra conflictos con palabras reservadas
view = theProject.findDoc (“Redlands”)
figura
 Denominación de las variables
comienzan con una letra minúscula
las palabras importantes comienzan con letra mayúscula
theViewWindow
newCustomerNumber
companyTitleString
Usar variables
Cuando use variables, debería aplicar ciertas normas y convenciones de nombres.
Normas en variables
Algunos lenguajes de programación necesitan que especifique el tipo de dato (ej. Entero, coma flotante, cadena) para una variable
antes de usarla. Las variables en Avenue no se declaran. Están definidas desde la primera vez que aparecen en el estamento de
asignación.
Los nombres de variables deben comenzar con una letra o signo de subrayado, pero pueden contener números.
restricciones en la longitud del nombre de la variable. Avenue no diferencia mayúsculas de minúsculas
No hay
Los conflictos entre los nombres de variables y las palabras reservadas, tales como clases y nombres de requerimientos, se
identifican al compilar. El compilador de Avenue muestra un mensaje de error con el nombre que produce el conflicto.
Convenciones en la denominación de Variables
Por convención , se mezclan minúsculas y mayúsculas para clarificar el estilo. Las variables comienzan por letras minúsculas y las
palabras importantes comienzan por una letra mayúscula.
Para más información sobre estilos de denominación de variables.
Vea el apéndice B, Pautas de Codificación en Avenue, en la documentación del software “Utilizando Avenue”.
Usar enumeraciones
 Una serie de posibilidades utilizadas como parámetros de un requerimiento
 Usadas para asignar el tipo de gráfico, fichero o campo
 Ejemplo: asignando el tipo de gráfico
theChartDisplay.SetType (#CHARTDISPLAY_PIE)
figura
theChartDisplay.SetType (#CHARTDISPLAY_COLUMN)
figura
Usar enumeraciones
Las enumeraciones son distintas posibilidades que pueden ser usadas como parámetros de requerimientos. Las enumeraciones
comienzan con el signo (#). Se usan con algunas clases incluyendo ficheros, gráficos y campos.
La clase gráfico, por ejemplo, tiene enumeraciones llamadas ChartDisplayEnum que son parámetros del requerimiento SetType. Cada
ChartDisplayEnum define un tipo diferente de gráfico. Los posibles ChartDisplayEnum son:
#CHARTDISPLAY_AREA
#CHARTDISPLAY_LINE
#CHARTDISPLAY_PIE
#CHARTDISPLAY_COLUMN
#CHARTDISPLAY_BAR
#CHARTDISPLAY_XYSCATTER
Ejemplo
Antes de determinar el tipo de gráfico de visualización con el requerimiento SetType debe encontrar primero el gráfico y entonces
obtener su presentación.
TheChart = av.GetProject.FindDoc (“Chart1”)
TheChart.GetChartDisplay.SetType (#CHARTDISPLAY_COLUMN)
TheChart.GetWin.Open
Usar números
 La evaluación numérica es de izquierda a derecha, a menos que se usen paréntesis
x = 2 + 3 * 3
x = 2 + (3 * 3)
‘x = 15
‘x = 11
 Operaciones matemáticas
posNumber = -29.Abs
wholeNumber = 35.689.Round
maxNumber = 35 Max 333
‘devuelve 29
‘devuelve 36
‘devuelve 333
 Formato de los números
Number.SetDefFormat (“d.ddd”)
aScript.SetNumberFormat (“d.ddd”)
anyNumber.SetFormat (“d.dd”)
‘toda la aplicación
‘todo el script
‘un número particular
Usar números
La evaluación numérica es de izquierda a derecha, a menos que se cambie el orden con paréntesis. Realiza las operaciones matemáticas
estándar, incluyendo logaritmos, raíces cuadradas y medidas angulares.
Formato de números
Puede utilizar formatos numéricos utilizando un formato de cadena con uno o tres requerimientos: SetDefFormat, SetNumberFormat
o SetFormat. Los formatos numéricos se especifican para la aplicación, para un script o un número específico respectivamente.
El formato de cadena define como se sitúan algunos decimales a la izquierda y derecha del punto decimal. Por ejemplo, un formato
de cadena (“d.ddd”) significa que al menos uno de los dígitos aparece a la izquierda del punto decimal y exactamente tres dígitos aparecen
a la derecha.
Conversión de números
Un número puede convertirse a cadena o a duración (número de días) usando AsString y AsDays. Los valores en radianes y grados
pueden convertirse usando los requerimientos AsRadians y AsDegrees. Observe que los requerimientos de medidas angulares tales como
Cosine y Sine (coseno y seno), utilizan valores en radianes.
Ejemplo de conversión de números:
numRadians = 90.AsRadians
numDegrees = numRadians.AsDegrees
aString = maxNumber.AsString
numDays = 4.AsDays
Usar cadenas
 Cadenas concatenadas
theNewString = “Good Morning” ++ “Michael”
theNewString = “Good Morning” + “Michael”
MsgBox.Info (TheNewString,””)
Figura
 Nueva línea, tabulación y retorno de carro: NL, TAB, y CR
myString = “Good Morning” + NL + “Michael”
Figura
 Conversión de cadenas
theString = aNumber.AsString
myNumber = String1.AsNumber
NewDate = myString.AsDate
Usar cadenas
Cuando asigne una cadena directamente o la use como parámetro de requerimiento, escríbala entre comillas dobles (“ ”).
Concatenar cadenas
Puede unir cadenas con los requerimientos + y ++. Usando + concatena cadenas sin ningún espacio entre ellas; y usando ++
concatena cadenas con un espacio entre ellas.
Cadenas especiales
Avenue tiene cadenas especiales para manejar caracteres de nueva línea, tabulación y retorno de carro. Estos son NL, TAB , y CR
respectivamente.
Conversión de cadenas
Las cadenas se convierten a números y fechas usando los requerimientos AsNumber y AsDate. Los números y fechas pueden
convertirse a cadenas usando el requerimiento AsString. Buscando la ayuda en línea para requerimientos que comienza con As... realice
otros requerimientos que conviertan objetos de una clase a otra.
Usar cajas de mensaje
 Muestra en pantalla mensajes
MsgBox.Banner (file, seconds. Title) MsgBox.info (message, title)
Figura
figura
 Permite al usuario una entrada por teclado
MsgBox.Input (aMessage,Title, defaultString)
Figura
Figura
Usar cajas de mensaje
Las cajas de mensaje visualizan en pantalla información o entradas de usuario. Puede visualizar una imagen, un mensaje de error,
información general o errores de advertencia. Cree las cajas de mensaje utilizando MsgBox y uno de los siguientes requerimientos :
banner, error, info, o warning.
Obtener e introducir
Las cajas de mensaje de entrada le permiten obtener información desde el usuario. Las cajas de mensaje de entrada utilizan tres
cadenas como parámetros del requerimiento Input. La primera cadena es un instrucción o mensaje que usted quiere que el usuario lea, la
segunda es el título de la ventana y la tercera es un valor de entrada por defecto.
asString = MsgBox.Input(aMessage,aTitle,aDefaultString)
Convertir cadenas a números
MsgBox.Input devuelve una cadena. Si necesita usar la cadena devuelta en una operación matemática, debe convertirla a un
número con el requerimiento AsNumber. Sin embargo, MsgBox.Info toma una cadena como mensaje, que también debe convertir el
número devuelto a una cadena usando el requerimiento AsString.
Ejemplo:
order = MsgBox.Input (“Enter the order amount”,
“Order”, ””)
orderNum = order.AsNumber
myComm = orderNum * 0.12
myCommString = myComm.AsString
MsgBox.Info (“Your commission is” ++ myCommString,””)
Botón Cancel (Anular)
Si el usuario hace clic en el botón Cancel o no introduce una cadena, se devuelve un valor Nil (nulo). El objeto Nil es un objeto que
no tiene valor. En una sección posterior (Ramificaciones y bucles), aprenderá como chequear condiciones con Nil y a realizar un
procedimiento específico cuando se devuelve Nil.
Expandir requerimientos
 El encadenamiento permite combinar requerimientos en un solo estamento:
theProject = av.GetProject
theView = theProject.FindDoc (“World”)
theTheme = theView.FindTheme (“GNF”)
Es lo mismo que:
theTheme = av.GetProject.FindDoc(“World”).FindTheme(“GNF”)
 El anidamiento permite usar un requerimiento como un parámetro de otro requerimiento:
Order = MsgBox.Input (“Enter the order amount”,
“Order Entries”,””)
myComm = 0.12 * (Order.AsNumber)
MsgBox.Info (“Your commission is” ++ myComm.AsString,
“Total commission”)
Expandir requerimientos
El uso de requerimientos puede ser dilatado, incluyendo múltiples requerimientos encadenados a la vez para construir un estamento o
usando un requerimiento como parámetro de otro requerimiento.
Cambiar requerimientos
Puede dilatar la sintaxis del requerimiento Object.Request para incluir varios requerimientos (ej. Object.Request. Request. Request).
Los requerimientos encadenados deberían operar sobre el objeto devuelto desde el primer requerimiento. Por ejemplo:
theProject =av.GetProject
theProject.SetName (“ACME GIS”)
es lo mismo que:
av.getproject.SetName (“ACME GIS”)
El número de estamentos de asignación (variables) usadas para llevar a cabo una tarea depende del estilo de estamento. Si encadena
varios requerimientos sin interrupción en su estamento, use menos estamentos de asignación. Por ejemplo, los estamentos siguientes:
theProject = av.GetProject
theView = theProject.FindDoc (“World”)
theTheme = theView.FindTheme (“GNP”)
pueden acortarse a:
theTheme = av.GetProject.FindDoc(“World”).FindTheme(“GNP”)
Observe que la variable, en este caso, theTheme, almacena el objeto devuelto por el último requerimiento de la cadena.
Anidar requerimientos
Los requerimientos y los objetos devueltos, pueden usarse como parámetros de otros requerimientos.
En el ejemplo de anidamiento en la página anterior, el requerimiento AsNumber se envía a una variable Order para convertir el
objeto desde una cadena a un número y trabajar con el requerimiento *. El requerimiento AsString se envía a la variable myComm para
construir una cadena como primer parámetro del requerimiento Info (enviado a MsgBox).
Ayuda en línea en Avenue
 Contenidos
 Índice
 Encontrar
Figura
Figura
Figura
Ayuda en línea en Avenue
La ayuda en línea de Avenue proporciona al sistema explicaciones detalladas de clases y requerimientos. Desde el menú Help (Ayuda)
puede elegir uno de las tres posibilidades del menú: Help Topics (Ayuda acerca de ...), How to Get Help (cómo obtener ayuda), y About
ArcView (acerca de ArcView).
Help Topics (Ayuda de temas)
La elección de menú Ayuda de temas, inicia una ayuda del sistema de ArcView en línea. Esta ayuda del sistema proporciona un
menú en el que encontramos tres opciones: Contenidos, Índice y Encontrar. Los contenidos presenta al usuario una colección de libros de
ayuda. Bajo cada libro hay una ayuda de temas. Puede hacer clic en uno de estos temas y la ayuda del sistema saltará a la página del
tema.
El Index (índice) le permite teclear primero unas pocas letras de la palabra que está buscando, y la cremallera del índice irá a la
primera ocurrencia de sus caracteres. Desde aquí, puede hacer doble clic en la entrada del índice que quiera o puede hacer clic una vez
en la entrada del índice que quiere y escoger entonces display. En otro caso, la ayuda del sistema de ArcView saltará a la página de
entrada.
La tercera opción, Find (encontrar), le permite teclear una palabra o palabras y la ayuda del sistema encontrará todas las palabras
que la contengan, también puede estrechar la búsqueda, y elegir entonces el tema donde estará la palabra o palabras. La ayuda del
sistema entonces salta a la ayuda acerca de una elección.
Como obtener la ayuda
Describe los diferentes modos por los que puede acceder a la Ayuda desde la interfaz de usuario gráfica del documento.
Sobre ArcView
Esta posibilidad del menú proporciona una ventana en pantalla que le da la versión del producto y la información de registro.
Obtener la ayuda para requerimientos
 Buscar en el índice de la ayuda un requerimiento
 Examinar Syntax para los parámetros requeridos
 Examinar Returns para ver que tipo de objeto es devuelto
Figura Figura
Obtener la ayuda para requerimientos
La ayuda dada para un requerimiento describe qué hace ese requerimiento, cómo trabaja y cómo se relaciona con otros.
Sintaxis
La sintaxis ilustra el formato necesario para los requerimientos de Avenue. Los nombres de los parámetros indican su propósito en
el requerimiento. Cada parámetro es un objeto, y por tanto pertenece a una clase en particular. Haciendo clic en un parámetro aparece
una descripción de su clase.
Objeto devuelto
La clase del objeto devuelto por el requerimiento está listada. Haciendo clic en el nombre de una clase aparece su descripción.
Ejercicio 3: Escribir estamentos de Avenue
Paso 1
Iniciar ArcView y abrir un proyecto
Paso 2
Crear un script que calcule los impuestos de ventas
Paso 3
Analizar un estamento de Avenue
Paso 4
Utilizar enumeraciones para cambiar el tipo de gráfico.
Paso 5
Requerimientos encadenados para crear un script de una sola línea
Ejercicio 3: Escribir estamentos de Avenue
En este ejercicio, creará dos scripts (uno para informar sobre los impuestos en una compra, y otro para cambiar el tipo de gráfico que
aparecerá).
Paso 1
Iniciar ArcView y abrir un proyecto
Si es necesario, inicie ArcView.
Desde el menú File (Archivo), elija Open Project (abrir proyecto). Muévase al directorio exercice y haga doble clic en ex3.apr para
abrir el proyecto para este ejercicio.
Cuando abra el proyecto, todos los documentos estarán cerrados excepto la ventana del proyecto.
Paso 2
Crear un script que calcule los impuestos de ventas
Escriba un script que use una caja de mensaje de entrada para pedir al usuario un coste. Calcule los impuestos de venta para las
cantidades introducidas por el usuario, entonces informe del importe de devolución para el usuario.
Abra el script Exercice 3, Step2. Desde el menú Help (Ayuda), elija Help Topics (Ayuda Tema). Busque el índice para MsgBox.
Encuentre el requerimiento Input (entrada) y conteste las siguientes cuestiones.
¿Cuales son los tres parámetros para el requerimiento Input, y que tipo de objeto es cada parámetro (ej. Número, cadena, vista, o
tema)?
Parámetro 1:
Parámetro 2 :
Parámetro 3:
Objeto:
Objeto:
Objeto:
El requerimiento de entrada devuelve un objeto que puede almacenar en una variable.
¿Qué tipo de objeto es devuelto?
Ahora escriba el script que usa la caja de mensaje de entrada para que el usuario introduzca la cantidad de la compra.
Cree una variable llamada theCostString para enviar el requerimiento Input a MsgBox. Envíe el mensaje Enter the Cost, y como
título de mensaje de la caja, Calculate Tax, y utilice 0.00 como valor por defecto.
Convierta la cadena cost a un número, y calcule el 7.5 por ciento de impuesto sobre el coste.
Cree una variable theCostnumber convirtiendo theCostString a número con el requerimiento de conversión AsNumber.
Cree una variable theTaxNumber multiplicando theCostNumber por 0.075
Convierta el impuesto de número a cadena e informe en una caja de mensaje cual es el impuesto.
Cree una variable llamada theTaxString convirtiendo theTaxNumber a cadena con el requerimiento de conversión AsString.
Use una caja de mensaje Info para informar de theTaxString. El título de la caja será Your Tax.
Compile y ejecute el script.
Paso 3
Analizar un estamento de Avenue
Abra el script Exercice 3, Step 3.
Revise los siguientes estamentos:
theProject = av.GetProject
theView = theProject.FindDoc (“Atlanta”)
Para contestar a las siguientes cuestiones, busque en el Help Index (Índice de Ayuda) cada requerimiento:
figura
El requerimiento Getproject se envía a
GetProject devuelve un
El requerimiento FindDoc es enviado a
FindDoc devuelve un
Paso 4
Utilizar enumeraciones para cambiar el tipo de gráfico.
En este paso, cambiará el tipo de gráfico del gráfico Atlanta Banks. Primero examinará los diferentes tipos de enumeraciones.
Abra dos documentos: el gráfico Atlanta Banks y el script Exercice 3, Step 4.
Antes de escribir un script, busque cuantos tipos de gráficos hay usando lel Index (Índice) de la ayuda para buscar
ChartDisplayEnum (Enumeración).
¿Cuántas enumeraciones hay para gráficos?
Ahora escribirá un script para cambiar los tipos de gráfico.
Obtenga el proyecto y busque el documento gráfico por su nombre.
Cree una variable theProject enviando el requerimiento GetProject a aplication (av).
Cree una variable theChart enviando el requerimiento FinDoc a theProject. Encuentre el gráfico Atlanta Baks.
Luego, tome el área de visualización del gráfico y cambie el tipo de gráfico
Cree una variable llamada thechartDisplay enviando el requerimiento GetChartDisplay a theChart.
Cambie tipo theChartdisplay con el requerimiento SetType; para el parámetro introduzca la enumeración para un gráfico columna.
Compile y ejecute el script para testearlo.
5
Cadena de requerimientos para crear un script de una sola línea
Abra el script en blanco Exercice 3, Step 5 y con una cadena de requerimientos, desde el Exercice 3, Step 4 introduzca el script en una
sola línea. Vea la página 3-5 y 3-7 para información y ejemplos de requerimientos encadenados.
Compile y ejecute este script de una línea.
Fin
S E C C I Ó N 4
Comprensión de las clases en ArcView
Comprensión de las clases en ArcView............................................................
4-2
Clases e instancias.....................................................................................
4-4
Propiedades de los objetos........................................................................ 4-6
Requerimientos a instancias...................................................................... 4-8
La jerarquía de clases................................................................................ 4-10
Diagramas Modelo de Objeto............................................................................. 4-12
Ayuda para las clases................................................................................ 4-14
Búsqueda de ayuda desde un script.......................................................... 4-16
Ejercicio 4: Búsqueda de ayuda para las clases..............................................
4-19
Comprensión de las clases en ArcView
 Los objetos están organizados dentro de clases
Vistas
Controles
Formas
Comprensión de las clases en ArcView
En esta sección, se discuten algunos de los conceptos básicos de la programación orientada a objetos. Examinará como se crean,
cambian y manejan los objetos en Avenue™ mediante requerimientos. Los objetos y requerimientos se organizan según la Jerarquía de
Clase de Avenue. También usará la ayuda en línea para navegar por la jerarquía de objetos y encontrar los requerimientos válidos para las
operaciones que quiera realizar.
Clases e instancias
 Una clase es un anteproyecto para crear objetos.
 Cada clase tiene un único grupo de propiedades y requerimientos
 Las instancias son objetos creados desde la misma clase
 Crear objetos usando requerimientos de clase.
aProject = Project.Make
myView = View.Make
Clase Vista
Propiedades
Requerimientos
Figura
Instancias de la clase vista
Clases e instancias
Una clase es un anteproyecto que define las propiedades y requerimientos para un tipo específico de objeto. Todos los objetos creados
desde la misma clase son referidos como instancias de la clase. Tienen la mismas propiedades y pueden realizar los mismos
requerimientos. Por ejemplo, todas las vistas tienen un mapa y una tabla de contenidos, y pueden abrirse o cerrarse.
Instancias
Cada objeto es único, única instancia de la clase desde la que fue creado. Puede crear cada instancia de una clase única
enviándole el requerimiento que cambia sus propiedades. Por ejemplo, podría asignar a dos botones diferentes iconos y diferentes scripts
para hacerles diferentes y llevar a cabo diferentes operaciones.
Ejemplo “El mejor amigo del hombre”
Clase Perro
Figura
Rex
Figura
Sparky
Instancias de la clase Perro
Requerimientos de clase
Si un objeto no existe, utilice un requerimiento de la clase para crear una nueva instancia. El requerimiento Make es un ejemplo de
requerimiento de una clase; este requerimiento crea una nueva instancia (ej. Un objeto nuevo) de la clase a la que es enviado.
Propiedades de los objetos
 Los objetos de ArcView tienen propiedades (Atributos)
 Las propiedades definen características de un objeto
Vista
Propiedades
Figura
Figura
Botón
Propiedades
Figura
Figura
Propiedades de los objetos
Los objetos son elementos con los que se trabaja en el GIS ArcView®, tales como vistas, temas, GUIs, controles, y gráficos. Cuando abre
una vista, está trabajando con un objeto Vista; cuando añade un botón a la GUI, está añadiendo un objeto Botón al objeto GUI. Los objetos
pueden ser también números, cadenas, y fechas.
Cada objeto tiene una serie de propiedades (atributos) que describen como es el objeto y su apariencia. Por ejemplo, una vista tienen un
nombre, temas, y una proyección; un botón tiene un script asignado, un icono y la propiedad de ser visible.
Ejemplo “El mejor amigo del hombre”
Propiedades
Figura
2 orejas
4 patas
rabo
hocico
odia a los gatos
Sparky
Requerimientos a instancias
 Manipular objetos y sus propiedades
Proporcionar objetos o propiedades de objetos
myView = aProject.FindDoc (“View1”)
theTheme = myView.FindTheme (“Population”)
myView.GetName
Chequear y cambiar los valores de las propiedades
theTheme.IsVisible
myView.SetName(“Atlanta”)
theTheme.SetVisible(true)
Clase vista
Figura
Figura
Requerimientos a instancias
Los requerimientos de Avenue le permiten recuperar objetos y sus propiedades, y chequear o cambiar las propiedades de los objetos. Por
ejemplo, puede encontrar una vista existente, asignar el nombre a una vista, y cambiar la visibilidad de un tema enviando los
requerimientos apropiados a un objeto.
La mayoría de requerimientos recuperan o modifican objetos existentes, y se llaman requerimientos de instancias. Los requerimientos de
instancias se llaman con prefijos estándar basados en sus funciones.
Los requerimientos que comienzan con Get..., tales como GetName y GetThemes, devuelven información sobre las propiedades de los
objetos. Otros requerimientos Get..., como GetProject, GetActiveDoc y GetActiveField, acceden a objetos cuando el objeto está activo.
Set... se utiliza para requerimientos que asignan nuevos valores a las propiedades de los objetos, tales como SetName, SetVisible, y
SetActive.
Los requerimientos que empiezan con Find..., como FindTheme y FindDoc, acceden a los objetos por medio de su nombre.
Ejemplo “El mejor amigo del hombre”
Propiedades
Figura
duerme
se sienta
huele
ladra
me trae un palo
Sparky
Ver todos los requerimientos
Puede ver todos los requerimientos que se incluyen en Avenue cargando una ampliación de muestra llamada el “Class Browser”. Esta
ampliación puede acceder desde los contenidos de la ayuda según una muestra de scripts y ampliaciones : Proyectos.
La jerarquía de clases
 La Jerarquía de Clase organiza las clases desde lo general a lo específico.
 Cada clase hereda todas las propiedades y requerimientos desde su superclase
Figura
Figura
La jerarquía de clases
Las clases se organizan desde lo general a lo específico ( ej. Desde la superclase a la clase). La relación entre clases está representada
en la Jerarquía de Clase. La Jerarquía de Clase comienza con el objeto más general, Obj. Todos los otros objetos son subclases de Obj.
La ayuda en línea incluye la jerarquía de clase completa y la lista de subclases para cada clase.
Herencia
Una vez definido el nivel de la superclase, las propiedades y requerimientos se heredan a todas las subclases. La herencia permite
que las propiedades y requerimientos se definan sólo una vez en la jerarquía. Cada subclase puede tener también su propias y únicas
propiedades y requerimientos.
Por ejemplo, las clases Vista y Tabla son subclases de la clase Doc, y ambas heredan los requerimientos tales como SetName y Open
desde la clase Doc. Las Vista y la Tabla también tienen requerimientos únicos. Por ejemplo, View tiene GetThemes y ZoomIn, y Table
tiene Sort y Summarize.
Ejemplo “El mejor amigo del hombre”
Clases
Figura
Instancias
Sparky
Rex
Diagramas Modelo de Objeto
 Muestra las relaciones entre objetos
Herencia
Asociación
uno a uno
cero o más
cero o uno
Agregación (compuesto de )
Figura
Diagramas Modelo de Objeto
Los Diagramas Modelo de Objeto muestran la relación entre las clases de Avenue.
Herencia
La herencia se simboliza mediante un triángulo, es una relación clase-a-subclase. Por ejemplo, Documento es la superclase de las
clases gráfico, composición, Sed y Vista. El triángulo apunta a la superclase, o clase más general. La herencia se describe con detalle en
la jerarquía de clases.
Asociación
Una asociación entre dos clases se indica con una línea dibujada entre ellas. Una línea representa una asociación uno-a-uno. Una
línea que acaba en un punto negro representa una asociación múltiple. Una asociación múltiple puede ser de dos tipos. Una sólida
muestra una asociación cero-a-más y una hueca muestra una asociación cero-a-uno.
Agregación
La composición de relaciones, simbolizada con un diamante, existe entre una agregación y las clases que la constituyen. Un
proyecto, por ejemplo, está compuesto de documentos y docGuis. El diamante se dibuja en la clase agregada.
Diagramas Modelo de Objeto
Para encontrar un Diagrama Modelo de Objeto en la ayuda de Avenue, busque Functional Overview of ArcView Classes. Cada
tema tiene un salto a su Diagrama Modelo de Objeto.
Nota
Una versión abreviada de la Técnica de Diagrama Modelo de Objeto (OMT) para modelizar la relación entre clases, aparece en este
manual. Vea Rumbaugh, James, et al. 1991. Object-Otiented Modeling and Design. Englewood Cliffs: Prentice-Hall.
Ejemplo “El mejor amigo del hombre”
Juguetes
Balón Hueso
Perro
Ropa
Cuerda
Collar
Cadena
Chapa
Ayuda para las clases
 La herencia From identifica la superclase
 La herencia By identifica todas las subclases
 Las listas de Requerimientos de Clase se envían directamente a la clase
 Las listas de Requerimientos de Instancias se envían a una instancia de la clase
Figura
Figura
Ayuda para las clases
La ayuda para cada clase describe el propósito de la clase y cómo trabaja ésta. La descripción de la clase incluye una visión de conjunto
de la clase, con varios temas para detallar su posición en la jerarquía de clase, define sus requerimientos e indica la relación entre clases.
Heredar desde (From)
Identifica la superclase de la clase. Si no puede encontrar un requerimiento de una clase, busque su superclase para heredar sus
requerimientos.
Heredar a (By)
Identifica las subclases de la clase. Esta sección no aparece si no se heredaron las clases desde la clase.
Requerimientos de clase
Liste los requerimientos que se pueden hacer directamente a la clase (no a instancias de clase). Haga clic en el nombre del
requerimiento para ver la ayuda detallada.
Requerimientos de instancias
Liste los requerimientos que se pueden hacer a alguna instancia de la clase. Haga clic en el nombre del requerimiento para ver la
ayuda detallada.
Búsqueda de ayuda desde un script
 Seleccionar un objeto o requerimiento, y hacer clic en el botón de Ayuda del script
Figura
Búsqueda de ayuda desde un script
Haciendo clic en el botón de Ayuda del Script se inicia una búsqueda de ayuda del sistema de Avenue, usando el código seleccionado
actualmente en su script. Cuando necesite la ayuda para clases, requerimientos, o comandos, selecciónelo (seleccionándolo en el script)
y entonces haga clic en el botón de ayuda del script.
Si la clase, requerimiento o comando que ha seleccionado tiene un sólo tema, la ventana de ayuda del tema lo mostrará en pantalla. Por
otra parte, la caja de diálogo muestra los múltiples temas encontrados para su selección.
Ejercicio 4: Búsqueda de ayuda para las clases
Paso 1
Iniciar ArcView y abrir un proyecto
Paso 2
Navegar por la Jerarquía de Clase
Paso 3
Examinar la clase Aplication (Aplicación)
Paso 4
Examinar la clase Doc
Paso 5
Examinar la clase Vista
Ejercicio 4: Búsqueda de ayuda para las clases
En este ejercicio, utilizará la ayuda del sistema de Avenue para preguntar una serie de cuestiones.
Paso 1
Iniciar ArcView y abrir un proyecto
Si es necesario inicie ArcView.
Desde el menú File (Archivo), elija Open Project (Abrir Proyecto). Muévase al directorio exercice. Haga doble clic en ex4.apr para
abrir el proyecto de este ejercicio.
Cuando el proyecto se abra, observe que aparece la ventana del proyecto y una ventana llamada Script1.
Paso 2
Navegar por la jerarquía de clases
Conteste las siguientes cuestiones navegando por la Jerarquía de Clase.
Desde el menú de ayuda, elija Help Topics, Ayuda de temas.
Haga clic en Contents (Contenidos) y navegue a la Jerarquía de Clase de ArcView como se muestra a continuación:
Figura
¿Cuál es la primera clase de la Jerarquía de Clase?
Haga clic en Obj y salte a la ayuda de temas para preguntar lo siguiente:
¿Cuáles son los atributos (propiedades) de la clase Obj?
Haga clic en Back (Volver) para volver a la Jerarquía de Clase.
Muévase por la Jerarquía de Clase y observe que todas las clases se organizan desde la general a las específicas (ej. Desde la superclase
a las subclases). Ahora conteste las siguientes cuestiones:
¿Cuál es la superclase de File ?
¿Cuáles son las subclases de File?
¿Cuál es la superclase de MsgBox?
¿Cuáles son las subclases de MsgBox?
¿Cuál es la superclase de Shape?
¿Cuáles son las superclases de Shape?
¿Qué subclase de Shape tiene sus propias subclases?
Paso 3
Examinar la clase Aplication
Examine los atributos de la clase Aplication (Aplicación) y conteste las siguientes preguntas:
Liste los tres atributos de la clase Aplicación que tiene el comando Active:
¿Qué atributo se maneja si ArcView puede personalizarse?
¿Qué requerimiento devuelve a ArcView la personalización?
Haga clic en Back para volver a la Jerarquía de clase.
Paso 4
Examinar la clase Doc
Ahora examine la clase documento (Doc)
Desde el menú de ayuda, elija ayuda de temas.
Haga clic en Contents y navege a Functional overview of ArcView classes como se muestra a continuación:
Figura
Haga clic en Aplication Framework para saltar al Diagrama Modelo de Objeto (OMD).
Figura
¿Qué símbolo denota la relación de herencia?
¿Qué símbolo denota la relación de composición?
En el OMD, haga clic en la caja de la clase Doc y conteste a las siguientes cuestiones.
¿Cuál es la superclase de un Doc?
¿Cuál es la subclase de Doc?
¿DocGUI es una subclase de Doc?
Liste los atributos de la clase Doc
Observe que la herencia (superclase-subclase) que ve en la ayuda del tema clase Doc también estaba expresada en el Diagrama Modelo
de Objeto.
Paso 5
Examinar la clase Vista
Ahora, conteste algunas cuestiones sobre la clase Vista.
Desde la opción Index (Índice), tipo View (clase Vista), haga clic en Display (Presentación en pantalla), o en el Diagrama Modelo de Objeto
haga clic en View (Vista) para obtener el tema vista.
¿Cuál de los dos atributos de la clase Vista tiene alguna conexión con gráficos en la vista?
¿Cuál es la superclase de Vista?
¿Cuáles son la subclases de Vista?
¿Es el Tema una subclase de la Vista?
¿Qué son los requerimientos de Clase para la clase Vista?
Enmarque en un círculo los requerimientos de la siguiente lista, que puede entender una vista. Puede utilizar el índice de la ayuda para
encontrar un requerimiento o puede moverse con la cremallera de la ayuda de temas. Si no puede encontrar un requerimiento bajo la
ayuda del tema clase Vista, puede buscar su superclase.
Make
GetColor
GetActiveGUI
SetName
Is
Is Ready
Create
AddTheme
Revise sus respuestas a las cuestiones anteriores abriendo el script Results-Exercice 4.
Fin
S E C C I Ó N 5
Comprensión de eventos
Comprensión de eventos................................................................................... 5-2
Eventos del control..................................................................................... 5-4
Asignación de un script a un control........................................................... 5-6
Eventos del documento.............................................................................. 5-8
Asignación de un script a un proyecto........................................................ 5-10
Ejercicio 5: Asignación de scripts a eventos.................................................. 5-12
Comprensión de eventos
 Cuando un usuario actúa en una aplicación, se produce un evento.
 Los scripts se asignan a eventos.
 Cuando se produce un evento, se ejecuta un script.
Control + Script evento + Evento =
Operación ArcView
Figura
=
+
Figura
+
Figura
Figura
Comprensión de eventos
Los eventos como click, apply, open y close, son propiedades especiales de los controles, documentos y temas. Puede asignar scripts a
estos eventos. Una vez que lo haga, el script asignado se ejecuta si se produce el evento. Los eventos se desencadenan al actuar el
usuario en la GUI.
Eventos del Control
 La acción del usuario en un control provoca un evento Click o Apply.
 Click en un control ... ejecuta un script.
Figura
Figura
Figura
 Apply en una herramienta... ejecuta un script.
Eventos del Control
Los tres tipos de eventos asociados con controles son Click, Apply, y Update. El usuario provoca los eventos Click y Apply, actuando
sobre los controles de la GUI.
Click
Un evento Click se produce cuando se usa un control. Cuando se ejecuta la propiedad clic, se ejecuta el script asignado al control
en que se ha hecho clic.
Apply
Un evento Apply se produce cuando se usa una herramienta en un documento ventana. Cuando aplica una herramienta en un
documento, se ejecuta el script asignado al evento Apply del control.
Comprensión de eventos Update (de actualización)
Los eventos Update se producen cuando el usuario realiza una acción que cambia el estado del documento activo, tales como añadir un
tema a una vista, cambiar la visibilidad de un tema, hacer una selección, o un aumento del dibujo. Un script asignado a un evento Update
se ejecuta cuando se produce el evento Update. Para más información, busque la ayuda del tema: Understanding Events.
Asignación de un script a un control
 Doble-clic es una propiedad evento del control
 Elija un script desde el Gestor de Scripts
Botón Zoom In
Figura
Herramienta Chart Color
Figura
Asignación de un script a un control
En la Caja de Diálogo de Personalización , use la lista de propiedades para asignar un script a un control. Haga doble-clic en la propiedad
evento para visualizar el gestor de scripts, y elija el script que se ejecutará cuando se produzca el evento.
El Gestor de Scripts
La Caja de Diálogo del Gestor de Scripts lista todos los scripts que se pueden utilizar en el proyecto. El gestor de scripts lista todos
los scripts del sistema Gis ArcView y los nuevos scripts creados en el proyecto actual o en el proyecto por defecto home.
Propiedades Evento
Todas los campos de menú, botones, y herramientas tienen una propiedad click y responden al evento click, las herramientas tienen
también una propiedad Apply, y responden al evento Apply.
Usando ambas propiedades, puede tener un script que se ejecute cuando haga clic en el botón y otro cuando se aplique una
herramienta. Por ejemplo, haga clic en la herramienta Chart Color (Color del Gráfico) y ejecute un script que mostrará en pantalla la paleta
de color. Aplicando la herramienta Chart Color, en la ventana del gráfico, se ejecuta otro script que cambia el color de un dato señalado.
Asignación incorrecta de propiedades evento
Si usted asigna incorrectamente un script a la propiedad Click y ésta debe ser Apply, el script se ejecuta sin esperar a que el usuario
provoque el evento Apply (ej. Para usar el cursor en la ventana). Por ejemplo, si su script espera que el usuario haga una selección desde
la pantalla, asegúrese de que asigna al script la propiedad Apply; en caso contrario, el script se ejecutará sin esperar a que el usuario haga
la selección.
Eventos del Documento
 Todos los documentos tienen eventos open (abrir) y close (cerrar).
 Los proyectos también tienen los eventos Startup (arranque) y Shutdown (cierre).
 Cuando se abre o cierra la ventana de un documento, se ejecuta un script.
Abre un proyecto...
...se ejecuta el script de arranque
figura
Figura
Figura
Cierra un proyecto...
...se ejecuta el script de cierre
figura
Figura
Figura
Eventos del documento
Los tres tipos de eventos asociados con documentos son open, close, y update. El script del evento open (abrir), se ejecuta cuando se
abre un documento; el script del evento close (cerrar) se ejecuta cuando se cierra un documento; y el script de evento update (actualizar)
se ejecuta cuando el estado del documento actual cambia ( vea pág.5-5).
Los proyectos son un conjunto de documentos. Los proyectos también pueden tener propiedades de arranque o cierre que se asocian con
scripts. Por ejemplo, un script de arranque, puede iniciar un proyecto presentando en pantalla una imagen (banner), conectar una base de
datos externa, o preguntar por el acceso a la información. Un script de cierre, puede desconectar la base de datos externa, borrar ficheros
temporales, o dar un mensaje de despedida.
Asignación de un script a un proyecto
 Asigna un script al proyecto en la caja de diálogo de Propiedades del Proyecto.
Figura
Asignación de un script a un proyecto
Para asignar scripts a las propiedades de arranque y cierre de un proyecto, en la caja de diálogo de Propiedades del Proyecto, teclee el
nombre del script, o haga clic en el botón Load System Script (Carga de Script del Sistema) y elija un script desde el Gestor de Scripts.
Cuando se inicia ArcView, éste lee el proyecto por defecto del sistema, el proyecto por defecto home del usuario (si existe uno), y entonces
el script de arranque (si hay alguno asociado con el proyecto actual). Vea la sección 1, El Entorno de Desarrollo de ArcView, para más
información sobre el sistema y los ficheros de proyecto por defecto de home.
Asignar un script al documento
Para asignar un script a los eventos abrir y cerrar de un documento, use estos requerimientos:
aDoc.SetOpenScript (“aScriptName”)
aDoc.SetCloseScript (“aScriptName”)
Para más información, busque la Ayuda del Ttema: Doc.
Ejercicio 5: Asignación de scripts a eventos
Paso 1
Iniciar ArcView y abrir un proyecto
Paso 2
Crear un script y asignarlo a un evento Click de un botón.
Paso 3
Crear un script nuevo desde los scripts existentes del sistema.
Paso 4
Asignar scripts al proyecto
(opcional)
Paso 5
Asignar scripts a un menú nuevo
(opcional)
Ejercicio 5: Asignación de scripts a eventos
En este ejercicio, experimentará escribiendo nuevos scripts y asignándolos a controles en la GUI. También creará scripts de arranque y
cierre del proyecto, y los asignará al proyecto actual.
Paso 1
Iniciar ArcView y abrir un proyecto
Si es necesario, inicie ArcView.
Desde el menú File (Archivo), elija Open Project. Muévase al directorio exercice. Haga doble clic en el proyecto ex5.apr para abrir
este ejercicio.
Cuando abra el proyecto, verá la ventana del mismo.
Paso 2
Crear un script y asignarlo a un evento click de un botón.
Para este paso suponga que quiere escribir un script que abra una vista y un gráfico cuando el usuario haga clic en un botón en la barra de
botones del Proyecto.
En la ventana del proyecto, haga clic en el icono Scripts, entonces haga clic en New (Nuevo) para abrir un nuevo script. Aparecerá
una ventana de Script vacía llamada Script1.
El nombre de la vista que se abrirá es Atlanta. El gráfico se llama Atlanta Population by Country.
En la primera línea, teclee el siguiente código para establecer una variable llamada myView para la vista Atlanta:
myView = av.GetProject.FindDoc (“Atlanta”)
En la siguiente línea, teclee el siguiente código que establece la variable llamada myChart para el gráfico Atlanta Population by
Country:
myChart=av.GetProject.FindDoc(“Atlanta Population by Country“)
Añada las siguientes líneas a su script para abrir las ventanas de los documentos vista y gráfico:
myView.GetWin.Open
myChart.GetWin.Open
Su script será ahora como este:
Figura
Haga clic en el botón Compile (Compilar) para chequear los errores y compilar el script:
Figura
Haga clic en el botón Run (Ejecutar) para testear que el script abre la ventana y el gráfico.
Figura
Desde el menú File (Archivo), elija Close All (Cerrar todo), para cerrar la vista, el gráfico y el script.
Ahora que su script funciona, está preparado para asignarlo a un nuevo botón. La ventana del proyecto está activa y la GUI del proyecto
aparece con el nuevo botón (con una A mayúscula) en la barra de botones. El botón fue creado para usted.
Abra la caja de diálogo de Personalización
Debido a que usted quiere asignar su script a un botón A en la barra de botones del proyecto, asigne Project a Type y Buttons a la
Category.
En el editor de control, haga clic en el botón A para seleccionarlo.
Figura
Luego, asignará el Script1 a la propiedad Click del botón.
Haga doble clic en al propiedad Click que aparece vacía en la lista de Propiedades.
Figura
Seleccione Script1 en el Gestor de Scripts.
Figura
Ahora el Script1 está asignado a la propiedad evento Click del botón.
Figura
Ahora, testeará su nuevo script haciendo clic en el botón A de la GUI del proyecto.
Primero, minimice la caja de diálogo de Personalización. Active la ventana del proyecto con un clic en el botón A.
La ventana Atlanta y el gráfico Atlanta Population by Country se abrirán.
Paso 3
Crear un script nuevo desde scripts del sistema existentes.
En este paso, suponga que quiere crear un control que aumente en pantalla las entidades seleccionadas. ArcView ya permite esta
operación pero con dos controles: la herramienta Select Feature para seleccionar entidades y el botón Zoom to Selected para realizar
aumentos. Combinará los dos scripts existentes para crear un tercer script, el cual asignará a un nuevo control.
Cierre el gráfico y active la vista Atlanta. Abra la caja de diálogo de Personalización y asigne View a Type y Tools en Category.
Primero, compruebe que el script del sistema de ArcView se ejecuta cuando utiliza la herramienta Select Feature; entonces cargue el script
en un nuevo script.
Elija la herramienta Select Feature (Selección de entidades) para visualizar la lista de propiedades.
Figura
Observe que el script View.SelectPoint está asignado a la propiedad Apply de esta herramienta.
Figura
Minimice la caja de diálogo de Personalización.
Luego, cargue el script del sistema View.SelectPoint en el nuevo script vacío.
En la ventana del proyecto, haga clic en el icono Scripts, entonces con clic en New (Nuevo) se abrirá un nuevo script. El nuevo
script está vacío y se llama Script2.
Haga clic en el botón Load System Script (Carga de un script del sistema).
Figura
Desde el Gestor de Scripts, elija View.SelectPoint, entonces haga clic en OK para insertar este script del sistema en su nuevo
script.
Figura
Pulse <Enter> después de la última línea en su nuevo script para emplazar el segundo script del sistema.
Ahora, cargue el script del sistema de ArcView, View.ZoomSelected, que está asignado al botón Zoom to Selected.
Haga clic de nuevo en el botón Load System Script. Desde el Gestor de Scripts, elija View.ZoomToSelected y haga clic en OK.
De esta forma se inserta el script View.ZoomToSelected después del script View.SelectPoint.
Haga clic en el botón Compile para chequear los errores y compilar el script.
Ahora que su nuevo script está compilado, está preparado para asignarlo a un control. Recuerde, este script requiere que el usuario
seleccione las entidades desde la vista. Antes de asignar el script, necesita contestar tres cuestiones:
¿En qué tipo de documento (Vista, Tabla, Gráfico o Composición) trabaja el control?
¿Qué control es apropiado (Campo de menú, Botón o herramienta?
¿Qué evento se produce (Click o Apply) al ejecutar el script?
Conteste a la primera de las cuestiones y determine que nuevo script (Script2) se ejecutaría desde la herramienta de la barra de la Vista.
Active la vista Atlanta y abra la caja de diálogo de personalización. En la caja de diálogo de personalización, asigne a Type View
(Vista) y a Category Tools (herramientas).
En el Editor de Control, haga clic en la herramienta Select and Zoom. (Esta herramienta fue añadida para usted al ejercicio
ex5.apr).
Figura
Luego, asignará el Script3 a la herramienta Select and Zoom. Basado en su contestación a la tercera cuestión, asigne el script2 a la
propiedad evento Apply.
Haga doble clic en la propiedad Apply que aparece vacía en la lista de Propiedades. En el Gestor de Scripts, haga doble clic en
Script2 para asignarlo a la herramienta.
Figura
Minimice la caja de diálogo de Personalización y la ventana del script.
Ahora testeará su script utilizando la herramienta.
Con la ventana de la vista activa, haga clic en la herramienta Select and Zoom.
Seleccione un grupo de entidades englobándolas en una caja, y luego aumente las entidades seleccionadas en la vista.
Paso 4
Asignar scripts al proyecto
(opcional)
En este paso, creará dos nuevos scripts: Arranque y Cierre. Asignará uno para ejecutarlo cuando se abra el proyecto y otro se ejecutará
cuando se cierre el proyecto.
En la ventana del proyecto, haga doble clic en el icono de Scripts para abrir un nuevo script.
Desde el menú Script, elija Properties (Propiedades) y llame al script Startup.
El script Startup (Arranque) cambiará el título en la ventana de su aplicación (av) para el nombre de su compañía y visualizará el logotipo de
la misma.
Active Startup (Arranque), entonces haga clic en el botón Load Text File (Carga fichero de texto).
Figura
Desde el administrador de archivos, muévase al directorio data para seleccionar en él startup.ave.
Figura
En la primera línea de este script determine el nombre de la ventana de la aplicación (av). Reemplace la cadena por el nombre de la
compañía.
La siguiente línea mostrará una caja de mensaje con un logotipo (desde un fichero de gráficos llamado acme.tif) durante 8 segundos. El
título en la ventana de la caja de mensaje será Go ACME!.
Haga clic en el botón Compile para chequear los errores y compilar el script.
Figura
Ahora creará un script que se ejecute al cerrarse el proyecto.
En la ventana del proyecto, haga doble clic en el icono de Script para abrir un nuevo script.
Desde el menú Script, elija Properties (Propiedades) y llame al script Shutdown.
El script de cierre necesita al usuario para registrar este producto de software.
Active Shutdown, entonces haga clic en el botón Load Text File.
Desde el administrador de archivos, muévase al directorio data y seleccione shutdown.ave.
Figura
Haga clic en el botón Compile para chequear los errores y compilar el script.
Desde el menú File (Archivo) elija Close All.
Asigne los nuevos scripts a los eventos de arranque y cierre del proyecto.
Desde el menú Project (Proyecto), seleccione Properties (Propiedades).
Para el evento de arranque, haga clic en el botón Load System Script y desde el Gestor del Scripts, seleccione el script de arranque.
Desde el evento de cierre, haga clic en el botón Load System Script, y desde el Gestor de Scripts, seleccione el script de cierre. Haga clic
en OK cuando acabe.
Figura
Ahora, guardará el proyecto y testeará estos nuevos scripts abriendo y cerrando el proyecto.
Active la ventana del proyecto y desde el menú File (Archivo), elija Save Project As (Guardar como...). Muévase al directorio pavetemp y
guarde paveex5.apr.
Desde el menú File (Archivo), elija Close Project (Cerrar Proyecto). El script asignado al evento Shutdown y visualice el siguiente
mensaje:
Figura
Haga clic en OK para que desaparezca la caja de mensaje.
Ahora, desde el menú File (Archivo), elija Open Project (Abrir Proyecto). Muévase al directorio pavetemp y abra paveex5.apr. El script
asignado al evento de arranque ejecuta y visualiza este mensaje durante 8 segundos:
Figura
Desde el menú File (Archivo), elija Close Project (Cerrar Proyecto). El mensaje aparece de nuevo. Haga clic en OK para disminuir la caja
de mensaje.
Paso 5
Asignar scripts a un menú nuevo
En este paso, escribirá un script que le permita el usuario dibujar (abrir) los temas eligiéndolos desde un menú, en vez de hacer clic en sus
cajas de control en la Tabla de Contenidos. Esta posibilidad sería útil si necesitara ocultar la Tabla de Contenidos.
Abra el proyecto ex5.apr.
Se ha añadido un nuevo menú llamado Layers (Capas) a la GUI de la vista, con un campo de menú para cada tema en la vista Atlanta:
Population, Income y Education.
Figura
Primero, creará un script que visualice el tema Population.
En la ventana del proyecto, haga doble clic en el icono Scripts para abrir un nuevo script. Aparecerá una nueva ventana de Script
vacía llamada Script3.
En la primera línea, teclee el siguiente código para establecer una variable llamada aTheme para el tema Population en la vista
Atlanta:
aTheme = av.GetProject.FindDoc (“Atlanta”).FindTheme (“Population”)
Teclee esta línea para visualizar el tema:
aTheme.SetVisible (true)
Haga clic en el botón Compile para compilar el script y chequear los errores.
Ahora, cargará este script en dos nuevos scripts, y los modificará para los temas Income y Education.
Active la ventana del proyecto y haga doble clic dos veces más en el icono Scripts, para abrir dos nuevos scripts: Script4 y Script5.
Active Script4 y haga clic en el botón Load System Script. (Va a copiar el Script3 dentro de Script4).
Figura
Desde el Gestor de Scripts, elija Script3.
Edite el Script4 reemplazando Population por Income. Haga clic en el botón Compile.
Ahora copie el script3 en el script5.
Active Script5, haga clic en el botón Load System Script, y desde el Gestor de Scripts, elija Script3. Edite Script5 reemplazando
Population por Education haciendo clic en el botón Compile.
Luego, asignará estos scripts a los campos de menú.
Abra la caja de diálogo de personalización. Asigne View (Vista) a Type y Menus a Category.
En el editor de Control, haga clic en el campo de menú Population debajo del menú Layers (capas).
Figura
Haga doble clic en la propiedad Click en la lista de propiedades, y seleccione Script3 en el Gestor de Scripts.
De igual forma elija los campos de menú Income y Education, asignando Script4 a Income y Script5 a Education.
Cierre la caja de diálogo de personalización.
Ahora testeará sus scripts usando el menú Layers de la GUI de la vista.
Active la vista Atlanta. Haga clic en la caja de control del tema Population para apagarlo.
Desde el menú Layers, elija Population, aparecerá el tema population. La caja de control es chequeada automáticamente para
indicar el estado de la visualización.
Apague el tema Population haciendo clic en la caja de control. Ahora testee los campos de menú Income y Education.
Fin
S E C C I Ó N 6
Personalización de la aplicación y documento proyecto
Personalización de la aplicación y el documento proyecto............................ 6-2
La clase Aplicación..................................................................................... 6-4
Trabajar con la ventana de la aplicación.................................................... 6-6
Controlar la barra de estado de la aplicación............................................. 6-8
Ejecutar los scripts desde la aplicación...................................................... 6-10
Trabajar con el proyecto...............................................................................
6-12
Establecer las propiedades del proyecto...................................................
Nombrar la aplicación y el proyecto...........................................................
6-14
6-16
Ejercicio 6: Uso de la aplicación y proyecto....................................................
6-19
Personalización de aplicación y documento proyecto
 Utilizar la aplicación
 Usar la aplicación para ejecutar scripts
 Manejar el proyecto y sus documentos
Figura
Personalización de aplicación y documento proyecto
En este capítulo, trabajará con el objeto aplicación. Cuando inicie el GIS ArcView, se crea el objeto aplicación. La aplicación está asociada
con un proyecto de ArcView y sus documentos. En este capítulo usará el objeto aplicación para manipular ventanas de documentos,
ejecutar scripts y controlar la barra de estado, entre otras cosas. También aprenderá a manipular la ventana de ArcView y las ventanas de
los documentos que tienen la aplicación.
La clase Aplicación
 Cuando se inicia ArcView, se crea la aplicación (av)
 Referirse a la aplicación desde el teclado con el comando av.
 Entre la aplicación y el proyecto existe la asociación de uno a uno.
av.GetProject
 Entre proyecto y Doc, y entre proyecto y los DocGUI existe una asociación múltiple.
Av.GetProject.FindDoc (“World”)
Av.GetProject.FindGUI (“myGUI”)
 Entre Doc y DocWin existe una relación de uno a uno.
Av.GetProject.FindDoc (“World”).GEtWin
Aplicación
Extension
Objeto
Proyecto
Script
Script Editor
DocGUI
Gráfico
Doc
Composición
DocWin
Tabla
Vista
La clase Aplicación
La aplicación ArcView es la única instancia de la clase Aplicación, y se crea cuando se inicia ArcView. Cuando escribe el código de
Avenue™, se refiere a la aplicación desde el teclado con av. Iniciando desde av, puede encadenar requerimientos que le llevarán a otro
objeto que exista actualmente en la aplicación. De forma más técnica, av es el objeto raíz en el modelo de ArcView y el punto de inicio para
navegar por el modelo.
Diagrama modelo de objetos de la aplicación
Un diagrama modelo de objetos es una ayuda visual que le ayuda a escribir el código de Avenue. Mediante la navegación por los
diagramas modelo de objetos, puede descifrar la asociación entre objetos y determinados requerimientos que pueden enviarse.
Comenzando con el diagrama modelo de objeto de la estructura de la Aplicación, puede buscar requerimientos que son enviados a la
aplicación y a los objetos del proyecto.
Mediante la visualización de las relaciones entre clases, el diagrama modelo de objetos le ayuda sin duda, a dos cosas: elegir el
requerimiento apropiado para su estamento de Avenue, y colocar estos estamentos en el orden apropiado. Por ejemplo, si intentó
encontrar un documento, iniciaría con la aplicación, entonces tomaría el objeto, y encontraría el documento que quiere.
Para ayudar a elegir el requerimiento, utilice la asociación entre las clases mostradas en el diagrama modelo de objetos. Los
requerimientos Get... y Find... se utilizan con diferentes tipos de asociaciones. El requerimiento Get... trabaja con la asociación uno a uno ,
mientras que Find... trabaja con múltiples asociaciones.
av, Aplicación, y ArcView
Todos estos términos se refieren a lo mismo, av se refiere a ArcView o a la aplicación, av se utiliza para simplificar, ya que es más fácil de
teclear que ArcView o Aplicación.
Trabajar con la ventana de la aplicación
 Propiedades de las ventanas
av.MoveTo(20,20)
av.Resize (800,600)
av.TileWindows
av.CascadeWindows
 Documento y ventana activa
theActiveDoc = av.GetActiveDoc
theActiveWin = av.GetActiveWin
Figura
Trabajar con la ventana de la aplicación
Con el objeto aplicación puede asignar las propiedades de la ventana y manejar el documento activo y la ventana del documento. Busque
la ayuda de Avenue para la clase Application para encontrar los correspondientes requerimientos y propiedades (atributos).
La ventana de la aplicación
El requerimiento moveTo sitúa la esquina inferior izquierda de la ventana de la aplicación y especifica la localización del pixel en
una x,y específica. El requerimiento Move sitúa la ventana en relación a su posición actual especificando un incremento de x, e y en
pixeles. El requerimiento Resize, cambia el tamaño de la ventana de la aplicación. El parámetro del requerimiento Resize es el tamaño de
la x y la y en pixeles.
Ordene el mosaico de ventanas enviando el requerimiento TileWindows a la aplicación. Cuando ordene las ventanas en mosaico, se
abrirán todas y se mostrarán en pantalla sin solaparse.
El documento activo
Desde la aplicación, puede obtener el documento activo con el requerimiento GetActiveDoc y la ventana activa con el requerimiento
GetActive Win.
Controlar la barra de estado de la aplicación
 Visualizar mensajes
av.ShowMsg (“Creating themes...”)
av.ShowStopButton
Figura
 Mover la barra de progreso
‘procesando algo
av.SetStatus (25)
Figura
‘procesando más
av.SetStatus (50)
Figura
‘procesando más
av.SetStatus (75)
Figura
‘procesando más
av.SetStatus (100)
Figura
Controlar la barra de estado de la aplicación
El objeto aplicación controla la barra de estado (barra horizontal en la parte inferior de la ventana de la aplicación).
Los requerimientos ShowMsg y ShowStopButton muestran un mensaje y un botón Stop, respectivamente, en la barra de estado.
Utilice el requerimiento SetStatus dentro de un bucle para cambiar la barra de progreso. Un bucle moverá la barra de progreso
incrementándola desde la posición 0 a la posición 100 %.
Borre el botón Stop y la barra de progreso enviando el requerimiento ClearStatus.
Mover la barra de progreso
Puede usar un bucle For Each para mover la barra de progreso. Aprenderá sobre los bucles For Each en la sección Ramificaciones
y bucles.
for each y in 0 .. 100
av.setStatus (y)
end
‘asigna la barra de progreso
Limpiar la barra de estado
Los textos de mensajes, la barra de progreso, y el botón de Stop pueden borrarse de la barra de estado.
Un mensaje se borra utilizando el requerimiento ClearMsg.
Borre el botón de Stop y la barra de progreso enviando el requerimiento ClearStatus.
av.ClearMsg
av.ClearStatus
‘ Limpia el área de mensaje
‘ Limpia la barra de estado
Esperar para una operación
El cursor WaitCursor se parece a un reloj de vidrio.
av.UseWaitCursor
Ejecutar los scripts desde la aplicación
 Ejecutar un script desde otro script
 Utilizar la aplicación con el requerimiento Run
av.Run (“script name”,object)
 Pasar un objeto al script llamado
 En el script llamado, se utiliza SELF para referirse al objeto pasado
 Utilizar el estamento Return para devolver un objeto.
Compra 1
cost1= MsgBox.Input (“Enter Cost”,””,””)
a =av.run (“CalcTax, cost1)
MsgBox.Info (a.AsString, “Your Tax”)
Compra 2
cost2 = MsgBox.Input (“Enter Cost”,””,””)
b = av.run (“CalcTax”, cost2)
MsgBox.Info (b.AsString, “Your Tax”)
CalcTax
x = SELF.AsNumber * 0.75
Return x
Ejecutar los scripts desde la aplicación
Para ejecutar un script desde otro, envíe el requerimiento Run al objeto av. Run tiene dos parámetros: el nombre del script para ejecutar y
un objeto para pasar al script llamado. SELF es el comando que se utiliza en Avenue, en el script llamado para referirse al objeto pasado.
El script llamado puede almacenarse en el proyecto actual, en el proyecto de usuario por defecto, o en el proyecto por defecto del sistema.
La aplicación busca estos directorios en este orden para encontrar el script.
SELF
Utilice SELF en el script llamado para almacenar el objeto pasado desde el script principal. En el ejemplo de la página anterior,
cost1 es pasado desde Compra1 a CalcTax, entonces se almacena en SELF, convertido a número, multiplicado por el factor de impuesto
0.075, que entonces es devuelto al script principal, Compra1.
Devolver objetos al script principal que realiza la llamada
Un objeto puede ser devuelto al script principal con el estamento Return. En este ejemplo, la cadena Done script2 fue devuelta a
result, en el script principal.
Result = av.run (“script2”,””)
return “Done script2”
‘en el script principal
‘último estamento del script llamado
Si no usa Return en el script llamado, el último objeto creado en este script no es devuelto.
Requerimiento DelayedRun
El requerimiento DelayedRun ejecuta un script en un intervalo de tiempo (ej. Cada diez minutos). Para parar la ejecución del script,
renómbrelo o bórrelo.
Av.DelayedRun (aScript, anObject, timeDelay)
Trabajar con el proyecto
 Crear, nombrar y guardar un proyecto
theProject = Project.Make
theProject.SetFileName (“world.apr”.AsFileName)
theProject.Save
 Abrir y cerrar un proyecto
theProject = Project.Open (“world.apr”.AsFileName)
theProject.Close
 Manejar documentos en el proyecto
theView = theProject.FindDoc (“Asia”)
theProject.SetActive (theView)
theProject.RemoveDoc (theView)
Figura Figura
Trabajar con el proyecto
Puede crear un nuevo proyecto enviando el requerimiento Make a la clase proyecto. Este proyecto no está titulado y se le puede dar
nombre con el requerimiento SetFileName. SetFileName requiere un objeto FileName. Proporciona la cadena de la ruta de su fichero de
proyecto y lo convierte a FileName con el requerimiento AsFileName. Después de ser renombrado, puede salvarlo con el requerimiento
Save.
Puede abrir un proyecto existente con el requerimiento Open. El requerimiento Open también necesita un FileName. Cierre el proyecto
con el requerimiento Close.
Ficheros Object Data Base
Los ficheros de proyectos se almacenan en un fichero de texto con un formato especial llamado Object Data Base (ODB). Un ODB
permite almacenar y recuperar información desde un fichero. Esto permite salvar todos los componentes de un proyecto, y volver a
crearlos cuando se abra el fichero de proyecto. Para más información sobre ficheros ODB, busque la ayuda de tema: ODB.
Manejando documentos del proyecto
El requerimiento FinDoc devuelve un documento por su nombre. En este ejemplo, theView es la vista Asia. El requerimiento
SetActive activa un documento del proyecto en la ventana del proyecto. El requerimiento RemoveDoc borra un documento desde la
ventana del proyecto.
Establecer las propiedades del proyecto
 Asigna los scripts de arranque y cierre
av.GetProject.SetStartup (“Open”)
av.GetProject.SetShutdown (“Close”)
 Asigna el directorio de trabajo y el color de selección
av.GetProject.SetWorkDir (“c:\robb”.AsFileName)
av.GetPtoject.SetSelColor (Color.GetRed)
 Obtiene el autor, fecha de creación y comentarios
av.GetProject.GetCreator
av.GetProject.GetCreationDate
av.GetProject.GetComments
Figura
Establecer las de propiedades del proyecto
De igual forma que el usuario cambia las propiedades del proyecto desde la caja de diálogo de propiedades del proyecto, éstas pueden
cambiarse mediante el código de Avenue. Las versiones de los requerimientos Get... y Set... son capaces de identificar o cambiar algunas
de estas propiedades.
Arranque y Cierre
Puede especificar los scripts para ejecutar cuando se inicia o cierra su proyecto. Esto puede ser utilizado para inicializar variables o
borrar ficheros indeseados. Use los requerimientos Startup y Shutdown y especifique el nombre del script. Para más información sobre los
scripts Startup y Shutdown, vea la sección 2, Creando scripts en Avenue.
Otras propiedades
Use el requerimiento SetSelColor para definir un nuevo color de selección para las selecciones que haga en sus documentos.
SetSelColor necesita un color como parámetro.
Para establecer o cambiar el directorio de trabajo para el proyecto, utilice el requerimiento SetWorkDir. Para el parámetro de
SetWorkDir, dele la ruta de un directorio y conviértalo a un objeto FileName.
Para recuperar información sobre la creación del proyecto, o algunos comentarios almacenados con el proyecto, utilice estos
requerimientos: GetCreator, GetCreationDate y GetComments.
Nombrar la aplicación y el proyecto
‘ Cambia los nombres de la aplicación (av) y el proyecto
av.SetName (“Acme GIS Company”)
theProject = av.GetProject
theProject.SetName (“Redlands”)
Figura Figura
Nombrar la aplicación y el proyecto
Cuando inicia ArcView, se visualizan la ventana de la aplicación (llamada ArcView) y la ventana del proyecto llamada Untitled (Sin Título).
El título de la ventana de la aplicación se puede cambiar y renombrar el proyecto utilizando el script anterior.
Ejemplo
En el ejemplo, el requerimiento SetName se utiliza para cambiar el título en la ventana de la aplicación a ACME GIS Company.
Luego, se crea la variable theProject, tomándolo de la aplicación (referido como av en el script de Avenue). El requerimiento SetName se
utiliza para renombrar theProject.
Ejercicio 6: Uso de la aplicación y proyecto
Paso 1
Iniciar ArcView y abrir un proyecto
Paso 2
Modificar la ventana de la aplicación
Paso 3
Personalizar la barra de estado
Paso 4
Cambiar el nombre del proyecto
Paso 5
Escribir un script que ejecute otro script
(opcional)
Paso 6
Escribir un script que obtenga y visualice comentarios del proyecto.
Ejercicio 6: Uso de la aplicación y proyecto
En este ejercicio, trabajará con el objeto aplicación y escribirá el código que permite operaciones en la aplicación y el proyecto.
Paso 1
Iniciar ArcView y abrir un proyecto
Si es necesario, inicie ArcView.
Desde el menú File (Archivo), elija Open Project (Abrir Proyecto). Muévase al directorio exercice. Haga doble clic en ex6.apr para
abrir el proyecto para este ejercicio.
Cuando se abre el proyecto, no se abren los documentos.
Paso 2
Modificar la ventana de la aplicación
Escriba el script para mover la ventana de la aplicación, cámbiele el nombre y redimensiónela.
Abra el script Exercice 6, Step 2.
Mueva la ventana de la aplicación con el requerimiento MoveTo a la posición 100,100 pixeles.
Asigne el nombre a la aplicación con el requerimiento SetName para poner título a la ventana de la aplicación ACME GIS, Inc.
Redimensione la ventana de la aplicación con el requerimiento Resize a 800, 600 pixeles.
Compile y ejecute el Exercice 6, Step 2.
Observe los cambios de la ventana de la aplicación.
Cierre el script.
Paso 3
Personalizar la barra de estado
En este paso, editará un script existente para informar al usuario del progreso de una operación.
Abra el script Exercice 6, Step 3.
Inserte la siguiente línea de código debajo del comentario Show message in status bar.
Para visualizar un mensaje en la aplicación, envíe un requerimiento ShowMsg a la aplicación, con la cadena Running script...
como parámetro.
El bucle For Each moverá la barra de estado desde 0 a 100 por cien.
Entre el estamento For Each y el estamento End, añada el código para asignar el estado de la aplicación enviando el requerimiento
SetStatus con el parámetro percent. (Aprenderá sobre bucles For each en la siguiente sección Ramificaciones y bucles.
Inserte la siguiente línea de código bajo el comentario Clear message from status bar.
Limpie el mensaje desde la barra de estado de la aplicación enviando a ésta el requerimiento ClearMsg.
Compile y ejecute el Exercice 6, Step 3. Cuando finalice, cierre el script.
Paso 4
Cambiar el nombre del proyecto
Escriba un script que renombre el proyecto actual y lo guarde con el nuevo nombre.
Abra el script Exercice 6, Step 4.
Para obtener el proyecto actual, asigne la variable llamada myProject enviando a la aplicación el requerimiento GetProject.
Asigne el nombre del fichero myProject enviando el requerimiento SetFileName con el nombre del fichero como su parámetro.
Para crear la cadena del nombre del fichero, empiece con la ruta de su directorio personal y el fichero de proyecto world.apr (ej.
C:\temp\world.apr). Entonces envíe el requerimiento AsFileName a esta cadena para convertirla en un nombre de fichero.
Salve myProject enviando el requerimiento Save.
Compile y ejecute Exercice 6, Step 4.
Chequee el título en la barra de la ventana del proyecto para ver que el nombre del proyecto actual ha cambiado. Cuando acabe, cierre el
script.
Paso 5
Escribir un script que ejecute otro script
(opcional)
En este paso, escribirá dos scripts: ScriptA y ScriptB. El ScriptA ejecutará ScripB con av.Run.
Desde la ventana del proyecto, abra los scripts ScriptA y ScriptB.
El ScriptA obtendrá el nombre de la aplicación a y entonces ejecuta ScriptB, pasándole el nombre.
En el ScriptA, cree una variable llamada appName para almacenar el nombre de la aplicación; para hacerlo, pregunte a la
aplicación, enviando el requerimiento GetName a aplication.
Luego, cree una variable llamada aNewName para ejecutar la aplicación, usando el ScriptB y appName como parámetro del
requerimiento Run.
Cuando se devuelve el control al ScriptA, el nombre de la aplicación ha cambiado.
En el ScriptA, en la siguiente línea av.Run (donde se devuelve el control), asigne el nombre de la aplicación enviando el
requerimiento SetName para cambiar su nombre a aNewName.
El ScriptB muestra el nombre de la aplicación y entonces pregunta al usuario el nuevo nombre.
En el ScriptB, utilice MsgBox con el requerimiento Info para visualizar un mensaje. Para el mensaje, concatene la cadena The
current application name is con la aplicación almacenada en SELF. Utilice una cadena vacía (“”) para el título de la caja de mensaje.
Luego, cree una variable llamada newAppName utilizando un MsgBox con el requerimiento Input. Utilice el mensaje Enter a new
application name: escriba como título de la caja de mensaje Change Application name y utilice una cadena vacía como valor.
En la última línea del ScriptB, use el estamento Return para devolver newAppName al ScriptA, newAppName se devuelve como
aNewName al ScriptA.
Compile el ScriptA y el ScriptB.
Para testear ambos scripts, active el ScriptA y ejecútelo. Cuando pida un nombre para la aplicación, introduzca el nombre que
quiera.
Observe que el título de la ventana de la aplicación cambia para mostrar el nuevo nombre. Cuando acabe, cierre el script.
6
Escribir un script que obtenga y visualice comentarios del proyecto.
Escriba un script que recupere los comentarios del proyecto actual y los muestre en pantalla como el mensaje en la caja de mensaje.
También obtiene la fecha de creación del proyecto y visualiza el título en la caja de mensaje.
Fin
S E C C I Ó N
7
7. Ramificaciones y bucles
Ramificaciones y bucles
El estamento If
Expresiones y objetos booleanos
El estamento While
El estamento For Each
Listas
Uso de listas con cajas de mensaje
Continue, Break, Return y Exit
Aplicación de lo anterior
Ejercicio 7: Ramificaciones y Bucles
7-2
7-4
7-6
7-8
7-10
7-12
7-14
7-16
7-18
7-2
Ramificaciones y bucles
 Estamentos de ramificación
If Then
 Expresiones booleanas (true o false)
 Estamentos de bucles
While
For Each
 Listas
Ramificaciones y bucles
Avenue tiene estamentos que soportan operaciones condicionales y de bucles. Las ramificaciones usan condiciones para
determinar el código que debe ejecutarse en cada caso.
Los estamentos de bucles usan comúnmente colecciones o grupos de objetos para determinar
cuántas veces se debe aplicar un determinado código. Los bucles pueden también usar condiciones booleanas para determinar
si debe ejecutarse o no un determinado código y cuando debe parar.
El estamento If
 Ramificaciones condicionales
If (Boolean expression) then
‘ do something
else
‘ do something different
end
 Ejemplo: verificar una password
‘ Script de inicio para el proyecto La Banks
thePword = MsgBox.Password
if ( thePWord=“ cheddar” ) then
av.GetProject.FindDoc (“Los Angeles Banks”).GetWin.Open
else
MsgBox.Info (“Sorry, incorrect password”,”Password”)
av.GetProject.Close
end
El estamento If
El estamento If Then usa una condición ( p.e. una expresión booleana) para determinar qué parte de un script debe jecutarse.
Se puede chequear una condición y, dependiendo de si es verdadera (true) o falsa (false), ejecutar diferentes líneas de código.
Cada estamento If Then debe tener su correspondiente End.
Uso de ElseIf
El estamento ElseIf se usa para anidar estamentos condicionales múltiples
if ( condición 1) then
‘ requerimiento bloque 1
elseif ( condición 2) then
‘requerimiento bloque2
elseif (condición 3 ) then
‘requerimiento bloque 3
else
‘requerimiento bloque 4
end
Expresiones y objetos booleanos
 Existen dos objetos booleanos: true y false
 Se pueden asignar directamente o ser devueltos desde un requerimiento
done = false
status = TheTheme.IsVisible
editStat = myTable.CanEdit
ok= MsgBox.YesNo ( “¿Desea añadir ahora más registros? ”,” ”,true )
 Expresiones booleanas entre paréntesis
( passwd = “shana” )
( yourNumber >36 )
 Creación de expresiones compuestas con and, or , xor o not
( ( YourResponse = “ yes” ) and ( yournumber >36 ) )
( ( oldNumber < newNum ) or ( MyThm.IsVisible))
( not (aValue > 100 ) ) ‘igual que ( ( aValue > 100 ) .Not)
Expresiones y objetos booleanos
Existen dos instancias de clase booleana: true y false. Éstas pueden ser asignadas directamente usando las palabras clave true
y false, o pueden ser devueltas desde un requerimiento.
Los requerimientos que comienzan con Is, Can y Has devuelven objetos Booleanos, así como algunas cajas de mensaje, por
ejemplo MsgBox.YesNo.
Las expresiones booleanas constituyen la componente condicional de los estamentos If y While en Avenue. Las expresiones
booleanas deben evaluarse a true o false. y deben ser encerradas entre paréntesis.
Expresiones compuestas
Las expresiones compuestas se crean usando and, or , xor y not.
Se puede negar un objeto booleano (true o false) con el requerimiento Not, usando los dos formatos que aparecen en la última
línea de la página anterior.
La evaluación de una expresión booleana compuesta finaliza cuando se determina el resultado de la expresión; así, cuando se
usa and, se puede ahorrar tiempo resolviendo un pequeño testeo antes de uno largo. La técnica se muestra abajo.
( ( shortTest ) and ( longTest ) )
‘ ahorra tiempo
El estamento While
 Lleva a cabo un conjunto de requerimiento mientras una condición sea true
While (condición)
‘ algún requerimiento
‘ la condición debe cambiar
end
 Ejemplo: sumar un conjunto de números
sum = 0
start = true
While (start)
TheValue = MsgBox.Input ( “Introduce un valor”,”Formato de entrada”,” ” )
if (theValue<>nil) then
sum = sum + theValue. AsNumber
else
start = false
MsgBox.Info(“El total es ”++sum.AsString,” Resultado” )
end
end
El estamento While
El bucle del estamento While recorre un conjunto de requerimientos tanto tiempo como una condición sea true. Cuando la
condición cambie a False, el bucle se detiene. Para asegurar no encontrarse un bucle mal finalizado, incluya en el bucle un
estamento que cambie la condición de true a false. Cada estamento While debe tener su correspondiente estamento End.
En el ejemplo anterior, la caja de mensaje de entrada se visualiza en la pantalla, y continúa sumando valores dados por el
usuario. Cuando el usuario haga click en Cancel, theValue se asigna a nil (nulo), y se ejecuta la rama Else; start se asigna a
false, y se visualiza el total. En la siguiente iteración del bucle, el valor de start es false, y el bucle se finaliza.
El objeto Nil
El objeto Nil es un objeto que no tiene valor. Se devuelve Nil, por ejemplo, cuando se pide al usuario que escriba una cadena en
una caja de mensaje y éste no escribe nada, hace clic en Cancel o quita la ventana.
Atrapar errores
Para asegurar que el valor de entrada es un número real, chequee para ver si
devuelto es una instancia de la clase number (número):
if ((theValue <>nil))and(theValue.IsNumber)).
El estamento For Each
 Aplica un conjunto de requerimientos a cada objecto en una colección
For each anObject in aCollection
‘ bloque de requerimiento
end
 Activa cada tema en la vista
theThemeList = theView.GetThemes
for each thm in theThemeList
thm.SetVisible (true)
end
 Intervalos e incrementos
for each num in 0 . . 5 by 2
MsgBox.Info(num.AsString, “The number is . . . ” )
end
el valor
El estamento For Each
El bucle del estamento For Each recorre cada objeto en una colección ( p.e. una lista) y lleva a cabo una serie de
equerimientos. El bucle inicializa anObject dando el primer objeto en aCollection. El bucle continúa hasta que se lea el último
objeto de la colección. Cada estamento For Each debe tener su correspondiente estamento End. En el ejemplo anterior, en
cada iteración de el bucle, se lee y devuelve un tema de la lista de temas.
Intervalos e incrementos
For Each también trabaja con rangos de números, fechas y tiempo como expresiones, usando el requerimiento interval
intervalo(..)). Un incremento puede aplicarse a intervalos usando la clave by. En el ejemplo anterior, num comienza con 0 y se
incrementa en 2 en cada iteración. El bucle se detiene cuando num es igual o mayor que 5.
Listas
 Una colección ordenada de objetos
 Crear una lista
theList = {theCompany, “Phone”, 157.50}
theThemeNames ={“Banks”,”Roads”,”Malls” }
theThemeList = theView.GetThemes
newList = List.Make
‘ con llaves
‘ con Get ...
‘ con Make
 Añadir objetos a la lista
theThemes.Insert (“City”)
theThemes.Add (“Streets”)
‘ al principio de la lista
‘ al final de la lista
 Referenciar objetos en una lista
Índices:
0
1
2
myList = {“City”,”Banks”,”Streets”}
thePoints = myList.Get (1)
myList.Set (1, “Finance”)
theIndex= myList.FindByValue(“City”)
theCount= myList.Count
myList.Remove(2)
‘ thePoints es Banks
‘ Cambia Banks por Finance
‘ El índice es 0
‘ El contador es 3
‘ borra Streets
Listas
Una lista es un grupo ordenado o colección de objetos. Una lista puede contener objetos de diferentes tipos. Por ejemplo,
adenas, temas y números pueden ser miembros de la misma lista. Las listas se usan comúnmente en bucles y cajas de
mensaje.
Una colección es una clase abstracta; esta subclase incluye BitMaps, Dictionary (Diccionarios), List(Listas), NameDictionary
(Diccionarios de nombres )y Stacks (pilas). (Los diccionarios se explican en la sección 12.)
Creación de listas
Existen varios caminos para crear una lista. Cualquier técnica que se elija resulta en un objeto lista ( p.e. una instancia de una
Lista)
Se puede crear una lista asignando un grupo de objetos, encerrados entre llaves {}, a
una variable lista.
Se puede enviar una requerimiento a un objeto que devuelva una lista. La mayoría de los requerimientos que inician una lista
con Get ... devuelve una lista: por ejemplo, el requerimiento GetThemes devuelve la lista de temas en la vista, y el
requerimiento GetDocs devuelve una lista de documentas en un proyecto.
Se puede crear una lista con el requerimiento Make. Se puede poblar una lista usando los requerimientos Insert y Add. Insert
coloca un nuevo objeto al principio de la lista, y Add coloca el nuevo objeto al final.
Referenciar objetos en una lista
Cada objeto en una lista se referencia con un número índice. El índice comienza con 0 para el primer objeto y termina con
<número de objetos > -1. El requerimiento Get devuelve un objeto por su número índice, y Set cambia el valor de el objeto. Use
el requerimiento Find para devolver el índice de el objeto especificado; use FindByValue si el objeto especificado en una cadena
o un número. Count devuelve el número total de objetos en las lista, y Remove borra un objeto por el número de índice.
Uso de listas con cajas de mensaje
MsgBox.Choice
theThemeList = theView.GetThemes
theTheme = MsgBox.Choice (theThemeList, “Elige un tema”, “Selección de tema”)
MsgBox.MultiInput
labelsList = {“Nombre”,”Dirección”,”Número de teléfono”}
defaultList ={“Bernie Szukalski”,”380 New York Street”,”909.793.2853”}
‘ La lista default podría estar compuesta de cadenas vacías {“ ” ,“ ” ,“ ”}
theDataList = MsgBox.MultiInput ( “Añade cliente” ,” Datos del cliente”,labelsList,defaultList)
Uso de listas con cajas de mensaje
Las listas se usan normalmente con cajas de mensaje que presenta selecciones o campos de entrada y obtienen información
desde el usuario.
Cajas de mensaje
Choice y List
Los requerimientos Choice, List y MultiList se envían a una MsgBox para presentar las opciones del
usuario. Un requerimiento Choice visualiza las opciones en una lista desplegable; el requerimiento List visualiza las opciones es
una lista tipo scrolling (cremallera); y el requerimiento MultiList permite seleccionar varios objetos desde una lista scrolling.
Choice y List devuelven un objeto; MultiList devuelve una lista de objetos.
MsgBox.Choice(aList,aMessage, aTitle)
MsgBox.List(aList,aMessage, aTitle)
MsgBox.MultiList(aList,aMessage, aTitle)
Use el requerimiento AsString cuando la lista de opciones esté formada en su totalidad por objetos tipo cadena.
MsgBox.ChoiceAsString(aList,aMessage, aTitle)
MsgBox.List AsString(aList,aMessage, aTitle)
Cajas de mensaje
MultiInput
Envíe el requerimiento MultiInput a MsgBox para crear una formato de entrada para que rellene el usuario. El objeto devuelto
desde el requerimiento
MultiInput es una lista.
MsgBox.MultiInput(aList,aMessage, aTitle,aListOfLabels,aListOFDefaults)
Continue, Break, Return y Exit
 Altera el flujo normal de control
 Continue salta la iteración actual del bucle u continúa a la siguiente
for each num in 1 .. 5
if (num =3) then
continue
Else
‘MsgBox.Info (num.AsString,” ”)
end
‘ 1,2,4 y 5 son visualizados, 3 se salta
 Return termina inmediatamente el script actual
for each num in 1 .. 5
if (num =3) then
break
Else
‘MsgBox.Info (num.AsString,” ”)
end
‘ 1,2 son visualizados, luego Break para el bucle
 Return termina inmediatamente el script
 Exit termina todos los scripts en marcha
Continue, Break, Return y Exit
Use Continue, Break, Return y Exit para modificar el flujo de control en el bucle.
Continue
Cuando se encuentra un estamento Continue, cualquier paso remanente en la iteración actual se ignora y
el control pasa a la siguiente iteración en el bucle
Use Continue par saltar el proceso de los elementos seleccionados o que cumplan una determinada
condición.
Break
Cuando un estamento Break es encontrado, el bucle encerrado más próximo
finaliza y el control pasa al estamento siguiente del estamento End del bucle.
Return
Cuando se encuentra un estamento Return, finalice inmediatamente el script actual.
Exit
Termina todos los scripts en curso.
Puesta en práctica conjunta
 Uso estamentos For Each múltiples con una estamento If Then.
Puesta en práctica conjunta
Los scripts con frecuencia están formados de estamentos múltiples, o usan varias veces el mismo estamento. El ejemplo de la
página anterior usa el estamento If Then dentro de un estamento For Each y dos For Each dentro de un estamento If Then.
Ejemplo
El ejemplo permite al usuario tres intentos de introducir la password correcta. Si el usuario introduce la password correcta, se
visualiza una lista de temas. El usuario entonces selecciona uno o más temas para hacerlos visibles cuando se abra la vista.
Después, el script finaliza usando el estamento Return. Si el usuario falla al introducir la password correcta en tres intentos, el
programa notifica al usuario que la password es incorrecta y se cierra el proyecto.
Ejercicio 7:
Ramificaciones y Bucles
Paso 1
Iniciar ArcView y abrir un proyecto.
Paso 2
Crear y visualizar una lista de temas.
Paso 3
Uso de listas para diseñar un formato de entrada de datos de clientes.
Paso4
opcional
Uso de un estamento If Then para chequear los temas activos.
Paso 5
Uso de un estamento For Each para conmutar la visibilidad de un tema.
Ejercicio 7:
Ramificaciones y Bucles
En este ejercicio, se podrán practicar las ramificaciones y bucles usando listas, los estamentos If Then y el estamento For Each.
Paso 1
Iniciar ArcView y abrir un proyecto.
Es necesario iniciar ArcView. Desde el menú Archivo (File), elija Abrir Proyecto (Open Project). Moverse al
directorio ejercicio. Hacer doble clic en ex7.apr para abrir el proyecto para este ejercicio.
Cuando el proyecto se abra, se verá la ventana de proyecto con el script del ejercicio 7, paso 2 y abierta la
vista Atlanta.
Paso 2
Crear y visualizar una lista de temas
Escribirá un script para visualizar una lista de temas en una caja de mensaje, permite al usuario elegir un
tema y hacer un informe del tema seleccionado.
En el ejercicio 7, paso 2, cree una variable llamada TheView enviando a application (aplicación) equerimiento
GetActiveDoc.
Después, cree una lista de temas llamada theThemeList enviando el requerimiento GetThemes a theView (la
vista).
Cree una variable llamada theTheme enviando a una MsgBox el requerimiento Choice para visualizar
theThemeList. El mensaje es Seleccione un tema. El título sobre la caja de mensaje debe decir Temas para
Atlanta. Para construir este título use “Temas para”++theView.GetName.
Envíe a MsgBox el requerimiento Info para visualizar el tema seleccionado por el usuario. Tome el nombre de
theTheme enviando el requerimiento GetName (esto también crea la cadena requerida). El título de la caja de
mensaje El tema seleccionado
Compile y corra el script para testear éste. Cuando acabe, cierre el script.
Paso3
Uso de listas para diseñar un formato de entrada de datos de clientes.
Escriba un script que pida al usuario el nombre de la compañía, la dirección y número de teléfono y que
haga un informe con el número de teléfono. Usará la caja de mensaje MultiInput para crear un formulario con
la información de entrada.
Use la ayuda par responder a las siguientes cuestiones acerca del requerimiento MultiInput
¿Cuales son los cuatro parámetros? ¿Cual es la clase de cada parámetro?
Parámetro 1:
Parámetro 2:
Parámetro 3:
Parámetro 4:
Clase:
Clase:
Clase:
Clase:
¿Qué clase objeto devuelve el requerimiento MultiInput?
MultiInput incluye dos listas como parámetros. La lista Labels especifica las etiquetas del campo de entrada,
y la lista Defaults especifica los valores por defecto para los campos de entrada. En el ejemplo de abajo, las
etiquetas de los campos de entrada son Nombre de Compañía, Dirección, y Número de Teléfono. Los
valores por defecto para los tres campos de entrada son ESRI, 380 New York Street, y (909) 793-2853.
Abra el ejercicio 7, paso 3. Inicie el script creando dos variables lista. una para las etiquetas llamadas
theLabels y la otra para los valores por defecto llamada theDefaults.
Cree una variable llamada theData enviando el requerimiento MultiInput a MsgBox para que el usuario pueda
introducir los datos del Cliente. El título de la caja de ensaje es Lista de Clientes. Use theLabels y theDefaults
como los últimos dos parámetros.
Después extraerá y hará un informe con el número de teléfono y nombre de la compañía a partir de la lista
devuelta
Cree una caja de mensaje Info. Para el mensaje, tome el número de teléfono enviando a theData el
requerimiento Get con número de índice(2). Para el título, tome el nombre de la compañía enviando
a theData el requerimiento Get con número de índice (0).
Compile y corra el script. Mientras está introduciendo los datos en la caja MultiInput, use la tecla
<Tab> para moverse entre las cajas de entrada. Cuando acabe, cierre el script.
Paso4
Uso de un estamento If Then para chequear los temas activos.
En este paso, usará ele estamento If Then para chequear si una vista tiene algún tema activo y
presentar una caja de aviso si fuera necesario.
Abra el script del Ejercicio7, paso4. o Cree una variable llamada theView enviando a application (aplicación) el
requerimiento GetActiveDoc.
Cree una variable llamada theThemes enviando a theView el requerimiento
GetActiveThemes.
Inicie un estamento If Then. Para la condición, primero cuente cuántos temas hay en theThemes enviando el
requerimiento Count. Después testee si el contador es menor que uno.
Si el contador es menor que uno, envíe una caja de mensaje de aviso (Warning) al usuario, con el mensaje Al menos
debe activarse un tema, y sin título.
Use Exit para finalizar el script
Si no ( si hay al menos un tema activo) envíe una caja de mensaje de elección (Choice ) al usuario que visualice la
lista theThemes. Para el mensaje, escriba Seleccione un tema para editar.
Finalice el estamento if Then
Compile el script. Haga al menos un tema activo y corra el script. Córralo de nuevo sin temas
activos. Cuando acabe, cierre el script.
Paso 5
Uso de un estamento For Each para conmutar la visibilidad de un tema.
Escriba un script que conmute la visibilidad de todos los temas en una vista. Inicie el script tomando la vista actual y
creando una lista de los temas de la vista.
Abra el script Ejercicio 7 , paso 5
Cree una variable llamada theView enviando a application (aplicación) el requerimiento GetProject. después el
requerimiento FindDoc para encontrar la vista Atlanta.
Cree una variable llamada theThemes enviando a theView el requerimiento GetThemes.
Después, use el estamento For Each para conmutar la visibilidad de todos los temas en la vista. Si el tema está
visible, que lo ponga invisible. Si el tema está invisible, que lo ponga visible.
Escriba el bucle For Each usando cada t (tema) en la lista TheThemes.
Dentro del bucle, cree una variable llamada vis enviando a cada t (tema) el requerimiento IsVisible.
Cambie la visibilidad de cada t (tema) con el requerimiento SetVisible. Para el parámetro, use la variable vis y cambie
el valor booleano con el requerimiento Not.
Finalice el bucle For Each
Compile y corra el script para testear éste. Cierre el script cuando acabe.
End
S E C C I Ó N
8
8. Trabajo con temas y leyendas
Trabajo con temas y leyendas
8-2
La clase Theme (tema)
Temas de entidades
Añadir un temas a una vista
Ajustar la simbología de un tema
Cambiar la simbología de un tema
Clasificar la leyenda de un tema
Ordenar temas en la TOC
8-4
8-6
8-8
8-10
8-12
8-14
8-16
Ejercicio 8: Creación de temas nuevos
8-19
Trabajo con temas y leyendas
 Creación de temas
 Ajustar simbología de temas
 Crear clasificaciones de leyenda de temas
Trabajo con temas y leyendas
En esta sección se aprenderá a crear un temas a partir de las diferentes fuentes de datos y cómo establecer la simbología de un
tema y clasificaciones de leyenda usando el código de Avenue.
Ejemplos: Cuando se añade un tema nuevo a una vista, ArcView le asigna un color arbitrario. Con Avenue se puede añadir una tema a una
vista y controlar su color y clasificación.
ArcView coloca los temas nuevos al principio de la Tabla de Contenidos (TOC). Esto puede ser un problema si el tema nuevo es un
tema de polígonos, imágenes o rejilla(grid), debido a que estos puede tapar a los otros temas. Usando Avenue, se puede controlar el orden
de los nuevos temas, ordenándolos al final de la Tabla de Contenidos.
La clase Tema
 Una vista está compuesta desde ninguno hasta muchos temas.
 Un tema representa una fuente de datos sencilla.
 Usar ScrName para definir la fuente de datos de un tema.
 Existen cuatro clases de temas.
Cada tema en una vista representa una fuente de datos espacial. La clase Tema permite visualizar una variedad de temas reunidos
en una sola vista. Cada tema tiene un ScrName asociado que define su fuente de datos.
Temas de Entidad
Los temas de entidad o Fthemes, soportan fuentes de datos de entidades tales como shapefiles, coberturas, capas de librería o
bases de datos ArcStorm.
Temas de Imágenes
Los temas de Imágenes o Ithemes, soportan fuentes de datos de imágenes. Un Itheme puede crearse desde cualquier fichero de
imágenes que reconozca ArcView.
Temas de Bases de Datos
Los temas de Bases de Datos o DBThemes soportan fuentes de datos
SDE (Turbina de Base de Datos Espacial).
Temas de Rejilla
Los temas de rejilla o Gthemes soportan las fuentes de datos raster que se pueden usar con la extensión de Análisis Espacial de
ArcView.
Temas de Entidades
 Cada tema de entidades (FTheme) está asociado con una tabla y con una leyenda.
 Cada leyenda está compuesta de uno o muchos símbolos y clases.
 Cada tabla de entidades (FTab) tiene desde ninguno a muchos campos.
Temas de Entidades
Los temas de Entidades a los que nos referimos como FThemes, soportan operaciones sobre un tema tales como cambiar su simbología y
clasificación en la leyenda. La leyenda de un tema es un conjunto de símbolos y clases. Una tabla de entidades a la que nos referimos
como FTab está asociada con cada Ftheme. Los campos en la Ftab proporcionan los datos para clasificar temas de entidades.
Añadir un tema a una vista
 Crear un nombre de fuente de datos
desde una cobertura:
dataSrc = SrcName.Make (“c:\avdata\streets line”)
desde un shapefile:
dataSrc = SrcName.Make (“c:\avdata\streets.shp”)
 Crear el tema
theTheme = Theme.Make(dataSrc)
 Añadir el tema a una vista
theView = av.GetProject.FindDoc(“Redlands”)
theView.AddTheme(theTheme)
Añadir un tema a una vista
Se puede crear un SrcName enviando el requerimiento Make y especificando una fuente de datos como una cadena de path que identifique
la localización de los datos. Cuando se usen coberturas de ARC/INFO como fuente de datos, se requiere junto con la cadena del path, un
tipo de entidad (polígono, línea, punto, etc).
El SrcName se usa para crear un nuevo tema enviando el requerimiento Make a la clase Tema.
Añade un nuevo tema a la vista, pero previamente buscando la vista y después enviando a ésta el requerimiento AddTheme con el nuevo
tema como parámetro.
Crear un tema a partir de una fuente de datos x, y
El ScrName puede crearse desde una tabla que contenga coordenadas x,y.
El ejemplo demuestra cómo se crea una ScrName desde una tabla en el proyecto actual y se usa para crear un tema.
theVTab = av.GetProject.FindDoc ( “coords.txt” ).GetVTab
xField = theVTab.FindField ( “xcoord” )
yField = theVTab.FindField ( “ycoord” )
theXYScr = XYName.Make( TheVtab, xField,yField )
newTheme = Theme.Make( theXYSrc )
theView = av.GetProject.FindDoc( “Redlands” )
theView = AddTheme( newTheme )
Ajustar la simbología de un tema
 Toma una lista de símbolos de leyenda
theLegend = theTheme.GetLegend
theLegendSyms = theLegend.GetSymbols
 Toma la Ventana de Símbolos y la Paleta de Colores
thePalette = av.GetSymbolsWin.GetPalette
theColors = thePalette.GetList (#PALETTE_LIST_COLOR)
 Asigna el color del símbolo
firstSym = theLegendSyms.Get(0)
firstSym.SetColor (theColors.Get(4))
 Redibuja la leyenda y activa el tema
theTheme.InvalidateLegend
theTheme.SetVisible (true)
Ajustar la simbología de un tema
Después de añadir un tema a una vista, se puede controlar su simbología cambiando la leyenda del tema. Empiece tomando la leyenda del
temas desde thetheme con el requerimiento GetLegend. Después, tome la lista de símbolos en la leyenda con el requerimiento
GetSymbols. En el ejemplo anterior, hay solo un símbolo en la lista
Ventana de símbolos y paleta
Cada aplicación de ArcView tiene una ventana de símbolos a través de la que se accede a una paleta que contiene símbolos. Envíe el
requerimiento GetsymbolWin a la aplicación y después use el requerimiento GetPalette para recuperar la paleta. Con la paleta, use GetList
con una enumeración que especifique qué lista de símbolos desea. En el ejemplo anterior, lista de colores desde la paleta de color se
especifica con #PALETTE_LIST_COLOR.
Símbolo
Use el requerimiento Get con el número de índice para tomar un símbolo desde la lista de símbolos. Cada símbolo tiene asociado un color.
Para asignar el color, envíe al símbolo el requerimiento SetColor. El requerimiento SetColor precisa un color como parámetro. Use el
requerimiento Get con la lista de colores para tomar un color.
Redibujar la leyenda
Después de cambiar los símbolos en una leyenda, la leyenda debe redibujarse en la tabla de contenidos (TOC). Use el requerimiento
InvalidateLegend sobre el tema para redibujar su leyenda. El término invalidate se refiere a la necesidad de refrescar una ventana que no
visualiza la información actual (p.e. símbolos).
Cambiar la simbología de un tema
 Tomar el símbolo y reasignar su color y tamaño
theSyms = theLegend.GetSymbols
theSyms.get(0).SetColor( theColors.Get(6))
theSyms.get(0).SetSize(2)
 Redibujar el tema y su leyenda con un nuevo símbolo
theTheme.UpdateLegend
Cambiar la simbología de un tema
Cuando se cambia la simbología de una tema ya visualizado en la vista, se deben redibujar ambos, la leyenda y el tema.
Actualizar el mapa con los cambios en la leyenda Use el requerimiento UpdateLegend después de cambiar la simbología de un tema. El
requerimiento UpdateLegend actualiza la visualización del mapa y la leyenda de un tema en la TOC para que se corresponda con los
nuevos símbolos.
Salvar y grabar leyendas
Las leyendas deben salvarse en un fichero de leyenda (.avl), y cargar éste en el nuevo tema. Ésta es una forma para mantener la
integridad de las leyendas de temas en las vistas, composiciones y
proyectos.
‘Salvar una leyenda
theLegend.Save (“streets.avl”.AsFileName)
‘Cargar una leyenda para un nuevo tema
theLegend.SetFieldNames
({myTheme.GetFTab.FindFIeld(“st_code”)})
theLegend.Load (“streets.avl”.AsFileName,
#LEGEND_LOADTYPE_ALL)
Clasificar la leyenda de un tema
 Asigna el tipo de leyenda del tema
theTheme = theView.FindTheme(“Nwtracts”)
theLegend = theTheme.GetLegend
theLegend.SetLegendType(#LEGEND_TYPE_COLOR)
 Elige un método de clasificación y número de clases
theLegend.Interval(theTheme,”Med_hh_in”,4)
 Redibuja el tema y su leyenda
theLegend.UpdateLegend
Clasificar la leyenda de un tema
Los temas se clasifican en base a un atributo en su tabla de temas. Dicho atributo se identifica por una cadena que referencia al nombre
del campo.
Ver sección 9. Creación y consulta de tablas, para ver más información sobre tablas de entidades.
Métodos de clasificación
Hay 5 métodos de clasificación de leyendas: Intervalos iguales, Cuantiles, Áreas iguales , Desviación Standard, Rupturas naturales y Único.
Envíe a la leyenda uno de los requerimientos, Interval, Quantile, Area, StdDev, Natural o Unique para llevar a cabo el método. Use el
objeto Tema, una cadena (el nombre del campo a clasificar), y el número de clases (si el número de clases no es único) como parámetros
Colores gamados
En el ejemplo anterior, se usa el requerimiento Interval para crear cuatro clases. El símbolo para cada clase se selecciona arbitrariamente.
Si se tienen más de dos clases, se puede crear una gama de color y luego usarla con el requerimiento RampColors sobre theSymbolist de
theLegend (Leyenda). Los parámetros de este requerimiento son los colores inicial y final de la gama. Use el requerimiento después de un
requerimiento de clasificación, y antes de el requerimiento de actualizar la leyenda.
‘ ejemplo de gama de color
theLegend.Quantile(theTheme,aFieldName,numClasses)
theLegend.GetSymbols.RampColors(theColors.Get(3),theColors.Get(7))
theTheme.UpdateLegend
Tipos de leyenda
El tipo de leyenda debe asignarse antes de cambiar el color y número de clases. Los tipos de leyenda son:
Single - leyenda de símbolos sencilla
Color - leyenda de color graduada
Symbol - leyenda de símbolos graduada
Unique - leyenda de valor único
Dot - leyenda de densidad de punto
Chart - leyenda de gráfico
Ordenar temas en la TOC
 Toma la vista y la lista de temas
theView = av.GetActiveDoc
theThemeList = theView.GetThemes
 Ordena el primer tema al final
theTheme= theThemeList.Get(0)
theThemeList .Shuffle(theTheme,theThemeLIst.Count)
 Redibuja todas las leyendas de los temas en la TOC
theView .InvalidateTOC(nil)
Ordenar temas en la TOC
Los temas se dibujan en orden sobre la pantalla de visualización desde abajo de la TOC hasta arriba. Los temas de polígono o imágenes
(que son con frecuencia colores de relleno sólidos) pueden cubrir a otros temas si se colocan en la cabeza de la TOC. Se puede mover un
tema desde una posición de la TOC a otra usando el requerimiento Shuffle sobre la lista de temas. Con el requerimiento Shuffle, se
especifica el tema que se va a mover y su nueva posición. Para definir la nueva posición al final de la TOC, use el requerimiento Count
sobre la lista de temas.
Invalidación de la TOC
Después de alterar el orden de un tema, use el requerimiento InvalidateTOC y muestre el nuevo posicionamiento. El parámetro Nil provoca
que se redibujen todos los temas en la TOC. Si se especifica un tema como parámetro, entonces el tema y cualquier tema superior en la
TOC se redibujan. Esto es lo que le diferencia del requerimiento InvalidateLegend, que trabaja sólo con la leyenda del tema especificado.
Ejercicio 8:
Creación de nuevos temas
Paso 1
Iniciar ArcView y abrir un proyecto.
Paso 2
Crear un tema desde una fuente de datos shapefile.
Paso3
Clasificar un tema.
Paso4
Cambiar los símbolos para las clases.
Paso 5
(opcional)
Alterar un tema en al TOC.
Ejercicio 8:
Creación de nuevos temas
En este ejercicio se podrá añadir un tema llamado Census Tracts a la vista Atlanta usando un fichero shapefile llamado tracts.shp. Se
clasificará su leyenda y alterará su posición en la TOC.
Paso 1
Iniciar ArcView y abrir un proyecto.
Es necesario iniciar ArcView.Desde el menú Archivo(File), elija Abrir Proyecto (Open Project). Muévase al directorio
ejercicio. Hacer doble clic en ex8.apr para abrir el proyecto para este ejercicio. Cuando el proyecto se abra, se verá
la ventana de proyecto y la vista Atlanta que contiene los temas County y Banks.
Paso 2
Crear un tema desde una fuente de datos shapefile
En este paso, se añadirá un tema llamado Census Tracts a la vista Atlanta usando un shapefile llamado tracts.shp.
Desde la ventana de proyecto, abra el script Ejercicio8, Paso2. La línea de código que busca la vista Atlanta ya está
en el script.
Cree una variable llamada shapeSrc enviando a la clase SrcName el requerimiento Make. Como parámetro, use la
cadena para el shapefile $AVETRAIN/data/tracts.shp
Ahora cree una variable llamada theTheme para enviar a la clase Tema el requerimiento Make. Use ShapeSrc como
parámetro.
Después, añada el tema a la vista y nombre éste.
Para añadir el tema a la vista, envíe a theView el requerimiento AddTheme con theTheme como parámetro.
Envíe a theTheme el requerimiento SetName y nombre el tema con la cadena Census Tracts.
Compile y corra el script. En la vista aparecerá un nuevo tema llamado CensusTracts. Cuando acabe, cierre el script.
Paso3
Clasificar un tema.
Ahora creará una clasificación por cuantiles de la leyenda del tema Census Tracts en base a la renta familiar media.
Desde la ventana de proyecto, abra el script Ejercicio8, paso3. El código en el script busca la vista Atlanta y el tema
Census Tracts.
Tome al leyenda del tema creando una variable llamada theLegend y envíe a theTheme el requerimiento GetLegend.
Después, asigne el tipo de leyenda para el tema
Envíe a theLegend el requerimiento SetLegendType y use como parámetroel enumerador
#LEGEND_TYPE_COLOR.(esto crea una leyenda de color gradual)
Ahora use el tema y el nombre del campo para clasificar la leyenda
Envíe a theLegend el requerimiento Quantile par crear una clasificación por cuantiles con theTheme, “Med_hh_in”, y 5
clases.
Redibuje la leyenda y el tema con la nueva simbología y la nueva clasificación.
Refresque el tema en la vista con el requerimiento UpdateLegend.
Compile y corra el script. El tema Census Tracts se reclasifica con la clasificación por cuantiles.
Paso4
Cambiar los símbolos para las clases.
En este paso, cambiará los símbolos de las 5 clases, para que la gama vaya de verde claro a oscuro.
Desde la ventana de proyecto, abra el script Ejercicio8, paso4. Dese cuenta de que las líneas de código en el script
ya buscan la vista Atlanta y el tema Census Tracts.
Tome la leyenda del tema creando un variable llamada theLegend, y envía a theTheme el requerimiento GetLegend.
Tome una lista de los símbolos, llamada theSymList, enviando a theLegend el requerimiento GetSymbols.
Para almacenar la lista de colores de la paleta de color, cree una variable llamadatheColors. Envía a la aplicación el
requerimiento GetWin, después el requerimiento GetPalette, y finalmente el requerimiento GetList con enumeración
#PALETTE_LIST_COLOR como parámetro.
Después creará un bucle para procesar las cinco clases. Conseguirá cada símbolo desde la lista símbolos por el
número de índice.
Cree un bucle For Each usando symIndex para cada número en el intervalo 0 ..4
Cree una variable currSym enviando a theSymList el requerimiento Get con el parámetro symIndex.
Los colores del verde claro al verde oscuro tienen índices del 13 al 17 . Cree aNewColor enviando a theColors el
requerimiento Get con symIndex + 13 como parámetro.
Para asignar le nuevo color al símbolo, envíe a currSym el requerimiento SetColor con newColor.
Finalice el bucle For Each
Redibuje la leyenda y el tema, reflejando la nueva leyenda, enviando a theTheme el requerimiento UpdateLegend.
Para encender el tema, envíe a theTheme el requerimiento SetVisible con true
Compile y corra el script. Verá que la leyenda del tema Census Tracts cambia al rango de símbolos verde claro a
verde oscuro.
Paso 5
(opcional)
Alterar un tema en al TOC.
El tema Census Tracts está cubriendo el tema Banks. Habrá que mover el tema Census Tracts al final de la TOC.
Entonces, éste se dibujará primero y el tema Banks después.
Empiece abriendo el script Ejercicio8, Paso5. Dese cuenta de que da inicio script. La primera línea de código
encuentra la vista Atlanta.
Después, cree una variable llamada theThemeList enviando a theView el requerimiento GetThemes.
Tome el primer tema (Census Tracts) en la variable llamada theTheme enviando a theThemeList el requerimiento
Get con índice 0.
Para tomar la última posición en la TOC, asigne una variable llamada lastPos y envíe a theThemeList el
requerimiento Count.
Para mover el tema Census Tracts a la posición final, envíe el requerimiento Shuffle a theThemeList. Los parámetros
de el requerimiento Shuffle son theTheme y su nueva localización, lastPos.
Para redibujar en la TOC, envía a theView el requerimiento InvalidateTOC con el parámetro Nil.
Para redibujar todos los temas, envíe a theView el requerimiento Invalidate.
Compile y corra el script
End
10. Creación de shapes y gráficos
Creación de shapes y gráficos
10-2
Comprensión del display
Uso de shapes
Creación y dibujo de shapes
Cómo están asociados gráficos y shapes
Creación y visualización de un gráfico
Cambio de la simbología de un gráfico
Localización y movimiento de un gráfico
Asociación de gráficos a un tema
10-4
10-6
10-8
10-10
10-12
10-14
10-16
10-18
Uso de shapes para seleccionar entidades de un tema
10-20
Añadir entidades a un tema de shapes
10-22
Ejercicio 10 : Creación de shapes y gráficos
10-25
Creación de shapes y gráficos





Visualización y uso de shapes y gráficos en vistas
Asignación de simbología
Animación de gráficos
Asociación de gráficos con temas
Adición de entidades a tema
Creación de shapes y gráficos
En esta sección, se aprenderá a crear shapes y gráficos y a visualizar estos en una vista. Las shapes y los gráficos tienen una asociación
especial: se ha de tener una shape para construir un gráfico. A pesar de que tienen cosas en común, tienen importantes diferencias que
afectan a la forma en que se usan.
El interfaz de usuario del SIG ArcView permite usar shapes y gráficos para muchos propósitos: para esbozar áreas de interés, para
seleccionar temas, para añadir nuevas entidades, y para cambiar simbología de gráficos. Se aprenderá a llevar a cabo estas operaciones
usando scripts de Avenue.
Comprensión del Display
 Los gráficos se dibujan en el área de visualización (display)
 Las vistas tienen un área de pantalla gráfica.
theMapDisplay = theView.GetDisplay
theGraphicList = theView.GetGraphics
Mapdisplay
Prj
View
TOC
Graphiclist
Comprensión del Display
Una vista se compone de la visualización de un mapa, una lista gráfica, y de cero, uno o muchos temas. Algunos o todos los gráfico de la
lista gráfica pueden asociarse a un tema.
Visualización de un mapa
La visualización de un mapa utiliza el área de la vista donde los temas y los gráficos se dibujan en la pantalla. El usuario interactúa con el
display para hacer una vista panorámica, un zoom o dibujar. Se puede tomar el área de visualización enviando a la vista erequerimiento
GetDisplay.
Lista Gráfica
Una vista tiene una Lista Gráfica asociada que maneja la colección de gráficos en la vista. Se puede crear, modificar, y mover gráficos.
Use el requerimiento GetGraphics con una vista para crear su lista gráfica. Una composición tiene una lista gráfica, que funciona como la
lista de gráficos de la vista.
Si se envía el requerimiento GetGraphics a un tema. Se puede crear un conjunto de gráficos del tema (GraphicSet). Los gráficos del tema
se explican más tarde en esta sección.
Uso de shapes
 Uso de shapes para crear gráficos, seleccionar entidades y crear entidades.
Uso de shapes
Las shapes son los bloques de construcción básicos usados para representar las entidades geográficas del mundo real. Por ejemplo, las
shapes pueden representar áreas comerciales, áreas de mercado, líneas de potencia o localizaciones especiales peligrosas. Use shapes
para crear gráficos en una vista o composición, seleccionar entidades de un tema o crear entidades en un tema.
Clase de shapes
Las subclases de shapes son círculo, línea, punto múltiple, punto y rectángulo. Cada subclase define la shape geométrica específica. Toda
la geometría de las shapes es plana ( no esférica).
Creación y dibujo de una shape
 Toma el Display
theDisplay = theView.GetDisplay
 Crea una shape a partir de coordenadas conocidas
theCircle = Circle.Make (250000@200000,2640)
desde localización del ratón
theCircle = theDisplay.ReturnUserCircle
 Dibuja una shape
theDisplay.BeginClip
theDisplay.DrawnCircle(theCircle,theSymbol)
theDisplay.EndClip
Creación y dibujo de una shape
Se puede crear una shape a partir de coordenadas conocidas y medidas o por entrada desde ratón. Después de crear una shape, debe dibujarse en el
display. Las shapes se almacenan en la Lista Gráfica; así, desaparecen cuando se cierra la vista, y no pueden seleccionarse moverse o alterarse.
Creación de una desde a partir de coordenadas conocidas
Una shape de punto es la shape básica más sencilla. Para crear una shape puntual, use el requerimiento Make sobre la case Point. Use el operador
crear un punto desde un valor x,y
aPoint = Point.Make (155, 385)
aPoint = 155@385
Use el formato de punto básico par construir shapes más complicadas
aLine = Line.Make (40@40, 40@100)
‘ dos puntos
aCircle = Circle.Make( aPoint,400)
‘ radio = 400
Creación de una shape a partir de localizaciones de ratón
Se pueden crear shapes desde localizaciones de ratón definidas por el usuario usando requerimientos que comiencen con ReturnUser.Use dichos
requerimientos sólo con un script que se aplique a Herramientas
thePoint = theDisplay.ReturnUserPoint
theLine = theDisplay.ReturnUSerPoint
theCircle = theDisplay.ReturnUserCircle
Dibujo de una shape en el Display
Dibuje una shape en el display usando el requerimiento Draw apropiado. Use el requerimiento BeginCLip antes del Draw y el requerimiento EndClip
después de éste. Éste dice al display que dibuje sólo en el área cubierta por la shape
@para
Resalto de shapes
El requerimiento FlashShape envía una shape sobre el display, usando un símbolo durante un tiempo determinado y número de veces especificado
aShape = Circle.Make(3@3,2)
aSymbol.Make(#SYMBOL_FILL)
theDisplay.FlashShape (aShape,aSymbol, 10,10)
Cómo están asociados las shapes y los gráficos
 Cree una shape
 Cree una shape gráfica a partir de una shape
 Almacene la shape gráfica en la Lista Gráfica
Visualice los gráficos en la vista
Graphic
Symbol
GraphicGroup
GraphicShape
Shape
Oval
Line
Rect
Point
Circle
Multipoint
Polyline
Polygon
Cómo están asociados las shapes y los gráficos
Para crear un gráfico en la vista, se debe comenzar creando la definición matemática geometría plana), llamada shape. Una ShapeGráfica
se crea a partir de una shape y se almacena más tarde en una lista Gráfica. La Lista Gráfica visualiza los gráficos en al vista ( o
composición)
Clases de shapes
La clase Shape tiene muchas subclases. Las siguientes son clases de shapes:
Circle(Círculo), Line(Línea2 puntos), Multipoint (grupo de puntos), Oval(Óvalo),
Point(Punto) y Rect(Rectángulo).
Polyline es una subclase de Multipoint y Polygon una subclase de PolyLine. Dichas shapes pueden construirse usando el requerimiento
Make con los parámetros de medida y coordenadas apropiados.
Creación y visualización de un gráfico
 Crea una Shape Gráfica desde una shape
theGraphicCircle = GraphicShape.Make (theCIrcle)
 Añade la Shape Gráfica a la Lista Gráfica
theGraphicList = theVIew.GetGraphics
theGraphicLIst.Add (theGraphicCircle)
Creación y visualización de un gráfico
Las shapes gráficas (GraphicShapes)se crean a partir de shapes. Se debe crear primero una definición matemática de una shape y
después crearla. Para convertir una shape en una shape gráfica se usa el requerimiento Make con la shape definida, sobre la clase
GraphicShape.
Se puede añadir la GraphicShape a la lista de gráficos de una vista (o composición). Una vez que se tienen la lista de gráficos del
documento, use el requerimiento Add con la GraphicShape como parámetro.
Debido a que las shapes gráficas se asocian con la lista de gráficos, la shape gráfica se dibuja inmediatamente sobre el documento, y
todas las shapes gráficas se redibujan cuando se abre el documento o actualiza.
Cambio de la simbología de un gráfico
 Asigna un relleno
theGraphicCircle = SetSymbol (Vectorfill.Make)
 Toma el símbolo gráfico y cambie sus propiedades
theSym = theGraphicCircle.GetSymbol
theSym.SetStyle(#VECTORFILL_STYLE_HATCH)
theSym.SetAngle(45)
theSym.SetOLWidth (3)
theSym.SetOLColor (Color.GetRed)
 Redibuja el gráfico con su nueva simbología
theGraphicCircle.Invalidate
Cambio de la smbología de un gráfico
Una shape gráfica tiene un símbolo asociado con propiedades que se pueden cambiar. El requerimiento GetSymbol devuelve un símbolo
gráfico. Sus propiedades son el tipo, el tamaño en puntos, y el color (background, foreground y outline)
Patterns de relleno
Los patterns de relleno tienen tres variantes: VectorFill, RasterFill y CompositeFill (símbolo de relleno con múltiples capas). Se puede crear
cualquier tipo de símbolo usando el requerimiento Make sobre la clase apropiada. Use el requerimiento SetStyle con la enumeración
VectorFillStyleEnum o RasterFillStyleEnum para asignar el estilo al nuevo símbolo. Consulte la ayuda para consultar la lista completa de
estilos.
El siguiente ejemplo asigna un relleno verde sólido a un símbolo:
theSym = RasterFill.Make
theSym.SetStyle (#RASTERFILL_STYLE_SOLID)
theSym.SetColor(Color.GetGreen)
theGraphicCircle.SetSymbol (theSym)
Redibujo del gráfico
Después de cambiar el símbolo gráfico, debe redibujarlo. El requerimiento Invalidate enviado a un gráfico redibuja el gráfico con su nueva
simbología. Sólo se redibujará el área cubierta por el gráfico, no el display completo.
Localización y movimiento de un gráfico.
 Devuelve el punto origen
location = theCar.GetOrigin
 Mueve y redibuja el gráfico
theCar.Invalidate
theCar.SetOrigin(aNewPoint)
theCar.Invalidate
‘ Borra de la posición antigua
‘ Mueve
‘ Redibuja a la nueva posición
Cambio de la sismología de un gráfico
Se puede localizar un gráfico y mover éste desde una posición a otra. Cuando se mueve un gráfico, se debe redibujar la pantalla para
reflejar la nueva posición del gráfico. Se puede localizar la posición actual de el gráfico con el requerimiento GetOrigin. La posición devuelta
es la coordenada abajo-izquierda de el gráfico.
Movimiento del gráfico
Para crear apariencia de movimiento, el gráfico debe borrarse de su posición original y después redibujarse en su nueva posición. Para
hacer eso, use el requerimiento Invalidate dos veces: una antes de asignar la posición inicial, y otra después de asignarla. La nueva
posición se asigna usando el requerimiento SetOrigin.
SIG en tiempo real
Las aplicaciones en tiempo real necesitan mover gráficos o cambiar simbología, cambios en coordenadas o en atributos. Se puede escribir
un script para leer coordenadas o valores de atributos a intervalos de tiempo (p.e. cada minuto) usando el requerimiento DelayedRun. Se
puede usar la Comunicación Entre Aplicaciones (IAC) si se usa otro software para proporcionar coordenadas o atributos. Para más
información acerca de IAC, ver apéndice B, Comunicación con otros software.
Creación de simbología de punto
Los símbolos puntuales se crean usando una BasicMarker con el requerimiento Make. Los estilos disponibles se definen por un
BasicMarkerStyleEnum . Ver la ayuda para ver una lista completa de estilos. En el ejemplo, car (almacenado en formato Raster de Sun) fue
convertido en un símbolo con el siguiente código.
thePointSym = BasicMarker.Make
thePointSym.SetSyle (#BASICMARKER_STYLE_ICON)
theIcon =Icon.Make ( “c:\temp\car.rs”.AsFileName)
thePointSym.SetIcon (theIcon)
Invalidate
Invalidate sobre un gráfico redibuja la porción del display ocupada por el gráfico.
Asociación de gráficos a un tema.
 Toma la lista de gráficos de la vista
theViewGraphics = theVIew.GetGraphics
 Mergea la lista de gráficos de la vista con el conjunto de gráficos del tema
theTheme.GetGraphics.Merge (theVIewGraphics)
Apariencia con el tema encendido
Apariencia con el tema apagado
Gráficos asociados
Gráficos no asociados
Localización y movimiento de un gráfico.
Una colección de gráficos puede ser asociada a un tema en particular. Asociando gráficos a un tema, se les puede hacer dependientes de
la escala y con la visibilidad del tema.
La Lista Gráfica (GraphicShape) es una colección de gráficos asociados con el área del display de la vista. Un conjunto gráfico
(GraphicSet) es una colección de gráficos asociados con un tema. (p.e. añadido a un GraphicSet existente o creando uno nuevo) usando el
requerimiento Merge.
Uso de shapes para seleccionar entidades de tema
 Selección entidades con gráficos seleccionados
theGraphics = theView.GetGraphics.GetSelected
theShapeList = {}
for each g in theGraphics
theShapeList. Add (g.GetShape)
end
theTheme.SelectByShapes (theShapeList, #VTAB_SELTYPE_NEW)
 Selecciona entidades con una shape sencilla definida por el usuario
theRectangle = theView.ReturnUserRect
theTheme. Select ByRect (theRectangle, #VTAB_SELTYPE_NEW))
Uso de shapes para seleccionar entidades de tema
Para seleccionar entidades desde un tema, se pueden usar gráficos seleccionados desde la GraphicList o usar una shape sencilla definida
por el usuario. En cada caso, la selección se hace con la shape ( p.e. con la definición matemática, no con el gráfico)
Selección de entidades a partir de gráficos seleccionados
Se pueden usar GraphicShapes de una GraphicList para seleccionar entidades de un tema que intersecten. Use el requerimiento
GetSelected sobre la lista gráfica para devolver sólo los shapes gráficas seleccionadas. Para cada shape gráfica en la lista, debe encontrar
su shape usando el requerimiento GetShape. Cuando se vaya tomando cada shape, se añade a las lista con el requerimiento Add. Use el
requerimiento Select ByShapes para encontrar todas las entidades en el tema activo que intersecta las shapes.
Selección de entidades a partir de una shape definida por el usuario
Si se tiene una shape que no forma parte de la GraphicList, al igual que haría usando cualquiera de los requerimientos UserReturn, use el
requerimiento que empieza con SelectBy y añada la shape apropiada. Por ejemplo, use el requerimiento SelectByRect con el requerimiento
ReturnUserRect.
#VTAB_SELTYPE_NEW es un tipo de selección que sustituye la selección existente por una nueva (New Set en Query Builder)
Determinación de si hay o no vecindad
Antes de llevar a cabo la selección, puede determinar si hay relación de vecindad entre dos shapes. Contains(contiene),
Intersects(Intersecta) y IsWithin (está a una distancia de) son ejemplos de requerimientos que se deben usar para eso. Dichos
requerimientos devuelven un valor booleano que define si hay o no vecindad.
stat1 = aShape.Contains(anotherShape)
stat2= aShape.Intersects(anotherShape)
stat3 = aShape.IsWithin(anotherShape,300)
Adición de entidades a un tema de shapes
 Cada tabla de entidades del tema tiene una campo Shape.
 Añade nuevas shapes al tema editable
pt= Point.Make (720000,390000)
shapeField = theFTab.FindField ( “shape” )
rec = theFTab.AddRecord
theFTab.SetValue ( shapeField, rec , pt )
Adición de entidades a un tema de shapes
Se pueden añadir nuevas entidades a cualquier tema editable (p.e. a una tema creado a partir de un fichero de shapes).Cada Ftab del tema
tiene un campo Shape que almacena la información geométrica asociada con cada registro. Al tiempo que se añaden nuevas entidades al
tema, se pretende añadir nuevos registros a la FTab.
Adición de nuevas entidades
Se puede construir la shape para la nueva entidad usando el requerimiento Make o ReturnUser. Se puede pedir al usuario las coordenadas
con MsgBox.Input
Trabajo con proyecciones
Después de construir la shape, se debe chequear la proyección de la vista para asegurarse de que las coordenadas estén posicionadas
con propiedad. Use el requerimiento GetProjection para encontrar la proyección de la vista. Si hay una proyección, se desea que la shape
sea devuelta en las unidades de los datos de la fuente (p.e. coordenadas sin proyección). Use el requerimiento ReturnUnprojected sobre la
shape para llevar a cabo dicho cálculo. Cuando la shape se coloque sobre la vista, se proyecta junto con todas las otras entidades.
Ejemplo
thePrj = theVIew.GetProjection
thePoint = theDisplay.ReturnUserPoint
unPrjPoint = thePoint.ReturnUnprojected (thePrj)
MsgBox.Info (thePrj.GetClass.ReturnPrjName + NL + NL +
thePoint.AsString + NL+
“Unprojected” ++ unPrjPoint.AsString, “ ” )
Adición de nuevos registros
Para construir un nuevo registro para la nueva shape, use la Ftab del tema.Use el requerimiento FIndFIeld para encontrar el campo Shape,
y el requerimiento AddRecord para añadir un nuevos registro. Después, use el requerimiento SetValue para asignar el valor del campo
Shape a una shape puntual. Nota : el valor no es una cadena, sino la shape actual.
Ejercicio 10:
Creación de shapes y gráficos
Paso 1
Iniciar ArcView y abrir un proyecto.
Paso 2
Hacer un informe de las coordenadas X e Y de la shape definida por el usuario
Paso3
Creación de un gráfico y cambio de su simbología
Paso4
Uso de un gráfico para seleccionar entidades
Paso 5
opcional
Animar un gráfico.
Ejercicio 10: Creación de shapes y gráficos
En este ejercicio, se tomarán las coordenadas x e y de una shape, se creará un gráfico y se cambiará su simbología, después
se usará éste para seleccionar entidades. El último paso contiene una animación ejemplo de un Sistema de Seguimiento de
Vehículos.
Paso 1
Iniciar ArcView y abrir un proyecto.
Es necesario iniciar ArcView. Desde el menú Archivo (File), elija Open Project. Moverse al directorio del
ejercicio. Hacer doble clic en ex10.apr para abrir el proyecto para este ejercicio.
Cuando el proyecto se abra, se verá una vista de las calles de Redlands y dos nuevas
herramientas en el lado derecho de la barra de herramientas. Uno tiene el icono XY, el otro un círculo.
Paso 2
Informe de las coordenadas de una shape definida por un usuario.
En este paso, se escribirá un script que devuelve las coordenadas x,y de una shape dibujada por el usuario.
Después, asocie el script con un evento Apply de una nueva herramienta.
Empiece abriendo el script Ejercicio 10, paso 2. Éste crea theView buscando la vista
Redlands.
Cree theDisplay enviando a theView el requerimiento GetDisplay.
Cree thePoint enviando al theDisplay el requerimiento ReturnUserDisplay. Se
devolverán las coordenadas del usuario
Visualice los resultados enviando a MsgBox el requerimiento Info. Use ThePoint
convertido con el requerimiento AsString y una cadena vacía para los dos
parámetros.
Compile el script pero no lo testee todavía. Debe primero asociar éste con un control
Asocie el script con un control.
Responda a las siguientes cuestiones para determinar con qué control y con qué
propiedad del Evento se debería asociar el script.
¿Con que evento asociar el script? Apply Click Update
¿Por qué?
Qué control ejecutará ese script?
Menú
Botón Herramienta
¿Por qué?
Use al caja de diálogo de personalización (Customize) par visualizar las Herramientas de la vista en el
Editor del control. Asocie el script Ejercicio10, paso2 con la propiedad Apply de la herramienta XY.
Verifique que el script se ejecuta adecuadamente testeando la herramienta XY.
Cuando acabe, cierre todas las ventanas excepto la de la ventana de Proyecto y la vista Redlands.
Paso3
Cree un gráfico y cambie su simbología.
Cree un círculo basado en un definición del usuario, después altere su simbología antes de visualizarlo.
Abra el script Ejercicio 10, Paso3. El script crea theView buscando la vista Redlands.
Cree una variable TheDisplay enviando a theView el requerimiento GetDisplay.
Defina TheCircle enviando a theDisplay el requerimiento ReturnUserCircle para devolver un círculo cuyo
origen y radio los defina el usuario.
Cree theGraphicCircle enviando a la clase GraphicShape el requerimiento Make con theCircle como
parámetro.
Asigne la simbología para el círculo tomando el gráfico la simbología del círculo y cambiando
sus propiedades .Cambie el relleno a un pattern rojo sólido y azul el borde.
Cree theSymbol enviando a theGraphicCircle el requerimiento GetSymbol
Asigne el color a theSymbol con el requerimiento SetColor. Como parámetro, envíe a la clase Color el
requerimiento GetRed.
Asigne el estilo a theSymbol con el requerimiento SetStyle, y use la enumeración
#RASTERFILL_STYLE_SOLID como parámetro.
Asigne a theSymbol el color del borde con el requerimiento SetOLColor
Asigne a theSymbol el color del borde con el requerimiento SetOLColor, usando la
clase Color con el requerimiento GetBlue como parámetro.
Añada el círculo definido por el usuario a la lista gráfica de la vista.
Cree theGraphicList de theView enviando el requerimiento GetGraphics
Después envíe a theGraphicList el requerimiento Add para añadir theGraphicCircle.
Compile el script, pero no lo testee todavía.
Use la caja de diálogo Customize para visualizar las Herramientas de la Vista en el
Editor de Controles. Asocie el script ejercicio 10, paso 3 con la propiedad Apply de la herramienta Círculo.
Paso4
Uso de un gráfico para seleccionar entidades.
Abra la vista Redlands Parcels.
Después abra el script Ejercicio 10, paso4. El script asigna la variable theView
con la vista Redlands, y asigna la variable theTheme con el tema Parcels.
Inicie el script asegurándose de que Parcels es el único tema activo en la vista.
Cree theThemeList enviando a theView el requerimiento GetThemes
Use la lista en un estamento For Each para procesar cada thm en theThemeList
En el bucle, inactive todos los temas usando el requerimiento SetActive con false como parámetro.
Finalice el bucle
Active theTheme enviando el requerimiento SetActive con true como parámetro.
Ahora, coloque el círculo alrededor del punto central dado por el usuario.
Cree theDisplay enviando a theView el requerimiento GetDisplay
Construya thePoint enviando a theDisplay el requerimiento ReturnUserPoint para devolver la localización x,y de un
punto dado por el usuario
Cree theCircle enviando el requerimiento Make para crear una shape matemática con
thePoint como centro del círculo y 300 de radio.
Cree theGraphicCircle enviando a la clase GraphicShape el requerimiento Make, con el círculo como parámetro.
Añada ahora el gráfico a la lista de gráficos y use éste para seleccionar entidades.
Cree theGraphicList enviando a theView el requerimiento GetGraphics.
Después envíe a theGraphicsList el requerimiento Add para añadir theGraphicCircle.
Seleccione las entidades en theTheme usando el requerimiento SelectByShapes. Los
parámetros incluyen una lista,{theCircle}, y el enumerador #VTAB_SELTYPE_NEW.
Compile el script, después asócielo con la herramienta Círculo usada en el paso 3.
Testee la herramienta seleccionando algunos puntos en la vista Redlands Parcels. Se crearán nuevos círculos y
se seleccionarán y destacarán las entidades que toquen con
ellos. Cuando acabe, cierre todas las ventanas
excepto la de Proyecto.
Paso 5
opcional
Animar un gráfico
Las aplicaciones en tiempo real trabajan continuamente con datos cambiantes continuamente. Por ejemplo, para
visualizar el movimiento de un vehículo, las coordenadas del objeto deben cambiarse continuamente. En este
paso, se correrá algún script existente para crear un Sistema de Seguimiento de Vehículos.
Abra la vista Vehicle Tracking System. Tiene un único GUI. El botón Sparky se añadió al lado derecho de la barra
de botones.
Un script (VTSI) provoca el proceso de seguimiento de vehículos se procesa para empezar, y el otro script (VTS2)
lee las coordenadas del vehículo cada segundo y actualiza la posición del gráfico en la vista. El requerimiento
av.DelayedRun se usa para leer un script en un intervalo dado.
Abra el script VTSI y examine su contenido.
Abra la caja de diálogo de personalización (Customize) y asocie el script VTSI con el botón Sparky.
Abra y examine el script VTS2.
Inicie el sistema de seguimiento simulado haciendo clic en el botón Sparky.
End
S EC CI O N
11
Trabajo con GUIs de Documentos
Trabajo con GUIs de Documentos
11-2
DocGUI
Creación de un docGUi para un documento específico
Recuperación y modificación de controles del GUI
Colocar nuevos controles
Añadir un menú
Añadir un botón con un menú personal
Cambio de la visibilidad de los controles
11-4
11-6
11-8
11-10
11-12
11-14
11-16
Comprensión de los eventos Update
Habilitar y deshabilitar controles
11-18
11-20
Ejercicio 11: Cambio del GUI
11-23
Trabajo con GUIs de documentos




Construir nuevos GUIs para documentos específicos
Usar scripts para modificar el GUI
Cambiar el GUI como cambio de condiciones
Uso de eventos Update
Trabajo con GUIs de documentos
Esta sección introduce la case DocGUi y los requerimientos usados con instacias de la clase.
Esta clase se usa para construir nuevos GUIs para documentos específicos. Los componentes de los
GUIs como barras individuales y controles, pueden modificarse con script de Avenue mejor que a
través de la caja de diálogo de Personalización (Customize).
Dichos scripts, acompañados de los scripts de eventos Update permiten cambiar el GUI
como condiciones en el cambio de la aplicación.
El docGUI
Un proyecto está asociado con muchos docGUIs
Un docGUI está compuesto de una barra de menú, una barra de botones y una barra de herramientas.
PopupSet
MenuBar
DocGUI
Project
ButtonBar
Doc
ToolBar
El docGUI
Un proyecto está asociado con muchos docGUI (p.e. uno para las vistas, otro para las composiciones, etc. Cada docGUI está compuesto
por una barra de menús, una de botones y otra de herramientas. Algunos requerimientos devuelven el GUI completo, mientras que otros
devuelven las barras ce controles individuales.
Use el requerimiento GetGUIs para devolver una lista de todos los GUIs en un proyecto. Este requerimiento es útil para llevar a cabo
operaciones globales, como adición del mismo botón a todos los GUIs.
Se puede devolver un GUI específico usando el requerimiento FindGUI con el nombre theGUI (p.e. "vista" o "composición".) Se puede
también conseguir el GUI activo actual se envía a la aplicación el requerimiento GetActiveGUI.
Una vez que se tiene theGUI, se puede devolver uno de esas barras de controles con los requerimientos GetMenuBar, GetButtonBar,
GetToolBar.
Ejemplos
Los requerimientos que devuelven GUIs y conjuntos de controles
theGUIs = theProject.GetGUIs
theGUI = theProject.FindGUI ("layout")
theButtonBar = theGUI.GetButtonBar
theToolBar = av.GetActiveGUI.GetToolBar
Creación de un docGUI para un documento específico
Crear y nombrar un docGUI
cityGUI = av.FindGUI ("view").Close
cityGUI = av.SetName ("TaxGUI")
Añadir el docGUI a un proyecto
Personalizar el nuevo GUI
Asociar el docGUI con un documento
av.GetProject.FindDoc ("City Parcels”. SetGUI("TaxGUI"))
Creación de un docGUI para un documento específico
En el SIG ArcView, el usuario ve el mismo docGUI para todos los documentos el mismo tipo (p.e. todas las vistas tienen el mismo GUI y
todas las tablas tienen el mismo GUI). Con Avenue se puede crear un docGUI único para un documento específico. Por ejemplo, una vista
de parcelas de tasas puede tener un docGUI diferente de una vista de redes de transporte en U.S.
Crear y nombrar el docGUI
Un docGUI nuevo se crea tomando un docGUI existente (p.e. el GUI de la vista) y copiando éste. El requerimiento Clone crea una copia de
un docGUi existente. El requerimiento SetName da un nombre a un nuevo docGUI. Para usar este nuevo GUI se debe primero añadir
éste al proyecto.Se hace esto, enviando al proyecto el
requerimiento AddGUI.
Personalizar el nuevo docGUI
Después de que el nuevo GUI se ha añadido al proyecto, aparece en la lista Tipo(Type) en la caja de diálogo de Personalización
(Customize).Use la caja de diálogo o un script de Avenue par hacer los cambios en el docGUI. Ver sección 1, Entorno de Desarrollo de la
Aplicación para más información sobre el uso de esta caja de diálogo.
Asociar el docGUI con un documento
El GUI se asocia con un documento usando el requerimieto SetGUI. En el ejemplo anterior, TaxGUI está asociado con la vista City Parcels.
Otras vistas en en proyecto están asociadas con el GUI original de la vista. Cuando el usuario activa la vista City Parcels se visualiza
TaxGUI.
Recuperación y modificación de controles GUI
Toma el botón
thebBar = av.GetProject.FindGUI ("View").GetButtonBar
theButton = theBar.FindByScript ("View.ThemeProperties")
Cambia las propiedades de los botones y herramientas
theButton.SetIcon(Props)
theButton.SetTag("Properties")
theButton.SetVisible(true)
theButton.SetEnabled(true)
Cambia las propiedades del menú y opciones de menú.
theMenu.SetLabel ("&File")
theMenuChoice.SetLabel("Close &All")
Recuperación y modificación de controles GUI
Antes en el curso, se usó la caja de diálogo de personalización para cambiar las propiedades de los controles. Se pueden llevar a cabo
esas operaciones a través de scripts de Avenue. El uso de scripts permite cambiar el GUI como condiciones en el cambio de sesión de
ArcView.
Todas las propiedades de los controles pueden asignarse con un requerimiento que comience por Set.Con los botones y herramientas, por
ejemplo, use el requerimiento SetIcon para añadir un icono. Use SetEnabled para asignar utilidad al control y SetVisible para esconder o
mostrar un control. Use SetTag para almacenar una cadena descriptiva con un control y GetTag para recuperarla.
Para menús y opciones de menú, use el requerimiento SetLabel para crear una etiqueta
Colocar nuevos controles
Los controles se referencian por un número de índice
Use (-1) par insertar a la izquierda y arriba
Colocar nuevos controles
Los controles se referencian por un número de índice. Los controles se insertan a la derecha de la posición índice asignada. Esto está de
acuerdo con la posición de un nuevo control a la derecha del seleccionado en la caja de diálogo de Personalización.
En el ejemplo anterior, si se usa (1) como índice de la barra de menús, se insertará un nuevo menú a la derecha del menú Edit. El índice (1) se usa para insertar el menú u opción de menú en la primera posición.
Uso del requerimiento Count
Para insertar un nuevo control al principio o final de la barra, se puede usar el requerimiento Count sobre la lista de controles
(GetControls)para determinar el número de controles en la barra. Se puede usar también este número para calcular la posición índice.
Para más información acerca de los requerimientos usados para manejar listas, ver sección 7, Ramificaciones y Bucles.
Cálculo de la posición índice
Use el requerimiento Count para identificar la última posición o cualquier otra posición sobre la barra de menús( o cualquier otro punto de
controles).
menu.Count = theMenuBar.GetControls.Count
windowMenuIndex = menuCount-2
Adición de un menú
 Añade un menú en la primera posición
aMenu=av.GetActiveGui.GetMenuBar.New (-1)
aMenu.SetLabel("&Print")
' asigna etiqueta al menú
 Añade opciones de menú
choiceList = {"Maps","Charts","Reports"} 'elabora una lista
index = -1
for each c in choiceList
' añade una nueva opción
theChoiceList = aMenu.New (index) ' etiqueta la opción
theChoiceList.SetLabel ("&"+c) ' incrementa el índice
index=index+1
end
Adición de un menú
Se puede añadir un nuevo menú con un script. Es útil cuando se quieren crear menús en base a condiciones actuales del proyecto. Por
ejemplo, se podría crear un nuevo menú en base a la vista actual y temas, las entidades seleccionadas o diferentes privilegios de acceso a
los datos.
Adición de un menú a la barra
Se añade un nuevo menú a al barra enviando el requerimiento New a la barra de menú actual. El requerimiento New requiere un parámetro
para definir la posición del índice.
Adición de opciones de menú
Las opciones de menú se añaden enviando el requerimiento New al menú actual.
Las opciones de menú se crean desde una lista, donde los elementos en la lista son las etiquetas de las opciones de menú. & se añade a
cada elemento para definir una clave de acceso para cada opción. Ver sección 1, Entorno de Desarrollo de ArcView, para más de una
etiqueta y clave de acceso.
Índice
En el ejemplo, en índice empieza por (-1), lo que indica que la primera opción se coloca a la cabeza del menú. Dentro del bucle, el número
índice se incrementa para añadir cada opción detrás de la opción previa. Si el número de índice no se incrementa, cada opción de menú
podría insertarse en la cabeza y podría aparecer en orden inverso en la muestra. (p.e. Informes en la cabecera, después Gráficos y luego
Mapas).
Adición de un botón con un icono personal
Crear un fichero de gráficos (p.e. dollar.xbm)
Añadir un botón
newButton = av.GetActiveGUI.GetButtonBar.New (-1)
Crear un icono y ponerlo en el botón
myIcon = Icon.Make ("dollar.xbm".AsFileName)
newButton.SetIcon (myIcon)
Adición de un botón con un icono personal
Antes de crear el fichero de gráficos, cree un icono con el requerimiento Make. El requerimiento Make necesita un nombre de fichero.
Convierta una cadena que contenga el nombre del path del fichero de gráficos en un nombre de fichero usando el requerimiento
AsFileName. Use el requerimiento SetIcon con el icono como parámetro para especificar el icono que ha de ser dibujado en la cara del
botón.
X-Bitmap
(*.xbm)
MacPaint
(*.mcp)
WindowsDIb
(*.bmp)
SunRaster
(*.rs)
Nexpert Object Image (*.obj)
GIF
(*.gif)
TIFF (*.tif)
Tamaño de los iconos
Los iconos para los botones son de 20*17 pixeles. Los iconos para las herramientas
son de 18*15 pixeles.
Iconos del Gestor de Iconos
Para seleccionar un icono específico de los disponibles en el Gestor de Iconos (Icon Manager), envíe el requerimiento Get a la lista de
icono devuelta por el requerimiento GetIcons sobre el objeto IconMgr. Por ejemplo:
IconMgr.GetIcons.Get(20) devuelve el icono de índice 20
Cambio de la visibilidad de los controles
Conmutar la visibilidad de cada botón
for each b in av.GetActiveGUI.GetButtonBar.GetControls
if (b.IsVisible) then
b.SetVisible (false)
else
b.SetVisible(true)
end
end
OR
for each b in av.GetActiveGUI.GetButtonBar.GetControls
b.SetVisible(b.IsVisible.Not)
end
Cambiar la visibilidad de la herramienta Edit
for each b in av.GetActiveGUI.GetButtonBar.GetControls
ttag = t.GetTag
t.SetVisible ((ttag = "edit")) and (login= "steve")
end
Cambio de la visibilidad de los controles
Esos ejemplos muestran cómo examinar y cambiar los controles en la barra.
Cambiar la visibilidad de los controles sobre el GUI es una forma de limitar las funciones a las que un usuario puede acceder, y de
presentar solo aquellas funciones que sean apropiadas en un momento dado.
Conmutar la visibilidad de un control
Para conmutar la visibilidad de cada control en la barra, se debe primero tener una lista de todos los controles en la barra. Enviar el
requerimiento GetControls a la barra de controles para hacer eso. Determinar la visibilidad de cada control, y después invertir dicho ajuste
usando el estamento If.
Use el requerimiento IsVisible para determinar la visibilidad del control. Use el requerimiento SetVisible para conmutar la propiedad del
control de visible(true) a invisible(false).
Uso del requerimiento Not
Debido a que el requerimiento IsVisible devuelve una respuesta true o false ( p.e. un objeto booleano), se puede usar ésta donde se
requiera un valor booleano. En el segundo ejemplo, el requerimiento IsVisible está enlazado con el requerimiento Not, para invertir la
visibilidad del botón usando la construcción If Then.
Uso de la propiedad Tag
Cada control tiene una propiedad Tag que puede almacenar cualquier cadena. Se puede usar la etiqueta para identificar de forma única
cada control. Se puede asignar una propiedad tag a un control en la caja de diálogo de Personalización(Customize) o a través de un script,
enviando el requerimiento SetTag a el control. Una vez asignada, se puede recuperar usando el requerimiento GetTag.
En el ejemplo anterior, en cada iteración del bucle de toma una etiqueta de un control. Si la etiqueta indica que el control es la herramienta
Edit, y el usuario ha introducido la password correcta la herramienta se hace visible.
Comprensión de los eventos Update
Un evento Update tiene lugar cuando se cambia un documento
Añade un tema, conmuta la visibilidad del tema,
Selecciona entidades de la vista o tabla
Pone activo un campo, selecciona un registro.
Los scripts Update hacen cambios en el docGUI
Habilita o deshabilita controles
Visibiliza o Invisibiliza controles
Los scripts Update se asignan a las propiedad Update de un control
Cualquier control comparte el mismo script
Cualquier evento Update
todos los scripts Update
Comprensión de los eventos Update
Cuando se trabaja con ArcView, los GUI cambian en base al estado del documento. Por ejemplo, si se han seleccionado entidades en
una vista, se puede usar Zoom para el botón seleccionado; si no está , el botón se deshabilita. Este tipo de cambio en el GUI se hace por
un script que es asignado por un evento Update
Ejemplos de Eventos Update
Un evento Update tiene lugar cuando cambia el estado de un documento. Se incluyen ejemplos de eventos Update que añaden temas a un
vista, conmutan un tema en apagado y encendido, seleccionan entidades en una vista o registros en una tabla, y hacen activo un campo
en una tabla.
Los scripts Click y Update normalmente ejecutan scripts que llevan a cabo operaciones en un determinado botón o herramienta en
particular. Los eventos Update ejecutan scripts que conmutan la mayoría de los controles en habilitado o deshabilitado, o visible e invisible,
en base a condiciones específicas.
Asignación de scripts a los controles
Para permitir que cambie un control durante un evento Update, asigne el script que lleve a cabo cambio en la propiedad Update. El mismo
script puede asignarse a muchos controles. De esta forma, muchos controls pueden responder de forma idéntica a una condición dada
(p.e. pueden poner invisible o deshabilitado)
A pesar de que los eventos Click y Update típicamente ejecutan un script, un evento Update provoca que todas las propiedades Update de
todos los scripts asignados se ejecuten.
Habilitar e inhabilitar controles
Asigna la propiedad SetEnabled en base a una condición
SELF se refiere al script en ejecución actual del control
Ejemplo de evento update: añadir el primer tema
Habilitar e inhabilitar controles
Cuando el estado de un documento en particular cambia, el GUI debería cambiar para tener disponibles sólo las operaciones apropiadas.
Por ejemplo, el script View.HasThemesUpdate asigna la propiedad SetEnabled de un botón en base al número de temas en la vista. Si no
hay temas en la vista, el control se deshabilita; si hay al menos un tema en la vista, el control se habilita
El script TheView.HasThemesUpdate se asocia con las propiedades Update de todos los botones de la barra (excepto Save, AddThemes y
Help). Cuando se añade un tema, se produce un evento update. View.HasThemesUpdate se ejecuta una vez para cada botón; debido a
que si el número de temas es mayor de uno, se habilitan todos los controles.
Uso de SELF
Los scripts Update se ejecutan una vez para cada control a que estén asignados. Use la palabra SELF para referirse al control actual de
ejecución del script update. Cuando un control ejecuta el script Update, éste aplica esto a si mismo. Esto permite que el mismo script sea
usado por cada control.
En la sección 6. Personalización de la aplicación y el proyecto, hay una explicación de SELF en relación a valore pasados cuando se corre
un script desde otro.
Script Update para conmutar los iconos de los controles
El siguiente script usa SELF para almacenar y conmutar el icono de un control. Primero, el icono se almacena en el comentario (tag) del
control. Después el nuevo icono (índice 20 del Gestor de Iconos) se asigna al propio control.
(SELF.SetObjectTag(SELF.GetIcon))
if (alguna condición ) then
(SELF.SetIcon(IconMgr.GetIcons.Get(20)))
end
Ejercicio 11: Cambio del GUI
Paso 1
Iniciar ArcView y abrir un proyecto.
Paso 2
Añadir un menú que contenga una opción para cada tema
Paso3
Crear un icono y colocar éste en una herramienta
Paso4
Habilitar un herramienta en base a una condición
Paso 5
opcional
Conmutar la visibilidad de todos los botones, excepto el de ejecución
Paso 6
Crear un GUI para una vista diferente.
Ejercicio 11:
Cambio del GUI
En este ejercicio, se verán varias formas de cambiar GUI a través de scripts de Avenue. Se cambiará el GUI en base a una condición. Se
podrán construir GUIs diferente para dos vistas distintas
Paso 1
Iniciar ArcView y abrir un proyecto.
Si es necesario iniciar ArcView.
Desde el menú Archivo (File), elija Open Project. Moverse al directorio ejercicio. Hacer doble clic en ex11.apr para
abrir el proyecto para este ejercicio.
Cuando el proyecto se abra, se verá la ventana de Atlanta displayada. Un botón y herramienta han sido añadidos a la
vista GUI. Vea que hay una herramienta extra sin icono entre las herramientas HotLink y Área of Interest. También
está el botón del diamante verde que se usará en el paso 5.
Paso 2
Añadir un menú que contenga un opción para cada tema
En este paso, se escribirá un script que añada un menú a el docGUI de la Vista. El nuevo menú será añadido entre
los menús Graphics y Window .El menú contendrá una opción para cada tema en la vista. El menú contendrá ona
opción para cada tema en la vista
Desde la venta de Proyecto, abra el script Ejercicio 11, Paso2Primero, tome el GUI de la vista y la barra de menús
Crea una variable llamada theViewGUI enviando a la aplicación el requerimiento GetActiveGUI.
Ahora cree una variable llamada theMenuBar enviando el requerimiento GetMenuBar.
Después, añadirá un nuevo menú tras el menú Graphics ( que es el tercero desde el final). Después
etiquetará el el menú.
Cree la variable llamada menuIndex enviando a theMenuBar el requerimiento
Getcontrols. Después envíe el requerimiento Count y reste 3 para tomar el índice del menú Graphics.
Ahora cree una variable llamada theMenu enviando a theMenuBar el requerimiento New. El parámetro del
requerimiento New es el número índice.
Para etiquetar theMenu, use el requerimiento SetLabel con Display como cadena
Tome una lista de los temas en la vista Atlanta. Se usará esta lista para crear las opciones de menú
Cree una variable llamada theThemeList enviando a la aplicación el requerimiento
GetActiveDoc para recuperar la vista, después enviar el tema GetThemes a la vista
Añada un opción al menú por cada tema activo correspondiente
Use el bucle For Each sobre cada thm en theThemeList
Dentro del bucle, cree una variable llamada theChoice enviando a theMenu el requerimiento New. Use -1 como
número de índice para el requerimiento New para añadir la nueva opción al principio
Etiquete theChoice enviando el requerimiento SetLabel. El parámetro SetLabel se crea enviando a cada thm el
requerimiento GetName.
Después, asignará un script que corra cuando la opción se menú sea elegida. Un script llamada ThemeToggle ya ha
sido escrito y conmutará la visibilidad de cualquier tema que sea elegido del menú.
Asigne un script a theChoice enviando el requerimiento SetClick. El parámetro de SetClick es una cadena que
contiene el script llamado ThemeToggle
Finalice el bucle For Each
Compile el script. Active la vista Atlanta, después corra el script. Pruebe el nuevo menú. Vea cómo trabaja el script
ThemeToggle, abra el script y examínelo.
Paso3
Crear un icono y colocar éste en una herramienta
En este paso, creará un icono desde un fichero de gráficos, añadirá este al proyecto, después lo usará sobre una
herramienta.
Abra el script Ejercicio 11, Paso3.
Cree una variable llamada theIcon enviando a la clase Icon el requerimiento Make.
Como parámetro , de la cadena del path de el fichero del icono en el directorio data
($AVETRAIN/data/dollar.xbm). Después envíe el requerimiento AsFileName a la cadena para convertir éste en un
nombre de fichero.
Después, tome la barra de herramientas de la vista.
Cree la variable llamada theToolBar enviando a la aplicación el requerimiento GetActiveGUI para recuperar el GUI
de la vista. Después envíe el requerimiento GetToolBar al GUI de la vista para recuperar la barra de herramientas.
Cree una variable llamada theToolList enviando a theToolBar el requerimiento
GetControls.
Después, tome la herramienta sin icono ( en posición 9) y asigne el signo de dólar como su propiedad Icon.
Cree la variable llamada theTools enviando a theToolList el requerimiento Get. El parámetro para el requerimiento Get
es 9.
Envíe a theTool el requerimiento SetIcon y use theIcon como parámetro.
Compile y corra el script
Abra la caja de diálogo de personalización y seleccione la herramienta Dólar. Haciendo doble clic en su propiedad Apply se
visualizará el script Manager. Haga clic par seleccionar el script ShowDeposit. Cierre la caja de diálogo de Personalización.
Active la vista y use la nueva herramienta Dólar sobre el GUI de la vista.
Paso4
Habilitar un herramienta en base a una condición
Escriba un script que habilite la nueva herramienta Dólar cuando el tema Banks se active y que se deshabilite cuando el tema
Banks esté apagado.
Abra el script del Ejercicio 11, paso 4.
Cree una variable llamada theTheme enviando a la aplicación los requerimientos GetProject y FIndDoc para buscar la vista
Atlanta. Después envíe a la vista el requerimiento FindTheme para encontrar el tema Banks.
Envíe a SELF (la herramienta Dólar) el requerimiento SetEnabled. Para el parámetro, envíe a theTheme el requerimiento
IsVisible para devolver el estado de visibilidad del tema Banks . Si IsVisible devuelve false, el tema está apagado y la
herramienta inhabilitada. Si el tema devuelve true, el tema está encendido y la herramienta habilitada.
Compile el script, pero no lo corra todavía
Para que este script corra correctamente, debe asociarse con un evento Update(el tema Bank encendido o apagado) . Se
usará la caja de diálogo de Personalización para asignar al script la propiedad Update de la herramienta Dólar.
Abra la caja de diálogo de personalización y seleccione la herramienta Dólar.
Haga doble clic en la propiedad Update para visualizar el Gestor de Scripts. Haga clic en el script Ejercicio 11, paso 4. Cierre
la caja de diálogo de personalización.
Para testear el script, active la vista Atlanta. Encienda el tema Banks. La herramienta Dólar debería habilitarse. Apague el
tema Banks. La herramienta debería deshabilitarse.
Paso 5
opcional
Conmutar la visibilidad de todos los botones, excepto el de ejecución
Escriba un script que conmute la visibilidad de todos los botones, excepto del botón que corre el script. El botón del
diamante verde, ejecutará el script y controlará la visibilidad de todos lo demás botones. (Este script es útil si se quiere
esconder botones en la barra de botones.)
Abra el script del Ejercicio 11, paso 5.
Construya un bucle que vaya través de cada botón de la barra de botones de la vista.
Empiece con el estamento For Each, use la variable llamada btn para cada botón de la barra de botones. Cree la barra de
botones enviando a la aplicación el requerimiento GetActiveGUI, enviando el requerimiento GetButtonBar.
Cuando el bucle encuentre el botón del diamante verde, no cambiará su visibilidad
Dentro del bucle For Each, use el estamento If then para chequear si btn es igual a SELF (botón del diamante verde). Si es
así, continúa.
Si no, envíe a btn el requerimiento SetVisible. Para el parámetro SetVisible, envíe a btn el requerimiento IsVisible seguido por
Not. El parámetro devuelve la visibilidad opuesta, que conmuta el botón.
Finalice los estamentos IfThen y For Each
Compile el script, pero no lo corra, o todos los botones se apagarán.
Abra la caja de diálogo de Personalización y elija el botón Diamante Verde. Asigne el script Ejercicio 11, paso5 a la
propiedad Click del botón.
Paso 6
Crear un GUI para una vista diferente.
En este paso, se creará un nuevo GUI para la vista Atlanta Banks que sea diferente de GUI de la vista Atlanta.
Abra el script Ejercicio 11, paso6.
Hará una copia de GUI de la vista standard, cambie su nombre y añada ésta al proyecto.
Cree una variable llamada myNewGUI enviando a la aplicación el requerimiento FindGUI para devolver el GUI de la vista.
Después, envíe el requerimiento Clone para hacer una copia.
Asigne el nombre de myNewGUI enviando el requerimiento SetName con BankGUI como cadena
Añada éste al proyecto enviando a la aplicación el requerimiento GetProject, después añada el requerimiento AddGUI con el
parámetro myNewGUI.
Para asociar el nuevo GUI a la vista Atlanta Banks, envíe a la aplicación el requerimiento GetProject seguido por el requerimiento FindDoc
con la vista Atlanta Banks como parámetro, después envíe el requerimiento SetGUI con BankGUI como parámetro.
Para añadir un nuevo título al nombre del documento en la vista Proyecto, envíe a myNewGUI el requerimiento SetTitle con “A_Banks”
como parámetro.
Compile y corra el script.
Abra la caja de diálogo de Personalización, y , para Type elija BankGUI. Borre todos los botones, excepto el de Zoom Out.
Añada dos nuevos botones al principio de la barra.
Sobre el primer botón, para la propiedad Icon asignar FrameText; para la propiedad Click, asigne el script OpenTable.
Sobre el segundo botón, para la propiedad Icon asignar MakeChart; para la propiedad Click, asigne el script OpenChart.
Sobre el botón Zoom Out, para la propiedad Click, asigne el script OpenAtlantaView.
Desde el menu Archivo (File), seleccione Close All.
Para la ventana de Proyecto, abra la vista Atlanta Banks. Vea el nuevo GUI de Bank.
Testee los nuevos botones. Use el botón Zoom Out para abrir la vista Atlanta y vea que tiene un GUI diferente.
End
S EC CI O N
12
Construcción de extensiones
¿Qué es una extensión?
¿Qué puede almacenarse en una extensión?
Ejemplos de extensiones
Cómo trabajar con extensiones
Creación de extensiones
El script Make
El script Make (continuación)
El script Install
El script UnInstall
Uso de extensiones
12-2
12-4
12-6
12-8
12-10
12-12
12-14
12-16
12-18
12-20
Ejercicio 12A: Creación de una extensión
12-23
Propiedades de las extensiones
12-34
El script Make (continuación)
El script Install
El script UnInstall
Uso de extensiones
12-36
12-38
12-40
12-42
Ejercicio 12B: Manejo de una extensión
12-45
¿Qué es una extensión?
 Una colección de objetos de ArcVIew
 Maneja la distribución de dichos objetos
 Los objetos de la extensión no forman parte física de un proyecto
Pertenecen a la extensión
Se incorporan al proyecto cuando la extensión se activa
Se borran del proyecto cuando la extensión se desactiva
¿Qué es una extensión?
extensión es una colección de objetos de ArcView.
El concepto de adición de objetos a un proyecto de forma interactiva no es nuevo y Arcview lo contemplaba antes de desarrollar las
extensiones. Sin embargo, lo que las extensiones aportan, es un significado al manejo de la organización de dichos objetos. Antes de las
extensiones, el añadir objetos adicionales al proyecto requería que se importaran los objetos al proyecto. Con las extensiones, los objetos
nunca forman parte física del proyecto y no se escriben en el fichero de proyecto. Los objetos pertenecen a la extensión y son incorporados
al proyecto solo cuando el usuario activa la extensión. Se borran del proyecto cuando el usuario desactiva la extensión.
Por ejemplo, se quieren añadir dos botones y una herramienta al GUI del documento.Se debería usar la Caja de Diálogo de
Personalización (Customize) para añadir los controles, escribir un script para añadir los controles, o construir un proyecto vacío con los
controles e importar el proyecto vacío. En los tres casos, los controles son una parte permanente del fichero de proyecto cuando se salva
éste. Con las extensiones, los controles forman parte de la extensión, la extensión está activa o apagada, y los controles nunca se escriben
en el fichero de proyecto.
Los objetos puede instalarse o desinstalarse en el proyecto actual:
 interactivamente por el usuario
 en base a una condición especificada en un script
 al tiempo que el proyecto se abre o se cierra.
¿Qué puede almacenarse en una extensión?
 Controles personales y GUIs
 Datos
 Scripts
¿Qué puede almacenarse en una extensión?
El autor de una extensión puede incorporar en ésta cualquier objeto de ArcView .Dichos objetos pueden ser controles personales (botones
y herramientas), menús y opciones de menú, o interfaces de documentos. Los objetos pueden incluir documentos tales como Tablas,
Composiciones y Plantillas de Composiciones, o objetos en si mismos, tales como temas, shapefiles, grid o temas de imagen y ficheros de
datos. Si los controles se almacenan en extensiones, los scripts soportados por los eventos Click, Apply y Update, también necesitan ser
parte de la extensión.
Controles personales
Se puede usar una extensión para cargar menús, botones, herramientas, y que estos soporten scripts que proporcionan una funcionalidad
específica.
Interfaces de los documentos
Si la funcionalidad que se incorpora es más que sólo una pareja de botones y herramientas, puede ser más apropiado construir un
docGUI. La extensión carga el docGUI en el proyecto y cuando el script lo especifique, el GUI de el documento activo se asigna a dicho
documento.
Documentos
Una extensión puede proporcionar datos en el formato de vistas de cualquier documento de ArcVIew. Por ejemplo, se puede crear una
vista definitiva para el área de estudio y querer compartir ésta con todos los miembros del departamento. Se puede incorporar éste a la
extensión.
Scripts
Una extensión puede contener script que se necesiten en un proyecto.
Ejemplos de extensiones
 Rango de un control el GUI para un conjunto de funciones de análisis complejas
Ejemplos de extensiones
En ArcView 3.0., ESRI proporciona varias extensiones que ofrecen nuevas funcionalidades. Los tipos de extensiones van desde una que
añade un botón sencillo, tales como la extensión Buffer, a uno que añade un conjunto completo de funciones de análisis, tales como
Extensión de Análisis Espacial de ArcView.
Extensiones que vienen con ArcView





Una extensión de Digitizador
Soporta ficheros de datos IMAGINE
Soporta ficheros JPEG
Extensión de Temas de Bases de Datos
Extensión de Lectura CAD
Extensión de Análisis Espacial de ArcView
La extensión de Análisis Espacial de ArcView proporciona funcionalidad de análisis espacial genérico sobre Grid y Temas de Entidades.
Algunas de las funcionalidades almacenadas por esta extensión son : Calcular pendientes, Crear Contornos,
Sumar zonas, Histogramas por zonas, estadísticas de vecindad, y reclasificación.
Extensión de Análisis de Red de ArcVIew
El Análisis de Red de ArcView es la solución de ArcView para ayuda de los usuarios al trabajar con redes de entidades lineales más
eficientemente. Cuando se carga el Análisis de Red, se puede: buscar una ruta de viaje eficiente, determinar las facilidades de acceso y
determinar una área de servicio
Extensiones sencillas
ArcView proporciona varias extensiones de ejemplo. Algunos de eso ejemplos son: Utilidades de Editor de Scripts, Herramientas de Mapa,
un selector de Clase, Modelado hidrológico, Herramientas de visibilidad, y entidades seleccionadas por Buffer. Todos estos scripts se
instalan con ArcView y se accede a ellos a través del Sistema de Ayuda de ArcView.
Cómo trabajar las extensiones
 Almacenados como un fichero de texto
 Una subclase de la Clase Objeto Base de Datos (ODB)
ODB
Apllication
Extension
Obj
Script
Project
DocGUI
ScriptEditor
Doc
DocWin
Chart
Layout
Table
View
 Una clase especial de fichero de Objeto Base de Datos (ODB)
Almacena objetos
Los objetos se leen y recrean (cargan) en otros objetos.
Se usan tres scripts para crear extensiones : Make, Install, Uninstall
Cómo trabajar las extensiones
El diagrama modelo muestra que la clase extensión es una subclase de la Clase Objeto Base de Datos (ODB). El proyecto y las clases de
aplicación tienen relaciones uno a muchos con la clase extensión
Ficheros ODB
Los objetos ODB son ficheros de textos especiales que permiten un método eficiente de adición de objetos y almacenamiento de dichos
objetos para una fácil recuperación. Cuando un objeto se almacena en un fichero de texto ODB existente, los objetos se recaen desde sus
definiciones en el fichero de texto.
Los ficheros de proyecto (.apr) son un ejemplo de objetos ODB. Un fichero de proyecto almacena los objetos necesarios para construir
completamente la aplicación ArcView y el proyecto actual. Cuando la aplicación abre un proyecto, éste lee los objetos del ficheros de
proyecto y los recrea.
Una extensión es un fichero que almacena objetos (cualquiera que el autor haya incorporado a la extensión) para descarga fácil en el
fichero actual.
Un fichero de extensión (.avx) es otra clase especial de fichero ODB. En una extensión, los objetos se añaden en un orden específico y
después se recuperan cuando la extensión se instala en la aplicación o proyecto actual. Un fichero de extensión tiene scripts específicos
incorporado, tales como el script Make, Install y UnsInstall.
Ficheros *.avx
Los Ficheros de extensión vienen dados por un sufijo .avx standard. Cómo almacenar y acceder a esos ficheros .avx se explica más tarde
en esta sección.
Creación de extensiones
 Crea un proyecto fuente, después añade los objetos necesarios
 Escribe los scripts necesarios para crear una fichero extensión
 Define las propiedades de la extensión
Creación de extensiones
Una extensión comienza como un proyecto. Este proyecto se convierte del fichero fuente de extensión. Añade cualquier objeto necesario
para mejorar la extensión de ese proyecto.
Scripts adicionales
Con el proyecto fuente, pueden crearse otros tres scripts. Dichos scripts son Make, Install y UnInstall.
El script Make usa el requerimiento anExtension.Make para crear una extensión y después añade los objetos necesarios a la extensión. Las
propiedades de la extensión y dependencias se establecen también en el script Make.
Dos scripts adicionales, Install y UnInstall cumplen con los parámetros del requerimiento Make.
Propiedades de las extensiones
Las extensiones tienen propiedades (tales como SetAbout, SetExtVersion, Load y Unload) que permiten manejar la interacción del usuario
con la extensión. Las propiedades se asignan a la extensión cuando se crea; algunas tienen scripts asociados con ellas. Se aprenderá más
acerca de las propiedades de las extensiones más adelante en esta misma sección
El Script Make
 Crea una extensión que añade dos botones a el GUI de la Vista
 Crea el objeto extensión
theExt = Extension.Make
( “c:\miguel\extens\vectool.avx”.AsFileName, “VectorTools”,
av.GetProject.FindScript.FindScript (“TheInstaller”),
av.GetProject.FindScript.FindScript (“TheUnInstaller”),
{})
 Busca y nombra los botones
bBar =av.GetProject.FIndGUI (“View”.GetButtonBar)
aButton1= bBar.FIndByScript(“VectTools.CalcDistance”)
aButton1.SetName (“VectButton1”)
aButton2= bBar.FIndByScript(“VectTools.GeoBuffer”)
aButton2.SetName (“VectButton2”)
El script Make
Este script se usa para crear una extensión. Su contenido variará dependiendo de los objetos añadidos y de los números de las
propiedades. Las páginas 12-12 y 12-14 dan los requerimientos mínimos para construir una extensión.
Contenidos del script
Dependencias
En este script, el requerimiento Make se usa para crear una extensión
Extension.Make (aFileName.Name,InstallScript,UnInstallScript, Dependencies)
En los parámetros para el requerimiento “Make”, aFileName es el nombre del fichero de la extensión que se
creará. Debería llevar un sufijo .avx añadido a éste. El parámetro Name es para el nombre de la extensión que
aparece en la caja de diálogo Extension. InstallScript es el script que se ejecuta cuando se abre al extensión.
UnInstallScript es el script que se ejecuta cuando se cierra la extensión. El parámetro dependencies especifica
cualquier otro extensión o librería de linkaje dinámico (DLLs) cuya extensión es más dependiente. (ver en
ayuda de ArcView DLL Basics).
Se pueden definir dependencias de la extensión proporciona una lista de otras extensiones o librerías
compartidas proporcionadas por ESRI. Por ejemplo, si se crea una extensión que proporcione alguna
funcionalidad específica al Análisis Espacial, es imperativo que se cargue la extensión de Análisis Espacial.
Especifica el Análisis Espacial en la lista de dependencias. ArcView asegura que el Análisis Espacial esté
cargado antes de empezar a cargar la extensión, asegurando el entorno para la extensión.
Las librerías compartidas proporcionadas por ESRI que extienden la jerarquía de clase tala como DDLs
soportan el análisis espacial. Por ejemplo, si se crea una extensión que use las clases y requerimientos
definidas en el análisis espacial, pero no el interface, podría crear una extensión con dependencia sobre el
Análisis Espacial DLL
El script Make añade los objetos de la raíz de las extensión. El autor de la extensión debe ser consciente del
orden en que dichos objetos se añaden, debido a que el script Install recupera los objetos de la extensión
usando los valores de los índices. Los objetos en una extensión se indexan como si ellos estuvieran en una
lista.
Uso de nombres para controles
Es una convención nombrar cualquier control añadiendo una extensión. Esto hace fácil buscar el
proyecto y encontrar los aquellos objetos nombrados cuando hay que desinstalarlos.
El script Make (continuación)
 Añade los objetos a la extensión (en orden)
theExt.Add(aButton1)
theExt.Add(aButton2)
 Añade los scripts a la extensión
theExt.Add (av.GetProject.FIndScript (“VecTool.CalcDistance”))
theExt.Add (av.GetProject.FindScript (“VecTool.GeoBuffer”))
 Describe la extensión y el asigna el número de la versión
theExt.SetAbout (“Esta extensión proporciona funcionalidad de análisis vectorial”)
theExt.SetExtVersion(1)
 Ejecuta la extensión y escribe el fichero al disco.
 Se compila pero no se corre
Después de que los botones han sido añadidos a la extensión, el script Make añade los scripts que soportan.
Asignación de propiedades de extensiones
En este momento el autor de la extensión determina qué propiedades han de ser asignadas en el script Make. En el ejemplo
anterior, los requerimientos theExt.SetAbout y theExt.SetExtVersion se usan para establecer las propiedades.
Número de versión
Esta propiedad es el número de versión de la extensión que ha sido asignado en el script Make con el requerimiento
anExtension. SetVersion. Esta propiedad puede ser útil para programadores que puedan llevar a cabo futuras versiones de la
extensión. El script install puede testear par ver si una versión particular de una extensión está ya cargada, antes de continuar la
ejecución del script install.
About
Esta propiedad es una cadena que describe la extensión. La cadena aparece en la ventana de diálogo cuando el usuario hace clic
en el nombre de las extensión. La propiedad se asigna en el script Make con el requerimiento anExtension.SetAbout. (Otras
propiedades de las extensiones se cubren más tarde en esta sección.)
Ejecución de ODB
El último paso en el script Make usa el requerimiento Ext.Commit.Este requerimiento se hereda de la clase ODB y realiza
cambios en el
fichero ODB y escribe la ODB en el disco.
Compilación del script Make
Después de que el script esté completo, se necesitará compilar este script, pero no correrlo al tiempo. Antes de poder correr el script
Make, debe asegurarse que de los otros scripts están en uso, específicamente e Install y Uninstall deben compilarse también. Si
se corre el script Make antes de compilar los dos últimos, el script Make encontrará un error .
El script Install
 Se ejecuta cuando se carga la extensión o cuando se abre el proyecto
 El objeto SELF hace referencia a la extensión
 Define cómo se añaden los objetos al proyecto actual
 Añade los botones a la barra de botones de la vista empezando en la posición 21
bb=av.GetProject.FindGUI (“View”).GetButtonBar
bb.Add(SELF.Get(0),21)
bb.Add(SELF.Get(1),22)
 Los script soportados por los botones no se añaden al proyecto
 Debe compilarse, no ejecutarse antes de correr el script Make
El script Install
El script Install es un script adicional que prepara una extensión.
El script Install
El script Install se ejecuta cuando se carga una extensión o si la extensión está ya cargada, cuando se abre un
proyecto diferente o se crea uno nuevo. El script Install define cómo se añaden los objetos al proyecto actual. El autor
de la extensión especifica el orden en que los objetos se añaden a la extensión en el script Make para facilitar la
instalación de cada objeto desde la extensión al proyecto.
Por ejemplo, si se añaden 3 herramientas y dos botones al docGUI de la vista del proyecto actual, el script Install
define cómo y dónde dichos controles se añaden a las barras de controles. El script Install se ejecuta también cuando
cualquier nuevo proyecto se crea mientras la extensión esté activa.
En el código de la página anterior, los objetos empiezan a instalarse y recuperarse desde la extensión. La extensión
está reverenciada por la palabra clave SELF.
Instalación de scripts
En la página anterior, los scripts que soportan los controles no se añaden al proyecto Es innecesario porque los
scripts son parte de la extensión y en la extensión está en la búsqueda que realiza ArcVIew cuando busca el script
llamado (el script asociado con el control).La aplicación busca el proyecto actual, los valores por defecto, las
extensiones cargadas, y después los valores por defecto del sistema para el script llamado. El orden de búsqueda es
el siguiente:
1. Proyecto
2. Valores por defecto del usuario
3. Extensiones
4. Valores por defecto del sistema
Esto significa que no todos los objetos tienen que ser añadidos al proyecto. Estos permanecen como parte de la
extensión y cuando los objetos nombrados aparecen en un script, la extensión se busca para los objetos nombrados.
El script Install debe compilarse antes de ejecutar el script Make.
El ejemplo de la página anterior es la suma mínima necesaria para el script Install.
Hay otros detalles del script Install que serán introducidos después de esta sección.
El script UnInstall
 Se ejecuta cundo se descarga una extensión o cuando se cierra un proyecto.
 Borra cualquier objeto añadido al proyecto por el script Install
 Borra los botones de la barra de botones de la vista
bb=av.GetProject.FindGUI (“View”).GetButtonBar
bb.Remove( bb.FIndByName(“VectButton1”))
bb.Remove(bb.FIndByName(“VectButton2”))
 Debe compilarse antes de ejecutar el script Make
El script UnInstall
El segundo script recomendado es el script UnInstall.
El script UnInstall
El script UnInstall se ejecuta si el proyecto se cierra o cuando se descarga una extensión. Este script se
ejecuta antes del script UnLoad y limpia cualquier especificación al proyecto.
Este script borra cualquier objeto que se añadió con el script Install. Este concepto es critico y repetitivo:
cualquier objeto que se añada al proyecto por el script Install necesita borrarse con el script UnInstall.
El script UnInstall debe compilarse antes de ejecutar script Make.
El código de la página anterior es lo mínimo necesario para el script UnInstall. Hay otros detalles del script
Install que se comentarán más tarde en la sección.
Uso de nombres para localizar controles
Cuando los controles se borran del proyecto, es ventajoso recuperarlos por el nombre.Desde que el usuario
tiene la oportunidad de moverse por el conjunto de controles, pueden no estar en la misma posición en que
fueron añadidos. Esto hace difícil el localizarlos y recuperarlos con el script UnInstall. Al referirse a los
controles por sus nombres, el autor de las extensiones no tiene que preocuparse por los movimientos del
usuario.
Uso de extensiones
 Asignar variables de entorno para localizar ficheros .avx de extensiones
$AVEXT
$USEREXT
 Carga de una extensión de la caja de diálogo Extensions
Uso de extensiones
Cuando se ejecuta el script Make, éste crea el fichero de la extensión en el directorio especificado por el requerimiento anExtension.Make
Localización de ficheros *.avx
Para ver la extensión listada en la caja de diálogo Extensions, el fichero .avx tiene que localizarse en $AVHOME/ext32 o moverse a un
directorio especificado por el usuario. El $AVHOME/ext32 se referencia por una variable llamada $AVEXT. El directorio especificado por el
usuario está referenciado por la variable $USEREXT. Ambas variables pueden asignarse en el script de inicio del nivel de la aplicación o
en el script de inicio del proyecto, usando el requerimiento System.EnvVar.
ExtensionWin
Para llamar a una extensión específica, haga activa la ventana de proyecto, y desde el menu Archivo (File) pique la opción de menú
Extensions. Este menú corre el script appl.GetExtensionWin. Este script tiene una única línea de código que envía al objeto ExtensionWIn
el requerimiento Show.
Ejercicio 12A: Creación de una extensión
Paso 1
Iniciar ArcView y abrir un proyecto.
Paso 2
Inspeccionar los scripts Install y UnInstall
Paso3
Escriba el script Make y ejecútelo.
Paso4
Testee la extensión con otro proyecto.
Ejercicio 12A: Creación de una extensión
En este ejercicio, se podrá construir una extensión que añada algunos controles de análisis de vector al proyecto. Se
construirá la extensión escribiendo el script Make. Se correrá el script para construir el fichero de extensión y después
testear la extensión añadiendo éste a un proyecto diferente.
Paso 1
Iniciar ArcView y abrir un proyecto.
Si es necesario iniciar ArcView.
Desde el menú Archivo (File), elija Open Project. Moverse al directorio ejercicio. Hacer doble clic en ex12a.apr para abrir el
proyecto para este ejercicio.
Cuando el proyecto se abra, se verá una vista llamada Atlanta Schools.
Se construirá una extensión que añada algunas facilidades de análisis vectorial al proyecto. Este proyecto ya contiene los
objetos necesarios para la extensión; se escribirá el script Make que construye la extensión.
La barra de botones tiene dos botones nuevos a la derecha del botón Ayuda (Help). Hay también una nueva herramienta al
final a la derecha de la barra de herramientas.
Esos tres contoles tienen las siguientes propiedades:
Propiedad
botón#1
botón#2
Apply
N/A
N/A
Click
VectTools.CalcDistance
VectTools.GeoBuffer
Cursor
N/A
N/A
Herramienta #1
VectTools.FindNear
vacío
Paso 2
Cursor.Bullseye
False
Disabled
False
False
Help
Calcula la distancia entre las
entidades de dos temas de
punto
Dibuja un buffer alrededor
de la entidad seleccionada
Busca la entidad más
cercana del punto
identificado
Help Topic
vacío
vacío
vacío
Icon
PatternRamp
Loop
Speeding Bullet
Invisible
False
False
False
Tag
vacío
vacío
vacío
Update
View.HasDataUpdate
View.HasDataUpdate
View.HasDataUpdate
Inspeccionar los scripts Install y UnInstall
Los scripts Install e UnInstall son una parte importante de la extensión. Ellos controlan que las extensiones se carguen en un
proyecto y que se borren.
Primero examina el script Install. Este script se usará para instalar los objetos almacenados por la extensión en el proyecto
actual.
Abra el script VectTools.Installer
Los objetos se recuperan desde la extensión (SELF) y después se añaden a la barra de botones de la vista. El script Install
no carga los tres scripts que se usan por los controles. Se añadirán a la extensión. La extensión está en el orden de
búsqueda que ArcView usa cuando busca un script determinado.
Cuando acabe de revisar el script, compílelo, y cierre la ventana del script.
Después examinará el script UnInstall.
Abra el script llamado VectTools.UnInstaller
Tómese un minuto en revisar el contenido de este script. Éste encuentra los objetos cargados en la extensión por su nombre
y los borra del proyecto. Cuando acabe de revisar el script, compile éste y cierre la ventana del script.
Paso3
Escriba el script Make y ejecútelo.
El script Make crea la extensión y define los objetos que se almacenarán en la extensión. Incluso si el proyecto actual
contiene objetos que formarán parte de la extensión, el proyecto actual es únicamente la fuente para la extensión. Puede no
haber creado la extensión. Para hacerlo, usará el requerimiento Extension.Make, busca los objetos en el proyecto actual, y
los añade a la extensión.
Abra un nuevo script y, desde el menú del script, elija propiedades(Properties), En la caja de diálogo de propiedades, llame el
script Tools.Maker. Haga clic en OK.
La primera cosa que hará será crear la extensión
Cree la variable llamada theExt enviando el requerimiento Make a la clase Extension. El requerimiento Make tiene cinco
parámetros, un nombre de fichero(aFileName),un nombre (aName),un script de Instalación (anInstallScript), un script de
desinstalación(anUnInsallScript),y cualquier Dependencia (Dependencies).
Para el primer parámetro, nombre la extensión vectoolLavx y de el path de el directorio pavetemp. Para convertir la cadena
a un nombre de fichero, use el requerimiento AsFileName.
Para el segundo parámetro, nombre al extensión Vector tools.
Para el tercer parámetro, comience con av y después use el requerimiento GetProject, seguido por el script FindScript,
especificando VectTools.Installer como script Install.
Para el cuarto parámetro, use los mismos requerimientos que antes y especifique VectTools.Uninstaller como script
UnInstall.
Debido a que esa extensión no va a ser dependiente de cualquier otra extensión, sólo proporciona una lista vacía para el
parámetro Dependencias.
Después construirá los objetos raíz para la extensión. Empiece con el primero de los botones y después la herramienta (El
orden no es importante. Lo es sólo cuando en los objetos añadidos a la extensión.)
Recupere el primer botón.
Cree una variable llamada aButton1. En el lado derecho del operador de asignación, empiece con av, y después use el
requerimiento GetProject, seguido por el requerimiento FindGUI. El requerimiento FindGUI debería tener la cadena “View”
como parámetro. Después envíe el requerimiento GetButtonBar y FindByScript. El requerimiento FindByScript debería
tener VectTools.CalcDistance como parámetro.
Todo esto se puede hacer en una única línea usando requerimientos encadenados, o construir varias variables de varias
líneas (Puede usar esas variables de nuevo cuando añada el otro botón y la herramienta.)
Nombre este botón Boton1 enviando el requerimiento SetName a la variable aButton1.
Añada el segundo botón a la extensión de la misma forma que el primero. El script que ejecuta este botón se llama
VectTools.GeoBuffer.
Nombre este botón Botón2 enviando el requerimiento SetName a al variable aButton2.
Ahora construya la herramienta de la misma forma que se construyeron los dos botones. Use el requerimiento GetToolBar en
lugar deGetButtonBar. Esta herramienta ejecuta un script llamado VectTools.FindNear.
Nombre la herramienta Herramienta1 enviando el requerimiento SetName a la variable aTool1
Es importante que se de nombre a esos botones y herramientas como se especifica arriba, debido a que el script UnInstall
usa esos nombres para localizarlos.
Después añada los dos botones y la herramienta a la extensión. Para añadir un objeto a la extensión, use el requerimiento
Add. El requerimiento Add se hereda de la superclase ODB.
Envíe el requerimiento Add a la variable theExt. Haga esto tres veces, una vez para cada control. Use las variables para los
botones y herramienta como parámetros para el requerimiento Add.
Añada los tres scripts que usarán los controles de la extensión
Envíe el requerimiento Add a la variable theExt. Como primer parámetro, use el conjunto de requerimientos encadenados
av.GetProject.FindScript. Para el parámetro del requerimiento FindScript, de el nombre del script. Remítase al gráfico de la
página 12-25 para los nombres de los scripts. Necesitará hacerlo tres veces, una para cada script que esté siendo añadido.
Consejo: Debería parecerse a algo como object.request(object.request(parámetrro).)
Lo siguiente que se debería hacer es describir la extensión
Envíe a al extensión (referenciado con la variable theExt) el requerimiento SetAbout. Para este requerimiento, proporcione
una frase o dos que describan lo que hace la extensión. Por ejemplo: “Esta extensión se asigna para añadir”+NL+”alguna
utilidad de análisis vectorial simple para”+NL+”el proyecto actual”. Esta cadena aparecerá al final de la caja de diálogo de la
Extension
Asigne el número de versión de la extensión.
Envíe a la variable theExt el requerimiento SetExtVersion. Como es la primera versión, use el parámetro 1.0.
El paso final es hacer la extensión. El requerimiento Commit creará el fichero de extensión en el disco en el directorio
pavetemp.Envíe el requerimiento Commit a la variable theExt.
Cree el fichero de la extensión
Compile y corra el script Make. Éste creará la extensión (el fichero ODB) vectooLavx en el directorio pavetemp.
Finalmente, salvará el proyecto.
Salva el proyecto como VectTool.apr en el directorio pavetemp
Paso4
Testee la extensión con otro proyecto.
La extensión está ahora disponible. Se testeará la extensión abriendo otro proyecto y cargándolo en éste.
Con la ventana de proyecto activa, elija Abrir Proyecto (Open Project) del menú Archivo(FIle).
Después muévase al directorio ejercicio y elija ex12test.apr
Cuando se abra el proyecto, verá el script activo llamado USEREXT.Set. Este script asignará la
variable del sistema
(USEREXT) para apuntar al directorio pavetemp. ArcView usa esta variable para encontrar los ficheros .avx que están
disponible para las cajas de diálogo Extensions.
Cambie el path en el script para que se ajuste al path del directorio pavetemp. Compile y corra el script, después cierre la
ventana del script.
Ahora, cargue la extensión.
Active la ventana de proyecto, después desde el menú Archivo (File), haga clic en la opción Extensions. Debería ver la
extensión VectorTools listada en la caja de diálogo Extensions.
Haga clic en el nombre de la extensión y lea el mensaje About (descripción de la extensión)
Haga clic en la caja de chequeo a la izquierda de Vector Tools, después haga clic en OK. En este momento la extensión se
carga y se ejecuta el script Install.
Active la vista. Debería ver los dos botones y la herramienta que fueron instalados por la extensión.
Testee las herramientas:
Button1 calcula la distancia desde uno o más puntos en un tema a todos los puntos en otro tema.
Button2 construye gráficos poligonales alrededor de las entidades seleccionadas de un tema.
Tool1 encuentra y selecciona las entidades más cercanas en el tema activo a un punto dado por el usuario de forma
interactiva.
Cuando acabe, active la ventana de Proyecto, y desde el menú Archivo (File), de nuevo elija Extensions.
Haga clic en Vector Tools para apagar la extensión. Haga clic en OK.
Ahora ejecutará el script UnInstall especificado por el requerimiento Make.
Active la vista y vea que los controles ardido por la extensión se han ido.
End
Propiedades de la extensión
 Seis propiedades de eventos permiten manejar la extensión
Install
UnInstall
Load
Unload
CanUnload
ProjectSave
 Cada propiedad tiene su propio script
Todas la propiedades de las extensiones tienen scripts asociados con ellas y están establecidos por el requerimiento Make de la
Extensión o cualquier otro requerimiento de Avene en el scriptMake.
Load
El script asociado con la propiedad Load se ejecuta cuando se activa la extensión. Una extensión puede devolverse de varias
formas: haciendo clic en la caja de chequeo en la caja de diálogo de Extensiones, abriendo un proyecto que depende de la
extensión o usando un requerimiento de Avenue. Este script se usa para asignar el entorno de aplicación para la extensión, así
como las variables globales.
Install
El script Install se ejecuta cuando la extensión se carga primero y cada vez que se crea o abre un proyecto diferente mientras dicha
extensión esté cargada. El script Install se usa para añadir objetos de la extensión al proyecto.
UnInstall
La propiedad UnInstall tiene un script asociado con ella que se ejecuta cuando se descarga la extensión o cuando se cierra el
proyecto actual. El script UnInstall borra cualquier objeto del proyecto que fuese añadido por el script Install.
Unload
El script se ejecuta cuando la extensión se descarga del proyecto. El script UnLoad lleva a cabo cualquier operación de limpieza a
nivel de la aplicación antes de que la extensión se descargue (El script Unload deshace todo aquello que hizo el script Load).
CanUnload
La propiedad CanUnLoad tiene asociado un script con el que testear si la aplicación puede descargarse. Este script se ejecuta
cuando se llama al diálogo de la extensión y determina el estado de la marca de chequeo en la caja de diálogo de las Extensiones,
devolviendo true si se puede chequear y false si no. Se deja a la elección del autor de la extensión asignar la condición para cuando
la extensión pueda o no descargarse.
ProjectSave
La propiedad TheProjectSave tiene asociado un script que se ejecuta antes de que el proyecto sea escrito en un fichero.
Relación entre proyectos y extensiones
 Los proyectos pueden depender de las extensiones
 Los objetos de las extensiones residen en el espacio de la extensión
 Los objetos de las extensiones no se salvan en el espacio del proyecto.
 Los objetos copiados se salvan en el espacio del proyecto
Relación entre proyectos y extensiones
La relación entre proyecto y extensión se basa en el estado actual del proyecto. Esto es, si el proyecto se salva con la extensión
cargada, el proyecto depende de la extensión.
Si se intenta abrir el proyecto y el fichero de extensión no está localizado en el directorio especificado por AVEXT o $USEREXT ,
entonces será requerido para que lleve a cabo la reparación del proyecto y localización del fichero de extensión
Espacio de extesiones frente a espacios de proyecto.
Los objetos instalados por la extensión pertenecen a la extensión y nunca se escriben en el fichero de proyecto cuando se salva
éste. Esto significa que si el usuario personaliza los objetos instalados por la extensión, los cambios nos se salvan con el proyecto
.Por ejemplo, si la extensión se carga una vista, y el usuario añade temas o cambia los símbolos de la leyenda para el tema, esos
cambios no se salvarán con el proyecto cuando el usuario lo salve. Dichos objetos se llaman “pertenecientes a la extensión” y
residen en el “espacio de la extensión”.
Clonar objetos
El autor de la extensión puede permitir la personalización de los objetos de la extensión clonando los objetos de la misma. El autor
añade los objetos clonados al proyecto y así forman parte del “espacio del proyecto”. Una vez que los objetos forman parte del
espacio, cualquier personalización de los mismos se escribe en el fichero del proyecto cuando éste se salva. Si se instalan objetos
el en espacio proyecto es crítico, ya que si no dichos objetos se borrarán cuando la extensión se descargue. Necesitará localizar
dichos objetos para borrarlos .Si el usuario salva el proyecto y se cierra mas tarde el proyecto, se ejecuta el script UnInstall , pero no
se borran los objetos. Esto se da sólo cuando el usuario descarga al extensión que el script UnInstall ejecuta y borra todos los
objetos añadidos por el script Install, incluso los objetos clonados. Entonces, cualquier personalización realizada se perderá, y se
borrarán los objetos.
Manejo de una extensión con el script Install
 El script Install debería verificar si se está en un proyecto activo.
if (av.GetProject = nil) then
return nil
end
 Usa diccionarios para ver si las extensión se ha cargado ya.
if (SELF.GetPreferences.Count <>0 ) then
return nil
else
SELF.GetPreferences.Add (“Versión”, SELF.GetExtVersion)
end
 Permite la personalización y ubicación de controles en GUIs personalizados.
bb = av.GetProject.FindGUI (“View”).GetButtonBar
pos = bb.GetControls.FInd (bb.FindByScript (“Help.Tool” ))
bb.ADD (SELF.Get(0).clone,pos - 3)
bb.ADD (SELF.Get(1).clone,pos - 2)
Manejo de una extensión con el script Install
Es importante recordar que el script Install se ejecute cuando el usuario carga la extensión, cuando se cree un nuevo proyecto mientras se
carga la extensión, o cuando un proyecto se abre y depende de la extensión
Verificar un proyecto activo
Lo primero que el script Install debería hacer es verificar si hay un proyecto activo antes de continuar añadiendo objetos a la extensión. Si
no hay un proyecto activo, el script Install no debe ejecutarse.
Utilización de el diccionario de Preferencias
Si los objetos de la extensión han sido clonados y añadidos al espacio proyecto, se escriben en el fichero de proyecto cuando éste se salva.
El proyecto ahora depende de la extensión. Cuando se vuelve a abrir el proyecto, aquellos objetos leídos des fichero de proyecto se añaden
automáticamente a éste. También se ejecuta el script Install de la extensión. Cuando éste se ejecuta, añade los objetos de nuevo hasta
donde fue cargada al principio. Consecuentemente, pueden suceder dos cosas. El script Install necesita verificar si ya está cargada la
extensión. Si lo está, no es necesario finalizar el script Install y se puede no ejecutar dicho script. Si no está instalado, entonces añade los
objetos.
El autor debería usar diccionarios de preferencias par testear esto. (Ver 12-39 para una descripción de los diccionarios) Cada extensión
cargada tiene un diccionario de preferencias que se salva con el proyecto. Incluso si el diccionario de preferencias se salva en el fichero de
proyecto, se debe acceder sólo a través de la extensión a la que pertenece. El requerimiento es anExtension.GetPreferences
Permiso de personalización
Se puede permitir la personalización de dos formas:
Clonar los objetos que la extensión añade. Este pone aquellos objetos en el espacio proyecto y cualquier personalización realizada a
dichos objetos se escribe en el fichero de proyecto.
Cuando se añaden controles al proyecto, la interfaz puede ser fuertemente personalizada.
Se pueden localizar controles usando la posición exacta, en el conjunto de controles, relativo a otro control, o colocarlos al principio
o final del conjunto de controles
Uso de diccionarios con extensiones
 Un diccionario es una colección de claves únicas y pares de valores
KEY
VALUE
KEY
VALUE
KEY
VALUE
Cargado
true
Version
1.0
 Crear o recuperar diccionarios
theDictionary = Dictionary.Make (100)
theExt.GetPreferences
 Añadir elementos
theDictionary.Add (aKey, aValue)
theExt.GetPreferences.Add (“Versión”, theExt.GetVersion)
 Recuperar entradas de diccionario
keyList = theDictionary.ReturnsKeys
theVersion = theKey.GetPreferences.Get(“Versión”)
Uso de diccionarios con extensiones
Los diccionarios son una colección de claves y pares de valores. Los diccionarios aseguran que cada clave es única. La clave y valor
pueden ser objetos de cualquier clase, y no necesita pertenecer a la misma clase.
Diccionarios de Nombres
Un Diccionario de Nombres (NameDictionary) usa los pares clave/valor, pero distinto de los diccionario genéricos, donde la clave puede ser
cualquier objeto, la clave es el nombre del objeto. Este método permite más eficiente acceso y de recuperación. El proyecto tiene un
Diccionario de Nombres que contiene un diccionario para cada extensión cargada.
Crear o recuperar diccionarios
Para crear un diccionario, envíe el requerimiento Make a la clase Diccionary.
El nombre y tamaño (número de entradas) del diccionario se especifica en el requerimiento Make. Con las extensiones un diccionario de
preferencias se almacena con el proyecto, pero pertenece a y se recupera de la extensión con el requerimiento getPreferences.
Añadir elementos a un diccionario
Los pares key/value se añaden a cualquier diccionario usando el requerimiento Add.
Devolver entradas en diccionarios.
Envíe el requerimiento Returnkeys al diccionario para devolver una lista de valores únicos. Esta lista puede usarse es cajas de mensaje o
bucles. Para recuperar los valores asociados con una clave en una lista, envíe el requerimiento Get con una clave (parámetro) al
diccionario.
Con extensiones, se puede chequear par ver qué versión de la extensión se carga usando el requerimiento Get con la clave “Versión”
Manejo de una extensión con el script UnInstall
 El script UnInstall debería verificar si se está en un proyecto activo.
if (av.GetProject = nil) then
return nil
end
 No hay razón para desinstalar los objetos de una extensión si el proyecto se está cerrando.
i f(av.GetProject.IsClosing) then
return nil
end
Manejo de una extensión con el script UnInstall
Con un script UnInstall más extenso, el autor de la extensión puede manejar la extensión en un grado mayor
Verificar un proyecto activo
Lo primero que debería hacer el script Uninstall es verificar si hay un proyecto activo abierto antes de continuar. Si no hay
proyectos activos, entonces, no es necesario ejecutar el script uninstall.
Desinstalación al tiempo de cerrar
Es importante recordar que el script UnInstall se ejecuta cuando se cierra un proyecto o cuando el usuario descarga la
extensión.
Cuando se cierra el proyecto, el script UnInstall no se necesita ejecutar porque el estado de la extensión y ha sido
determinado. Por ejemplo, si el autor de la extensión ha elegido dejar los objetos de la misma en el espacio de la extensión,
estos objetos no se salvarán con el fichero de proyecto. Cuando se cierra el proyecto dichos objetos se borran de la memoria
y como consecuencia no hay razón para que el script UnInstall los borre del proyecto. Otro ejemplo es si el autor de la
extensión ha elegido añadir los objetos al espacio del proyecto, los objetos de la extensión se escriben en el fichero de
proyecto y no es necesario borrarlos cuando se cierre el proyecto.
Es sólo cuando el usuario descarga la extensión que el script UnInstall necesita borrar todos los objetos añadido por el script
Install.
Ejercicio 12B: Manejo de una extensión
Paso 1
opcional
Editar el script Install para manejar extensiones.
Paso 2
opcional
Editar el script UnInstall y el script Make
Paso3
opcional
Paso 1
opcional
Personalizar los controles de la extensión
Editar el script Install para manejar extensiones.
En este paso, se editará el script Install para que si se hacen cambios en los objetos añadidos por la extensión,
puedan salvarse con el proyecto.
Si es necesario, inicie ArcView.
Desde el menú Archivo (File), elegir Abrir Proyecto (Open Project). Muévase al directorio ejercicio.
Haga doble clic en ex12b.apr para abrir el proyecto para ese ejercicio.
En la ventana de proyecto, haga clic en el icono Scripts y abra el script VectTools.ModifiedInstaller.
Vea las primeras líneas de código en ese script. Ellas chequean par ver si hay un proyecto actual abierto. Si no lo hay,
el script devuelve un objeto nil (nulo) y nunca acaba.
Lo primero que se debe hacer en ese script es escribir el estamento If Then para chequear si la extensión está ya
cargada. (Recuerde, si el proyecto se salva con la extensión cargada, el proyecto se hace dependiente de la
extensión. Entonces, cada vez que se abra el proyecto, la extensión se carga automáticamente y se ejecuta el script
Install.)Si la extensión está ya cargada, no se quiere hacer nada que no sea devolver desde el script. Si la extensión
no está cargada, ha de continuar.
Inicie el estamento If Then . Como condición, envíe SELF ( que referencia a la extensión), el requerimiento
GetPreferences, seguido por el requerimiento Count, y use el operador relacional not equal to seguido por 0.
Si la condición es true, la extensión ya está cargada; entonces devuleve un objeto nil (nulo) desde el script.
Si el contador es cero, significa que la extensión no está cargada.
Después, escribirá el estamento Else para asignar la versión actual de la extensión. Se añadirá un elemento al
diccionario de Preferencias que identifica qué versión está cargada. El número de versión se usa para llevar a cabo el
desarrollo de la extensión.
Envíe el requerimiento GetPreferences a SELF seguido por el requerimiento ADD para añadir un elemento al
diccionario de preferencias. Como primer parámetro (la clave) use Version. Para segundo parámetro ( el valor),
recupere el número de versión desde la extensión enviando a la extensión (SELF) el requerimiento GetExtVersion.
Ahora, examine las líneas que añaden los controles .Para localizar los controles en un posición relativa, el script asigna una variable
llamada pos a un valor de índice del botón Help ( el último botón en la barra de botones de la vista).
Después, editará el script para clonar los controles añadidos por la extensión. Se colocarán también los controles relativos al botón Help.
En la línea posterior se crea la variable pos, inserte el requerimiento Clone después del parámetro Get(0).
Reemplace el parámetro 2/ con la variable pos seguido por -3 como posición.
Este colocará el primer botón tres lugares a la izquierda del botón Help.
Después , edite el script para clonar y colocar el segundo botón.
Edite la siguiente línea, usando -2 como posición.
Ahora editará el script para clonar u colocar la herramienta similar de la forma que hizo para los botones.
Muévase a la sección de código que añade la herramienta. En la última línea (tb.Add(SELF.Get(2),15)inserte el requerimiento Clone
después del parámetro Get (2). Después, para el parámetro de posición (15) , envíe a la variable tb (para la barra de botones) el
requerimiento Getcontrols seguido del requerimiento Count.
Compile ( no corra) el script. Cuando acabe, cierre el script.
Ahora, cuando salve el proyecto, cualquier personalización se preservará.
Paso 2
opcional
Editar el script UnInstall y el script Make
En este paso, editará el script UnInstall por lo que si se cierra el proyecto actual, el script UnInstall no se ejecutará.
Abra el script VectTools.ModifiedUninstaller.
Después de las tres primeras líneas comentadas, empiece un estamento If Then. Para la condición, envíe a la aplicación (av) el
requerimiento GetProject seguido del requerimiento IsClosing. Después si la condición es true, devuelve nil para terminar el script, después
finalice el estamento If Then.
Compile el script.
Después, abra el script VectTools.Maker. Modificará este script y especificará los nuevos scripts Install y UnInstall.
Primero, asigne el path en el requerimiento Extension.Make del directorio pavetemp.
Muévase a la línea donde se hace la extensión (theExt). Cambie el nombre del fichero .avx desde vectool.avx a mvectool.avx ( “m” indica la
versión modificada)
Después, cambie el nombre de la extensión de Vector Tools a Mod Vector Tools.
Finalmente, cambie el script Install desde Installer a VectTools.ModifiedInstaller y el script UnInstall desde VectTools.UnInstaller a
VectTools.ModifiedUnInstaller.
Compile este script, después córralo. Crea otro fichero de extensión en el directorio pavetemp llamada mvectool.avx.
Cuando acabe, cierre la ventana del script.
Salve el proyecto como mvtool.apr en el directorio pavetemp.
Ahora testeará la nueva extensión.
Haga clic en el proyecto para activarlo. Entonces, desde el menú Archivo (File), haga clic en Abrir Proyecto(Open Project) y abra el
proyecto ex12test.apr almacenado en el directorio ejercicio.
Después abra el proyecto, vaya al menú Archivo (File) y haga clic en Extensions.
Debería ahora ver Mod Vector Tools junto con VecTools listado en la caja de diálogo Extensiones
Haga clic en la caja de chequeo a la derecha de Mod Vector Tools, después haga clic en OK.
En este momento se carga la extensión y se ejecuta el script Install modificado. Usará este script con la extensión cargada en el siguiente
paso.
Paso3
opcional
Personalizar los controles de la extensión
En este paso, se personalizarán los controles añadidos por la extensión, se salvará el proyecto para ver qué personalizaciones se
preservan.
Abra la caja de diálogo de Personalización (Customize). Cambie el icono para la herramienta que se ha añadido a la extensión. Después
arrastre los dos botones de la extensión a una nueva localización de la barra de botones.
Cuando acabe, cierre la caja de diálogo de Personalización (Customize).
Active la ventana de Proyecto, y desde el menú Archivo (File) elija Salvar como (Save Project As). Salve este proyecto en el directorio
pavetemp y nombre éste custvect.apr.
Ahora volverá a abrir el proyecto y examinará las personalizaciones
Con la ventana de Proyecto activa, desde el menú Archivo (File), elija Abrir Proyecto (Open Project) .Navegue por el directorio pavetemp y
vuelva a abrir custvect.apr. Este es el proyecto en que se acaban de personalizar los controles.
Cuando abra el proyecto, active la vista. Los controles reflejarán la personalización.
End
A P É N D I C E
A
Leer y escribir ficheros de texto
Leer y escribir ficheros de texto........................................................................ A-2
La clase Fichero......................................................................................... A-4
Crear FileNames y objetos Fichero............................................................ A-6
Utilizar FileDialog....................................................................................... A-8
Leer y escribir operaciones........................................................................ A-10
Leer el final del fichero............................................................................... A-12
Ejercicio A: Leer y escribir ficheros.................................................................. A-15
Leer y escribir ficheros de texto
 Trabajar con ficheros y objetos FileName
 Definir los permisos de acceso a ficheros
 Utilizar las cajas de diálogo para buscar o crear ficheros
Figura
Leer y escribir ficheros de texto
Esta sección examina el fichero de entrada y salida de Avenue™. Aprenderá como trabajar con los objetos File (fichero) y FileName
(nombre de fichero), para permitir accesos básicos al fichero. Los permisos de acceso al fichero (ej. Leer o escribir) se definen mediante
emnumeraciones de permiso. También aprenderá como usar las cajas de diálogo para buscar o crear ficheros.
La clase Fichero
 Leer, escribir y manejar ficheros
 Subclases de File (Fichero)
TexFile (un único carácter)
LineFile (línea completa)
 Cada objeto File (Fichero) tiene un objeto FileName asociado
File
LineFile
FileName
TextFile
FileName
ODB
La clase Fichero
La clase File maneja operaciones básicas de ficheros, tanto copiar, borrar, chequear el acceso de escritura y operaciones de
entrada/salida, como el abrir, cerrar y leer ficheros. El fichero es una clase abstracta, usada sólo para organizar las características de sus
subclases: todo fichero es un FileName o un TexFile. Un objeto FileName proporciona una ruta para localizar un fichero.
Objetos LineFile
Un elemento LineFile es una línea completa de caracteres, que acaba mediante una plataforma dependiente de un carácter de final de
línea. Las operaciones de escritura sobre un LineFile conservan la terminación original.
Objetos TextFile
Un elemento TextFile es un único carácter. La clase TextFile se utiliza cuando un fichero no está orientado a líneas (Ej. Cuando se
necesita buscar un carácter e insertar otro carácter o cadena de caracteres).
Crear FileNames y objetos Fichero
 Crear un FileName
myNewFN = FileName.Make (“c:\train\data.txt”)
 Crear un FileName mediante la conversión de una cadena
theWinFN = “c:\work\data.txt”.AsFileName
theUnixFN = “/usr1/data.txt”.AsFileName
theMacFN = “Disk1:work:data”.AsFileName
‘Windows
Unix
‘Macintos
 Enumeraciones de permiso de ficheros
FILE_PERM_READ - abre el fichero con permiso de lectura
FILE_PERM_WRITE - abre el fichero con permiso de escritura
FILE_PERM_APPEND - abre el fichero para añadir
FILE_PERM_MODIFY - abre el fichero para modificarlo
 Crear un LineFile
theLFile = LineFile.Make (theWinFN.#FILE_PERM_READ)
Crear FileNames y objetos Fichero
Cada fichero tiene asociado un FileName. Usted puede crear un FileName usando la cadena de la ruta correspondiente para su
plataforma. Puede utilizar la cadena de la ruta de dos formas para crear un FileName: usando el requerimiento Make en una clase
FileName, o utilizando el requerimiento AsFileName en la cadena, para convertirla a un fichero FileName.
Use el requerimiento Make en la clase LineFile o TextFile para crear un objeto Fichero. EL requerimiento Make necesita como parámetros
un FileName y una enumeración que indica como quiere utilizar el fichero. Puede abrir un fichero ya sea LineFile o TexFile.
Enumeraciones de fichero
Los ficheros pueden abrirse para leer, escribir, modificar o añadir. Use la enumeración de FilePermEnum para especificar los permisos de
un nuevo objeto fichero. Ambos, #FILE_PERM_WRITE y #FILE_PERM_APPEND abren un nuevo fichero o uno existente para escritura: la
diferencia es que #FILE_PERM_WRITE borra lo que tenía escrito el fichero anteriormente, y #FILE_PERM_APPEND, no borra el contenido
del fichero. #FILE_PERM_READ, sólo permite abrir un fichero existente.
Para más información sobre los permisos de un fichero para lectura y escritura, vea la ayuda en línea de las enumeraciones
#FILE_PERM_MODIFY y #FILE_PERM_CLEARMODIFY.
Ficheros de texto
Ejemplo de creación de un fichero de texto:
theTfile = TextFile.Make (theWinFN, #FILE_PERM_WRITE)
Utilizar FileDialog
 FileDialog visualiza una lista de ficheros y directorios en la caja de diálogo
 Crear o recuperar nombres de ficheros
Show devuelve el fichero seleccionado
ReturnFiles devuelve una lista de ficheros seleccionados
Put se utiliza para crear ficheros nuevos
 Obtener un filename del usuario y crear un fichero de texto
myFN= FileDialog.Show(“*.txt”,“Text File”,“Show Files”)
theFile = TextFile.Make (myFN, #FILE_PERM_READ)
Figura
Utilizar FileDialog
Un objeto FileDialog visualiza una lista de ficheros y directorios en una caja de diálogo. El requerimiento Show, ReturnFiles, y Put permiten
al usuario crear un nuevo fichero, o seleccionar uno o varios ficheros.
Existen varias razones para utilizar un FileDialog: puede evitarse escribir rutas sobre plataformas específicas tales que algunas pueden
necesitar ser actualizadas (ej. Para una aplicación de plataforma híbrida o después de mover los datos), y es el usuario quien elige y da
nombre a todos los ficheros.
Show
El requerimiento Show muestra al usuario la selección de un único fichero, y devuelve un objeto FileName. El requerimiento Show
necesita tres parámetros: un patrón (Ej. *.ave), el nombre en la lista de ficheros de la lista de tipo desplegable, y un título para la caja de
diálogo.
ReturnFiles
El requerimiento ReturnFiles permite al usuario seleccionar uno o más ficheros, de uno o más tipos. Devuelve una lista de
FileNames seleccionados. ReturnFiles necesita cuatro parámetros: una lista de patrones (ej. *.ave, *.txt), una lista de nombres de los
patrones en los ficheros de la lista de tipo desplegable (ej. Scripts (*.ave), TextFiles (*.txt), un título para la caja de diálogo, y un índice que
indica el patrón por defecto.
Put
El requerimiento Put permite al usuario especificar un fichero de salida, y devuelve un FileName. Put necesita tres parámetros: una
ruta por defecto para el fichero, un patrón, y un título para la caja de diálogo.
Si el fichero especificado ya existe, se le requerirá al usuario que conteste a la pregunta “Replace Existing File? (¿Desea reemplazar el
fichero existente?), con un yes o un no.
Leer y escribir operaciones
 Leer elementos de un fichero
theString = theLineFile.ReadElt
theChar = theTextFile.ReadElt
 Escribir en un fichero
theFile.IsWritable
theLineFile.WriteElt (theString)
theFile.Close
 Encontrar el número de elementos del fichero
theFile.GetSize
 Manipular cadenas
theString.BasicTrim (leftCharacters, rightCharacters)
theString.Contains (anotherString)
theString.Substitute (someString, anotherString)
 Manejar el puntero del fichero
theFile.IsAtEnd
theFile.GoToBeg
theFile.GotoEnd
theFile.SetPos (aNumber)
theFile.GetPos
Leer y escribir operaciones
Los ficheros acceden a un elemento cada vez. Lea los ficheros con el requerimiento ReadElt. El requerimiento ReadElt devuelve tanto una
línea completa de caracteres o como un único carácter, dependiendo de que el fichero sea un LineFile o un TextFile.
Escribir ficheros
Escriba los ficheros con el requerimiento WriteElt. Cuando escriba en ficheros, hay requerimientos que le permiten conocer qué
tamaño tiene el fichero (GetSize), y si en el fichero se puede escribir (IsWritable). Después de escribir en un fichero, deberá cerrarlo. Use
el requerimiento Close para cerrar el fichero.
Manipular cadenas
Después de leer una línea desde un LineFile, hay algunos requerimientos de manipulación de cadenas que puede usar para
modificar la cadena. Diríjase con String en la ayuda en línea para obtener un listado completo de requerimientos. Puede también convertir
una cadena a una lista y usar los requerimientos de una lista.
Manejar el puntero del fichero
Puede utilizar requerimientos para situar el puntero del fichero en el comienzo del fichero
(GoToBeg), al final del fichero (GoToEnd), o en una posición especifica mediante un índice de posición que comienza a 0 (SetPos).
También puede chequear cuando se haya leído el último registro (IsAtEnd).
Leer el final del fichero
theFN = “c:\work\data.txt”.AsFileName
theLFile = LineFile.Make (theFN, #theFN, #FILE_PERM_READ)
while (theLFile.IsAtEnd.Not)
theString = theFile.ReadElt
MsgBox.Info (“Reading...” ++ theString, “
end
MsgBox.Info (“End of File”, “
theLFile.Close
Figura
Figura
“)
“)
Leer el final del fichero
Utilizando el bucle While, puede leer elementos desde el fichero hasta que se alcance el final del mismo.
Puede usar el requerimiento IsAtEnd para chequear si el puntero de fichero está al final del fichero, y use este test como condición del
bucle While.
Cuando se alcanza el final del fichero, se devuelve Nil. También puede iniciar el bucle While con un Booleano y testear si cada elemento
leído es igual a Nil. En ese caso, el Booleano habrá cambiado y el bucle se detendrá.
Done = false
while (done.not)
theString = theFile.ReadElt
if (theString <> nill) then
MsgBox.Info(“Line #:“+(theLFile.GetPos-1).AsString
else
done = true
MsgBox.Info (“end of File”, “ “)
end
end
+NL+theString,“Reading”,”
”)
Para dejar ver al usuario cada línea, o verificar que fichero se está leyendo correctamente, puede usar MsgBox con el requerimiento Info
para visualizar la cadena que se está leyendo.
Ejercicio A: Leer y escribir ficheros
Paso 1
Iniciar ArcView y abrir un proyecto
Paso 2
Leer líneas desde un fichero y escribirlas en un segundo fichero
Paso 3
Almacenar entradas de usuario en un fichero de texto
Paso 4
Leer desde varios ficheros y escribir en un fichero nuevo
(opcional)
Paso 5
Examinar y reformar cadenas
Ejercicio A: Leer y escribir ficheros
En este ejercicio, leerá y escribirá ficheros de texto. Obtendrá información desde el usuario, entonces cree un fichero y añada datos desde
un fichero de texto.
Paso 1
Iniciar ArcView y abrir un proyecto
Si es necesario, inicie ArcView.
Desde el menú File (Archivo), elija Open Project (Abrir Proyecto). Muévase al directorio exercice. Haga doble clic en exa.apr para abrir el
proyecto de este ejercicio.
Cuando se abra el proyecto, verá la ventana del proyecto.
Paso 2
Leer líneas desde un fichero y escribirlos en un segundo fichero
En este paso, creará dos ficheros. Como lee los registros desde la primera línea, los escribirá en el segundo fichero.
Desde la ventana del proyecto, abra el Exercice EXA, Step 2.
Examine el fichero de texto gisfile1.txt que aparece a continuación. Este es el fichero desde el que leerá.
Almost 30 years ago, a number of geographers conceived a system for storing and organizing
espatial information in a computer. Over the past decade, this growing technology has come to be
know as Geographic Information System (GIS).
Paralleling advancements in the technology has been the growth of GIS applications. From highquality cartography to land use planning, natural resource management, environmental assessment
and planning, tax mapping, ecological research, emergency vehicle dispatch, demographic
research, utilities, business applications, and more, GIS promises to be one of the largest computer
applications ever to emerge.
Cree una variable llamada readFN enviando a la clase FileName el requerimiento Make con la ruta
$AVETRAIN/data/gisfile1.txt.
Cree una variable llamada readFile enviando a la clase LineFile al requerimiento Make. Los parámetros que el requerimiento Make
necesita son readFN y la enumeración para el permiso de lectura es #FILE_PERM_READ.
Luego, cree un fichero en su directorio pavetemp en el que escribirá las líneas que lea desde gisfile1.txt.
Cree una variable llamada writeFN enviando a la clase FileName el requerimiento Make con la cadena <ruta de pavetemp>/gisfile2.txt.
Cree una variable llamada writeFile enviando a la clase LineFile el requerimiento Make. Los parámetros que el requerimiento Make
necesita son writeFN y la enumeración para el permiso de escritura es #FILE_PERM_WRITE.
Cree un bucle para leer todas las líneas en gisfile1.txt y escribirlas en gisfile2.txt.
Construya un bucle While con la condición creada, enviando a readFile el requerimiento IsAtEnd con el requerimiento No.
Defina la variable llamada theString enviando a readFile el requerimiento ReadElt para leer un elemento.
Para escribir el elemento, envíe a writeFile el requerimiento writeElt con theString.
Fin de la iteración.
Después de leer y escribir, envíe a readFile y writeFile el requerimiento Close.
Compile y ejecute el programa.
Para examinar los resultados, desde la ventana del proyecto, abra el nuevo script. Utilice un nuevo script. Use el botón Load Text File
(Cargar Fichero de Texto) para cargar gisfile2.txt desde su directorio pavetemp en el script.
Figura
Ahora compárelo con gisfile1.txt como se mostró al comienzo del paso (pág. A-16)
Ahora, en lugar de escribir los nombres de los ficheros en el código del script, permitirá al usuario seleccionar un fichero para leer desde él
y crear uno nuevo para escribir en él.
Primero, comente las líneas que definen las variables readFN y writeFN.
Luego, cree una caja de diálogo que permita al usuario buscar directorios y elegir desde una lista con todos los ficheros, los de extensión
.txt.
Cree una nueva variable readFN enviando FileDialog con el requerimiento Show. Para los parámetros de Show, utilice las cadenas *.txt
para el patrón, TextFiles (*.txt) para el texto en la caja Type, y Select Files como título de la caja.
Ahora cree una caja de diálogo que permita al usuario dar nombre al fichero de salida. También listará todos los ficheros que tengan
extensión .txt.
Cree un nuevo writeFN enviando FileDialog con el requerimiento Put.
Como parámetros, use las cadenas <ruta
de
pavetemp>/newfile.txt con el requerimiento AsFileName como nombre del fichero por defecto, *.txt como patrón y CreateFile para el
título de la caja.
Compile y ejecute el script. En la caja de diálogo creada elija un fichero de texto bajo e l directorio $AVETRAIN /data para el fichero de
entrada. En la caja de diálogo, cambie o deje el nombre por defecto del fichero de salida.
Para examinar los resultados, desde la ventana de proyecto, abra el nuevo script. Use el botón Load Text File (Cargar Fichero de Texto)
para cargar <ruta de pavetemp>/<su fichero > en el script.
Paso 3
Almacenar entradas de usuario en un fichero de texto
Pedirá al usuario la entrada de datos personalizados y los escribirá en un fichero. Utilizará una caja de mensaje YesNo para que el usuario
conteste si quiere continuar introduciendo datos.
Abra el script llamado Exercice EXA, Step 3, examine el código que hay ya en el script, el cual muestra en pantalla una caja de mensaje
MultiInput. Cree este código en un ejercicio.
theLabels = {“Company Name”,”Address”, “Phone number”)
theDefaults = {“ESRI”, “380 New York Street”, “(909) 793-2853”)
theList = MsgBox.MultiInput (“Enter Customer Data”,”Customer Database “, theLabels, theDefaults)
Cree un fichero para escribir las entradas del usuario, cree una variable llamada theFN enviando la cadena <ruta de
pavetemp>/customer.dat con el requerimiento AsFileName.
Cree una variable llamada theWriteFile enviando el requerimiento Make a LineFile. El requerimiento Make necesita los parámetros theFN
y la enumeración para el permiso de añadir al fichero #FILE_PERM_APPEND.
Haga el bucle para preguntar al usuario. Cuando el usuario conteste yes, la entrada se visualizará.
-Muévase a la línea después del comentario de la caja de entrada.
Use el bucle While y como condición, envíe el requerimiento YesNo a MsgBox. Como mensaje use ¿Do yo want to add another
Record?, como título use Customer Data y asigne por defecto el valor True.
La caja MultiInput pregunta al usuario por el nombre de la compañía, la dirección y el número de teléfono, y crea una variable llamada
theList (este código ya estaba en el script).
Después de la línea que crea la variable theList, inserte una nueva línea.
Ahora cree el código para escribir los nuevos datos al fichero de salida.
Para escribir tres elementos desde una lista en el fichero, envíe el requerimiento WriteElt a theWriteFile. El parámetro para WriteElt
necesita tres cadenas. Cree la primera cadena enviando el requerimiento Get a theList con el índice 0. Cree las otras dos cadenas de
igual forma, usando los índices 1 y 2. Concatene las tres cadenas con ++.
Fin del bucle While.
Cuando el usuario conteste no, el fichero de texto se cerrará.
Envíe el requerimiento Close a WriteFile.
Compile y ejecute el script. Introduzca algunos registros personalizados en el formulario. Puede usar la tecla de tabulación <Tab> para
moverse por las cajas de entrada.
Examine los resultados, desde la ventana de proyecto, abra un nuevo script. Use el botón Load Text File para cargar <ruta de
pavetemp>/customer.dat en el script.
Ejecute el script de nuevo, añada alguno registros más. Cargue <ruta de pavetemp>/ customer.dat en el script de nuevo, y observe que
los registros se han añadido correctamente (ej. El fichero no es borrado cada vez).
Paso 4
Leer desde varios ficheros y escribir en un fichero nuevo
(opcional)
Escriba un script que lea las primeras líneas de una muestra de scripts y escriba la información de la cabecera en un fichero de salida.
Abra el script, Exercice EXA, Step 4.
Para crear una lista de ficheros (*.ave), cree una variable llamada scriptFNList y envíe a FileDialog el requerimiento ReturnFiles. Para la
lista de patrones, use la cadena *.ave y para la lista de etiquetas use Avenue Scripts (*.ave). Debido a que podría tener múltiples
patrones y etiquetas, sitúe cada una de esas cadenas en una lista ({}). El título de la caja de diálogo es Select Scripts, y use 0 para el
patrón por defecto.
Cree una variable llamada writeFN enviando al objeto FileName al requerimiento Make.
pavetemp>/headers.txt.
Use como parámetro la cadena <ruta de
Cree una variable para el nuevo fichero llamada writeFile enviando a LineFile el requerimiento Make y la enumeración para el permiso de
escritura es #FILE_PERM_WRITE.
Cree una variable llamada writeFile enviando a la clase LineFile el requerimiento Make. Los parámetros que el requerimiento Make
necesita son writeFN y la enumeración para el permiso de escritura es #FILE_PERM_WRITE.
Cree un bucle que abra cada fichero para leer, creando una variable llamada readFile. Enviando el requerimiento Make a LineFile con
scriptFN y #FILE_PERM_READ.
Cree otro un bucle For Each que procese las cuatro primeras líneas (1..4) en cada fichero.
Cree una variable llamada theString usando readFile con el requerimiento ReadElt.
Envíe a writeFile el requerimiento writeElt con theString como parámetro.
Fin de la iteración For Each
Cierre readFile con el requerimiento Close.
Fin del otro bucle For Each.
Cierre el writeFile.
Compile y ejecute el script. Muévase hasta $AVETRAIN/scripts elija unos ficheros de los que leerá sus cabeceras.
Para examinar los resultados, desde la ventana de proyecto, abra un nuevo script. Utilice el botón Load Text File (Cargar Fichero de
Texto) para cargar <ruta de pavetemp>/headers.txt en el script.
Paso 5
Examinar y reformar cadenas
En este paso, modifique el script creado en el paso 4 a un script con caracteres extra en la información de cabecera. Usando este script,
puede crear un fichero de salida describiendo toda lo que hace la muestra de scripts.
Se muestra a continuación, la parte superior de la información de la cabecera para una muestra de scripts de Avenue. Observe los
caracteres especiales y las marcas de comentario. La información que describe lo que hace el script se encuentra en las diez primeras
líneas.
‘ @(#) addgshp.ave 1.3 8/18/94 18:37:52
‘ Name: AddGraphicShapesToView
‘
‘Headline:A sample script wich demonstrates creating various GraphicShapes,
‘ changing symbology, and adding these to the GraphicList of a View.
‘
‘Self:
‘
Desde la ventana del proyecto, abra Exercice EXA, Step 5. Modifique el bucle For Each. Para leer las diez primeras líneas,
cambie el rango de 1..4 a 1..10.
Después de leer el elemento (ReadElt), use un estamento If Then para chequear if theString contains la cadena Self. Then, si se cumple
la condición del if, break sale del bucle de este script y va al siguiente script.
Else, crea una variable llamada trimString y envía a theString el requerimiento BasicTrim acompañado con ‘ @(#) a la izquierda y nada a
la derecha. Asigne de nuevo trimString, esta vez acompañada sólo con el apóstofe a la izquierda y nada a la derecha.
Para el parámetro WriteElt, cambie theString a trimString.
Find del estamento if Then Else.
Compile y ejecute el script. Muévase al directorio $AVETRAIN /scripts y elija unos pocos ficheros para leer sus cabeceras.
Para examinar los resultados, desde la ventana de proyecto, abra un nuevo script. Use el botón Load Text File (Cargar Fichero de Texto)
para cargar <ruta de pavetemp>/headers.txt en el script.
Fin
A P É N D I C E
B
Comunicación con otro software
Comunicación con otro software.......................................................................
B-2
Ejecutar comandos del sistema..................................................................
Conexión a una base de datos SQL...........................................................
B-4
B-6
Interaplicación de comunicación (IAC)............................................................. B-8
Servidor de aplicaciones a un cliente de ArcView...................................... B-10
Aplicaciones de un cliente a un servidor de ArcView.................................
B-12
Llamada a Procedimientos Remotos (RPC).....................................................
B-14
Un cliente de ArcView con un servidor de ARC/INFO................................ B-16
Un servidor de ArcView y un cliente de ARC/INFO.................................... B-18
Ejercicio B1: Comunicación con ARC/INFO..................................................... B-21
Cambio de Datos Dinámico (DDE) ...................................................................
Un cliente de ArcView con un servidor de Excel........................................ B-28
El DDEServer de ArcView.......................................................................... B-30
Ejercicio B2: Comunicación con Excel............................................................. B-33
B-26
Comunicación con otro software
 Ejecutar comandos del sistema
 Conexión a bases de datos SQL
 Usar protocolos de interaplicación
Comunicación con otro software
En esta sección, examinará una variedad de técnicas que permiten a ArcView GIS comunicarse con otras aplicaciones. Verá
como Avenue puede enviar requerimientos a otros programas a través de la clase System, la clase SQLCon y las clases que
soportan
los protocolos RPC y DDE .
Ejecutar comandos del sistema

Ejemplos en Windows
‘ abre Excel con
System.Execute (“c:\excel\excel.exe c:\sheet1.xls”)
Ejecuta el registro de sonido
System.Execute (“c:\soundrec.exe c:\windows\chimes.wav”)

Ejemplos en UNIX
‘ Inicia ARC/INFO y ejecuta un programa AML
System.EXecute (“arc \ &run xyz.zml &”)
‘ Ejecuta un fichero audio
audioFile = “mycoice.zu”
commandString = “cat home/” + audioFile + “/dev/audio &”
System.Execute (commandString)
Ejecutar comandos del sistema
El requerimiento Execute en la clase System proporciona un significado dirigido al envíode una cadena de comando de una
plataforma específica al sistema operativo. La cadena puede contener adicionalmente parámetros que requieren los comandos
del sistema o aplicación.
La Clase System
La clase system proporciona otros requerimientos que permiten operaciones no definidas con consistencia mediante distintas
plataformas. Todos los requerimientos se envían a la clase System.
Por ejemplo, puede sonar un pitido (Beep) o un fichero con sonido (PlaySound).
Puede chequear la información del sistema de igual modo que las variables del entorno utilizando GetEnvVars y SetEnvVars,
tome el sistema operativo actual con GetOS, y la información sobre la memoria con GetAvailableMemory, IsMemoryAvailable y
PrintMemory.
Para más información sobre la pantalla, mire los requerimientos GetLook y SetLook, SetScreenSizeInches,
ReturnScreenSizePixels y RefreshWindows.
Para chequear las teclas pulsadas y el clic del ratón, mire los requerimientos IsAltKeyDown, IsControlKeyDown y IsDoubleClick.
Conexión a una base de datos SQL
 Ejecutar bases de datos
theSQLList = SQLCon.GetConnections
mySQLCon=MsgBox.Choice(theSQLList,“Pick a database”,
“SQL Connection”)
 Acceso a bases de datos
mySQLCon = SQLCon.Find (“Oracle”)
mySQLCon.Login (“user/password”)
 Crear una Vtab y una tabla
sqlExp = “select * from t1.tab “
theVTab = VTab.MakeSQL (mySQLCon, sqlExp)
theTable = Table.Make (theVTab)
 Enviar una expresión SQL al servidor
ok = mySQLCon.ExecuteSQL (sqlxp)
Conexión a una base de datos SQL
Use la clase SQL para encontrar o consultar conexiones SQL. Puede tomar una lista de todas las bases de datos con
GetConnections. Para crear la conexión, puede utilizar la lista, tomar una base de datos mediante su índice numérico, o
permita al usuario
que seleccione la base de datos desde una caja de mensaje. También puede usar el requerimiento Find para crear una
conexión que proporcione un nombre de base de datos.
Use el requerimiento Login para acceder al servidor con una cadena de entrada.
Una vez que la conexión está hecha, defina una expresión de selección y cree una VTab con el requerimiento MakeSQL y la
expresión. Entonces cree el documento tabla con la VTab.
Enviar un comando al servidor SQL
Envíe los procesos al servidor SQL utilizando el requerimiento ExecuteSQL. Puede usarla para seleccionar, actualizar,
insertar o borrar información desde la base de datos SQL. Este requerimiento devuelve un booleano indicando si el proceso se
realizó con éxito.
Plataformas UNIX
La interfaz de base de datos de ARC/INFO (DBI) se utiliza para conectar a bases de datos SQL en plataformas UNIX. el
fichero $AVHOME/etc/default.db es el fichero de definición que contiene la información de conexión para cada base de datos.
Plataformas PC (bajo Windows o NT)
Los conductores de la base de datos relacional abierta (ODBC) se utilizan para conectar a bases de datos SQL. ESRI
solo testea y soporta el paquete Intersolv DataDirect ODBC. EL conductor define las conexiones y métodos de acceso a
registros.
Los scripts que contienen la clase SQLCon o el requerimiento MakeSQL no pueden ejecutarse desde el editor de scripts.
Debe asignar primero al script un botón o elección de menú.
Interaplicación de comunicación (IAC)
 Establecer comunicación entre las aplicaciones cliente/servidor
 Un cliente hace un requerimientos a un servidor; el servidor contesta
 Protocolos de plataformas específicas
Windows-Dynamic Data Exchange (DDE)
UNIX - Llamadas a procedimientos remotos (RPC)
Macintosh - eventos Apple y AppleScript
Cliente
Servidor
requerimiento
requerimiento
respuesta respuesta
Red
Interaplicación de comunicación (IAC)
La interaplicación de la comunicación (IAC) establece comunicación entre el cliente y las aplicaciones del servidor. La
aplicación del servidor llama a funciones o requerimientos de datos desde la aplicación del servidor, y el servidor procesa el
requerimiento y contesta al cliente.
ArcView proporciona una plataforma específica con soporte para IAC en las siguientes plataformas:
Intercambio Dinámico de Datos(DDE) para Windows
Llamada a procedimientos remotos (RPC) para Unix
Eventos Apple y AppleScripts para Macintosh
Varias clases, tales como DDEClient, DDEServer, RPCClient y RPCServer,han sido implementadas para soportar estos
protocolos de plataformas específicas.
Servidor de aplicaciones a un cliente de ArcView
 Paquetes estadísticos
 Software de procesamiento de imágenes
 ARC/INFO GIS
Servidor
 Hoja de cálculo
Paquete
Estadístico
Procesamiento
Imágenes
Usuario
ArcView
Cliente
ARC/INFO
Hoja de
Cálculo
Servidor de aplicaciones a un cliente de ArcView
Puede utilizar el cliente de ArcView para conectarse a una aplicación de un servidor que entienda el protocolo IAC. ArcView
puede preguntar a un paquete estadístico para calcular sofisticadas estadísticas y devolver los resultados, o puede preguntar a
un software de procesamiento de imágenes para manipular una imagen que va a ser usada como tema en ArcView.
ARC/INFO puede ser usado para permitir operaciones GIS sofisticadas y generar nuevas fuentes de datos que pueden ser
utilizadas por ArcView.
ArcView puede pasar datos a una hoja de cálculo y tomar la ventaja de las funciones de manipulación de datos de una hoja de
cálculo, entonces pasar los datos y cargarlos en un tabla de ArcView.
Aplicaciones de un cliente a un servidor de ArcView
 Vehículo de rastreo
 Estaciones supervisoras
 Direcciones personalizadas
Cliente
Vehículo
de rastreo
Estaciones
Supervisoras
Direcciones
Personalizadas
Servidor
ArcView
Usuario
Aplicaciones de un cliente a un servidor de ArcView
Puede utilizar ArcView como un servidor a aplicaciones cliente. El cliente puede proporcionar a ArcView nuevas posiciones de
un vehículo moviéndose en una vista. El cliente también puede estar actualizando los valores de los atributos que afectan a la
simbología o clasificación de una entidad en una vista. Por ejemplo, una estación de tráfico supervisora recibe información
actualizada sobre la cantidad de trafico a cada hora. Esta información podría ser enviada a ArcView y ArcView cambiaría el
color de la entidad estación en la vista. O el cliente puede enviar a ArcView una dirección personalizada, y entonces ArcView
devolver las coordenadas x e y de la dirección.
Llamada a Procedimientos Remotos (RPC)
 Permite la comunicación entre clientes y servidores en plataformas UNIX
 Un servidor RPC se identifica por
El nombre de la máquina servidor
Número de identificación del servidor
Número de versión
 El cliente usa esta información para establecer una conexión RPC
 El servidor RPC proporciona una serie de funciones al cliente
 Cada función se identifica con un procedimiento ID
Llamada a Procedimientos Remotos (RPC)
RPC es un protocolo de comunicación para ejecutar aplicaciones en plataformas UNIX. RPC permite a un servidor
proporcionar una serie de funciones al cliente. El servidor y el cliente pueden se máquinas diferentes en una red.
El servidor es identificado únicamente por tres componentes: el nombre anfitrión de la máquina en la que reside, un número ID
del servidor, y un número de la versión del programa. El cliente usa esta información para establecer la conexión. Cada tipo de
función que proporciona un servidor es identificada por un número de identificación del procedimiento.
El comando de UNIX rpcinfo -p <nombre anfitrión> puede utilizarse para encontrar los posibles servidores en un anfitrión
específico.
Un cliente de ArcView con un servidor de ARC/INFO
 Funciones de un servidor ARC/INFO
1- ejecuta la cadena de comando
2- devuelve el estado del proceso especificado
 Establece el servidor ARC/INFO usando [ IACOPEN ]
Devuelve información a la consola o fichero
Arc: &set estatus := [ IACOPEN ] connect_files
Host : rhino Program no : 40000000 Version no: 1
 Establece el cliente ArcView
client = RPCClient.Make (“rhino”, 0x40000000,1)
 Crea una cadena de comando y la ejecuta en el servidor
theCommand = “intersect cov1 cov2 cov3”
jobID = client.Execute (1, theCommand, theString)
 Chequea si el proceso ha finalizado
jobStatus = client.Execute (2, jobID, String)
if (jobStatus.Extract (0) = “DONE”) then
MsgBox.Info (“ El proceso de ARC/INFO ha acabado...”,””)
end
Un cliente de ArcView con un servidor de ARC/INFO
Puede usar ARC/INFO como un servidor RPC para un cliente ArcView. Los dos procedimientos que soporta ARC/INFO son la
ejecución de la cadena de comando (procedimiento ID=1), y devolver el estado del proceso (procedimiento ID=2).
Crear el servidor y cliente
Primero cree el servidor ARC/INFO usando la función de AML [IACOPEN] que devuelve la información necesaria para el
cliente de ArcView: el nombre anfitrión de la máquina del servidor, el número ID del servidor y el número de la versión del
programa.
Opcionalmente, esta información puede ser capturada en un fichero. Establezca un cliente de ArcView usando la clase
RPCClient con el requerimiento Make y la información devuelta para estos parámetros. Cierre la conexión del cliente de
ArcView
con el requerimiento Close.
Ejecutar un comando
Cree una cadena de comando, entonces, use el requerimiento Execute para ejecutar el comando en el servidor. Los
parámetros del requerimiento de Execute son, un número de procedimiento, una cadena de comando y la clase devuelta.
Execute devuelve
un Nil, cadena, booleano o número. El procedimiento requerido debe devolver datos que puedan ser convertidos a una de
estas clases.
Chequear si el proceso se ha completado
En el siguiente ejemplo, ARC/INFO crea una nueva cobertura que usted quiere añadir como un tema de ArcView. Para
averiguar si ARC/INFO ha completado el proceso, use el requerimiento Execute con el procedimiento ID-2. Compruebe que se
devuelve la cadena DONE. Cuando el proceso se ha completado, puede añadir el nuevo tema.
Error de chequeo
El RPCClient tiene varios requerimientos de chequeo de errores, incluyendo GetErrorID, GetErrorMessage y HasError.
Un servidor de ArcView y un cliente de ARC/INFO
 Funciones de un servidor ArcView
1- ejecución de script
 Establece ArcView como servidor
RPCServer.Start (0x40000000,1)
 Establece ARC/INFO como cliente
Arc: &s x [IACREQUEST %server% 1 “av.run (aScript, “”) “ stat)
 Desconecta ArcView como servidor
 RPCServer.Stop
Un servidor de ArcView y un cliente de ARC/INFO
Puede utilizar ArcView como un servidor RPC para un cliente ARC/INFO. Inicie el servidor de ArcView con el requerimiento
Start en la clase RPCServer. Proporcione el servidor ID y el número de la versión como información de conexión. Sólo un
servidor
RPC puede existir para una aplicación en ArcView. Use RPCServer con el requerimiento Stop para detener el uso de ArcView
como un servidor.
Establezca el cliente ARC/INFO con la función de AML [IACCONNECT]. Ésta requiere información de conexión (la cual es
creada por [IACOPEN], y un estado de conexión. [IACREQUEST] ejecuta un script en el servidor y devuelve una cadena que
representa el
último objeto creado. El servidor RPC de ArcView soporta una función, identificada por el número 1.
Ejercicio B1: Comunicaión con ARC/INFO
Paso 1
Iniciar ArcView y abrir un proyecto
Paso 2
Examinar una muestra de scripts
Paso 3
Asociar la conexión y los scripts del servidor con los botones
Paso 4
Establecer el servidor ARC/INFO
Paso 5
Enviar comandos al servidor desde un cliente
Ejercicio B1: Comunicaión con ARC/INFO
En este ejercicio, usará los scripts de Avenue para conectarse con ARC/INFO. Aprenderá como establecer a ArcView como
cliente y a ARC/INFO como servidor.
Paso 1
Iniciar ArcView y abrir un proyecto
Si es necesario inicie ArcView.
Desde el menú File (Archivo), elija Open Project (Abrir Proyecto). Muévase al directorio exercice. Haga doble clic en
exb1.apr para abrir el proyecto para este ejercicio. Cuando se abra el proyecto, verá la vista Readlands con dos temas activos,
Flood Zone y Landuse.
Paso 2
Examinar una muestra de scripts
Hay dos scripts en el proyecto. El script ConnectToAlServer conecta ARC/INFO como servidor; el script AlServer usa el
servidor ARC/INFO para permitir la unión de las coberturas de polígonos Flood y Landuse. Los dos scripts se incluyen en la
muestra de scripts proporcionados por ArcView.
Para examinar estos scripts, vaya al menú Help (Ayuda) y haga clic en Help Topics (Ayuda de Temas) para abrir la ayuda
de ArcView. Haga clic en Find (Encontrar) y teclee el nombre de cada uno de los scripts de la muestra: ConnectToAIServer y
AIServer. Examine el código fuente para cada uno de esos scripts.
Paso 3
Asociar la conexión y los scripts del servidor con los botones
Los documentos scripts llamados ConnectToAIServer y AIServer han sido creados en su proyecto. Creará dos botones y
asignará estos scripts con el evento Clic del botón.
Abra la caja de diálogo de personalización y añada dos botones a la GUI de la vista. Añada los nuevos botones a la
derecha del botón Help (Ayuda).
Para el nuevo botón a la derecha, asígnele en la propiedad Icon el icono C y asóciele el script ConnectToAIServer con la
propiedad Click.
Para el nuevo botón a la izquierda, asígnele en la propiedad Icon el icono S y asóciele el script AIServer con la propiedad
Click.
Cierre la caja de diálogo de personalización.
Paso 4
Establecer el servidor ARC/INFO
Ahora iniciará ARC/INFO y usará una función del AML para dar el nombre anfitrión, el ID del servidor y el número de la versión.
Muévase a la ventana de UNIX, y con el prompt del UNIX teclee arc para iniciar ARC/INFO.
Promp de Unix :> arc
Use el directivo &type con la función [ IACOPEN ] para iniciar el servidor de ARC/INFO, y cree un fichero llamado
connect.iac que contenga la información de conexión: nombre anfitrión, número del programa y versión del programa.
Arc: &type [IACOPEN] connect.iac
Hsot: <su nombre> Program no : 40000000 Version no : 1
0
Si la segunda línea no es 0, se producirá un error; desconecte el servidor de ARC/INFO par teclear &Type [ IACCLOSE ].
Luego, editará el script AIServer y remplazará el nombre anfitrión (Rhino) con el suyo.
Con la ventana del proyecto activa, haga clic en el icono Scripts, entonces haga doble clic en el script AIServer para
abrirlo.
Muévase a la primera línea después de los comentarios y cambie “rhino” por su anfitrión.
Client = RPCClient.Make (“rhino”, 0x40000000,1)
Guarde los cambios y compile es script.
Paso 5
Enviar comandos al servidor desde un cliente
Ponga activa la vista Redlands.
Haga clic en el botón C para leer la conexión del fichero y establecer ARC/INFO como servidor. En la caja de diálogo de
conexión, elija su fichero de conexión , connect.iac
( busque en su directorio home).
Haga clic en el botón S para enviar a ARC/INFO el comando UNION para superponer los dos temas de polígonos activos.
Llame a la cobertura de salida luflood.
Haga clic en la caja de diálogo de sintaxis ARC/INFO. ArcView está ocupado hasta que ARC/INFO finaliza la unión de los dos
temas de polígonos.
El script AIServer encuentra las coberturas que fueron usadas para crear los temas landuse y flood. Si ejecuta el comando
UNION de ARC/INFO, el cual superpone las coberturas y crea una nueva cobertura, se creará un tema de salida llamado
luflood desde la nueva cobertura.
Fin
Cambio de Datos Dinámico (DDE)
 Permite el intercambio de datos entre dos aplicaciones de Windows
 El intercambio de datos se llama conversación
 Una conversación es únicamente identificada por el nombre de la aplicación y tema
 El tema describe el tipo de datos intercambiados
 Los datos han sido intercambiados son referidos como un item (campo).
Cambio de Datos Dinámico (DDE)
El Intercambio Dinámico de Datos (DDE) es un protocolo para transferir datos entre aplicaciones ejecutadas bajo Microsoft ®
Windows. La aplicación cliente inicia un requerimiento y la aplicación servidor responde. El cliente y el servidor son referidos a
la vez como destino y fuente.
Una conversación DDE
Las aplicaciones se intercambian información mediante una conversación. Cada conversación es únicamente definida por
dos partes de información: la aplicación del servidor y el tema. El nombre de la aplicación es usualmente el nombre del fichero
ejecutable, sin la extensión del fichero (ej. MSAccess para Microsoft Access ™). Los temas son categorías de datos que el
servidor entiende. Cada servidor soporta varios temas; la mayoría de los servidores soporta el tema del sistema. Consulte su
documentación de la aplicación para ver que temas soporta. Las partes de datos que se intercambian se llaman items
(campos).
Muestra de scripts DDE
Use la etiqueta Find (Encontrar) en la ayuda de ArcView para localizar y examinar estos scripts: DDECreateSpreadsheet y
GetDDESystemItems.
Un cliente de ArcView con un servidor de Excel
 Establece el cliente ArcView y el servidor Excel
exitClient = DDEClient.Make (“excel”, “system”)
 Inicia las siguientes transacciones
ejecuta - provoca que el servidor ejecute un comando
requiere- envía información desde el servidor al cliente
poke - envía información desde el cliente al servidor
 Crea una hoja de cálculo
ex1Client.Execute (“[ New (1,0,FALSE ]”)
 Recupera información desde la hoja de cálculo
selection = ex1Client.REquest (“selection”)
‘ analiza el nombre de la hoja de cálculo
spreadSheet = selection.Left (selection.IndexOf (“!”))
 Inicia una nueva conversación con el nuevo tema
asClient = DDEClient.Make (“excel”, spreadSheet)
 Envía un valor a Excel
asClient.Poke(“R1C1”, “234567”)
Un cliente de ArcView con un servidor de Excel
Establezca el cliente de ArcView y la conversación con la clase DDEClient y el requerimiento Make. Use la aplicación y el tema
para los parámetros de la nueva conversación. Para desconectar el cliente desde el servidor, use el requerimiento Close.
Transacciones
Use el DDEClient par iniciar una de las diversas transacciones. Execute hace que el servidor ejecute las cadenas de
comando recibidas desde el cliente. Request y Poke transfieren datos. Request devuelve un campo del servidor al cliente.
Poke envía un campo desde el cliente al servidor.
Chequeo de errores
El DDEClient tiene diversos requerimientos de chequeo de errores incluyendo GetErrorID, GetErrorMessage y HasError.
Puede usarlos para chequear si la conexión se hizo con éxito con el siguiente código:
exClient = DDEClient.Make ("Excel ", "System")
if (exlClient.HasError ) then
MsgBox.Error (exlClient.GetErrorMsg, "")
exit
end
El DDEServer de ArcView
 El servidor de ArcView se inicia cuando se abre la aplicación
 Soporta los temas del sistema
 Soporta los campos de cadena
 El servidor DDE de ArcView soporta las siguientes transacciones:
ejecuta - ArcView ejecuta las cadenas de comando desde el cliente
requiere - ArcView devuelve los resultados del script al cliente
poke- el cliente envía los datos para usar como entrada a un script
 El servidor de ArcView se detiene cuando la aplicación se cierra
El DDEServer de ArcView
Cuando se abre la aplicación en ArcView, el DDEServer de ArcView se inicia y llama a ArcView. Sólo hay un servidor de
ArcView iniciado para la aplicación. El proyecto de arranque
por defecto inicia el DDEServer y el proyecto por defecto de cierre para el
DDEServer. El servidor de ArcView soporta sólo el tema System y el campo String.
Transacciones
El cliente puede iniciar uno de las diversas transacciones standard: Execute, Request, Poke y Advise. Execute hace que
ArcView ejecute comandos recibidos en una cadena desde el cliente. Por ejemplo, Excel puede enviar un comando para
ejecutar un script (av.Run). Si el script calcula un valor del registro, Request podría devolver el valor a Excel. Poke transfiere
datos desde el cliente a ArcView. Por ejemplo, si el cliente es una aplicación que recoge las posiciones del GPS
(Global Positioning System), podría pasarlas a ArcView y actualizar la posición del vehículo en la pantalla.
Ejercicio B2: Comunicación con Excel
Paso 1
Iniciar Excel y ArcView y abrir el proyecto.
Paso 2
Crear una conexión con Excel y chequear los errores
Paso 3
Proporcionar una lista de campos desde Excel y seleccionar uno para consultar
Paso 4
Se necesita más información sobre el campo seleccionado
Ejercicio B2: Comunicación con Excel
En este ejercicio conectará con Excel y le enviará requerimientos para devolver una lista de campos. Entonces proporcionará
información sobre los campo seleccionado desde la lista.
Paso 1
Iniciar Excel y ArcView y abrir el proyecto.
Inicie Excel desde el Administrador de programas mediante doble clic en el icono de Excel.
Si es necesario, inicie ArcView.
Desde el menú File (Archivo ) elija Open Project (Abrir Proyecto). Muévase al directorio exercice, con doble clic en
exb2.apr para abrir el proyecto de este ejercicio.
Cuando el proyecto se abra, verá abierto el script con título Exercice EXB2, Step 2.
Paso 2
Crear una conexión con Excel y chequear los errores
Con este script creará una conexión con Excel. Antes de pasar información a Excel, querrá verificar que la conexión se
ha realizado correctamente.
Cree una variable llamada sysClient enviando el requerimiento Make a DDEClient, usando como dos parámetros las
cadenas Excel y System.
Inicie un estamento If Then, utilizando sysClient.HasError como valor booleano.
Informe del error enviando un requerimiento Error a MsgBox. Envíe el requerimiento GetErrorMsg a sysClient como
primer parámetro, y una cadena vacía como el segundo.
En este punto, salga del script y finalice el estamento If Them.
Paso 3
Proporcionar una lista de campos desde Excel y seleccionar uno para consultar
Una vez hecha la conexión a Excel, ArcView puede enviar un requerimiento y recibir información desde Excel sobre el
requerimiento.
Cree una variable llamada excelItems enviando el requerimiento Request a sysClient. Como parámetro envíe lacadena
SysItems.
ExcelItems es una cadena que contiene todos los campos que soporta Excel. Convertirá la cadena a una lista y la usará
para hacer una selección desde una caja de mensaje.
Cree una variable llamada selectItem enviando el requerimiento ListAsString a MsgBox. Como primer parámetro envíe
excelItems al convertidor AsList. Como segundo parámetro, envíe la cadena Select an Item to Query, y como tercer
parámetro, envíe la cadena Query Excel Items.
Testee para ver si algún campo está seleccionado. Sino, detenga la ejecución del script.
Utilice el estamento If con Item = nil como condición, Then
Si la condición es true, salga del programa y finalice el estamento If Them.
Paso 4
Se necesita más información sobre el campo seleccionado
Una vez seleccionado un campo, puede necesitar información adicional sobre él desde Excel.
Cree una variable llamada result enviando el requerimiento Request a sysClient. Use selectItem como parámetro.
Cree resulttrans enviando el requerimiento Translate a result, con una cadena vacía concatenada con un carácter TAB
como primer parámetro y dos concatenando NL (nueva línea) como segundo parámetro.
Visualice el resultado enviando el requerimiento Report a MsgBox. Como primer parámetro, envíe reslttrans, y como
segundo la variable selectItem.
Cierre la conexión enviando el requerimiento Close a sysClient.
Compile y ejecute el script. Elija un de los campos en la lista y lea la información sobre el campo seleccionado. Testee
el script unas dos veces como información adicional sobre los campos del sistema Excel.
Ahora compare su script con un script de muestra.
Haga clic en Find en la ayuda de ArcView y teclee el nombre de su script: GetDDESystemItems. Este script es similar al
que acaba de realizar usted.
Fin
Descargar