Adios VBA, hola Add-Ins!

VBA ha sido el entorno de personalización en ArcGIS desde el lanzamiento de la versión 8.0 hace más de 10 años. Los usuarios de ArcGIS Desktop podíamos abrir rápidamente el editor de VBA incrustado dentro de ArcGIS y escribir código para automatizar tareas o incluso crear aplicaciones VBA incrustadas en los proyectos de ArcGIS.

Con el lanzamiento de ArcGIS 10.1, VBA se ha ido totalmente como veíamos en la entrada Novedades de ArcGIS 10.1 . Ya no hay un  SDK de ArcObjects de VBA ni se va a apoyar nuevo desarrollo con VBA en ArcGIS for Desktop.

VBA sólo estará disponible para que las soluciones existentes puedan ejecutarse mientras se migra el código a .NET. ESRI recomienda a todos los usuarios con código VBA que comiencen ya a migrar a una add-in o complemento personalizado utilizando el SDK de ArcObjects para .NET o Java.


¿Cuáles son las alternativas?

No vamos a discutir aquí las ventajas y desventajas de cada uno, puedes ver en la entrada lenguajes de programación para GIS un análisis de los distintos lenguajes. El propósito principal de este artículo es dar una idea de cómo crear un entorno de desarrollo similar a VBA en ArcGIS 10, que permita una fácil transición a la personalización sin VBA en ArcGIS con. NET. Las principales razones para ello son:

  • Podemos utilizar todo el conocimiento de VBA.
  • Podemos convertir fácilmente los scripts de VBA a VB.NET.
  • Hay un entorno de desarrollo gratuito (Visual Studio. NET express) que permite la depuración.
  • Podemos tener acceso completo al kit de desarrollo de ArcObjects.
  • ArcGIS 10 ofrece un marco de personalización nuevo – el modelo de add-in e está muy bien integrado con Visual Studio y simplifica el desarrollo y el modo de compartir las aplicaciones personalizadas.
  • Trabajaremos en un entorno de desarrollo dominante.

Creando un entorno de desarrollo en ArcGIS

  1. Descarga Microsoft Visual Studio 2010 Express.
  2. Instala el SDK de ArcGIS para Microsoft. NET Framework

Creación de un entorno de desarrollo

  1. Inicia Visual Basic Express
  2. Clic en Archivo > Nuevo proyecto
  3. En el cuadro de diálogo asegúrate de que el marco de destino se establece en. NET Framework 3.5

nuevo proyecto_addin

En las plantillas instaladas ve a ArcGIS > Desktop Add-Ins y selecciona ArcMap Add-in. Da un nombre al proyecto y acepta.

En la página de bienvenida del asistente ArcGIS Add-Ins pon un nombre y una descripción, en la página Add-In Types selecciona el botón, dale un nombre y rellena el resto de los campos. Por último haz clic en Finish.

mi primer botón

En el Explorador de soluciones, verás que se ha añadido un módulo de VB con el nombre del botón. Haz doble clic en él para abrir el código.

Vamos a añadir al procedimiento «OnClick()» un cuadro con un mensaje sencillo.

onclick

Ve a Archivo > Guardar todo, para guardar el trabajo.

Si se hace clic en el botón Iniciar depuración (o en Depurar> Iniciar depuración) Visual Basic iniciará ArcMap.

Para agregar el botón a ArcMap ve a Customize > Customize Mode y en el cuadro de diálogo ve a Commands, selecciona la categoría Add-in Controls, busca tu botón y arrástralo a cualquier barra de herramientas.

customize

Cierra el diálogo. Si haces clic en el botón de nuevo, deberías tener el código ejecutado.

msgbox hola mundo

Recursos de interés:

ArcGIS® software by Esri. ArcGIS® and ArcMap™ are the intellectual property of Esri. Copyright © Esri. All rights reserved. For more information about Esri® software, please visit www.esri.com.

Si te ha gustado esta entrada deja un comentario o compártela!

12 comentarios en «Adios VBA, hola Add-Ins!»

  1. Buenas tardes! Soy nuevo en Phyton! Cómo le puedo hacer para hacer una herramienta en Python que cambie permanentemente el orden de los campos de una Tabla o Capa (archivos con extensión dbf o shp), el nombre del archivo de salida debe ser “NUEVO_ORDEN.[dbf o shp]” conservando el formato del archivo de entrada, dicha herramienta recibirá como parámetros lo siguiente:

    1. Nombre de la Tabla o Capa
    2. Lista de campos de la Tabla o Capa, esta lista se autocompletara al momento de ingresar el primer parámetro
    3. Nuevo orden de los campos
    4. Dirección del archivo de salida

    Ojala puedan decirme cómo armar el código.

    Saludos.

    Manuel

    • Hola Manuel!

      La idea que planteas es muy interesante y quizás un poco compleja si te estás iniciando en este mundo de Python. Primeramente decirte que existen diversas opciones para llegar al resultado que persigues, y a la vez diferentes niveles de dificultad. Nuestro consejo: comenzar abordando pequeñas metas e ir completando y mejorando la herramienta.

      Dentro de las herramientas y trabajos que vas a necesitar desarrollar, piensa en crear una nueva capa o tabla a partir de la capa/tabla de partida, así como una nueva tabla, en la que añadir los campos en el orden requerido, para posteriormente unir esta tabla a través de un join a la capa/tabla creada. Para esto necesitarás, entre otras:

      – La herramienta Describe() para saber cual es el tipo de datos de entrada.
      – La herramienta FeatureClassToFeatureClass_conversion() o alguna similar para crear tu capa/tabla de salida a partir de la de entrada
      – La herramienta listFields() para listar los campos de la tabla de entrada
      – Utilizar el objeto cursor para trabajar con los campos: añadir, ordenar, etc
      – Dentro de las funciones asociadas al objeto cursor, necesitarás también el InsertCursor() para hacer el join
      – etc.

      Puedes comenzar preparando el script con el proceso principal, continuar convirtiendo ese script en una tool para introducir algún parámetro, y finalmente crear una herramienta a través del los AddIns de Pyhton, lo que te permitirá ya crear un formulario personalizado.

      Suerte con tu proyecto! no dejes de realizar nuestro curso de Arcpy para profundizar en sus posibilidades!

  2. Hola,

    Excelente ejemplo, estoy iniciando con ArcGIS y vb y me gustaría saber si tienes mas ejemplos como el anterior para principiantes.
    Muchas gracias y saludos

  3. Una pregunta.
    necesito detectar si hay algun registro seleccionado de una capa en especifico para activar o desactivar herramientas, sabes algun metodo para hacerlo con arcobjects?
    Gracias

  4. Hola Aurelio;

    Muchas gracias por tus publicaciones, tengo una consulta, tengo una aplicación en vb.net 2012 y quiero integrale un modulo gis que me permita adicionar layer o shapes y visualizar mis datos, es posible hacerlo, tienes una idea de que componentes puedo bajar, me piden que sea con arcgis. muchas gracias de antemano por tu respuesta.

    Saludos,

    Daniel

  5. Hola.
    Muy bueno el articulo.
    tengo una duda.
    Al crear un boton y montarlo en ArcMap, cuando utilizo publisher para generar un visualizador y leerlo en ArcReader como lo hago para llevar el boton creado?.

    saludos.

    Nota: Trabajo con ArcGIS 10.2

  6. Holas, interesante articulo, una pregunta, se pueden crear add-ins usando VisualStudio en su versión Express??

  7. Muy buen artículo, pero quisiera saber si existe la posibilidad de utilizar Visual Studio 2012 Express, ya que es la versión actual de este entorno de desarrollo, y no quisiera tener que instalar la version 2010.

Los comentarios están cerrados.