6 votos

Primer intento usando ArcObjects: ESRI ' ejemplo s complementos claro

Me he dado cuenta de que la secuencia de comandos de ArcGIS 10.0 con Python impone demasiadas limitaciones para mis objetivos con ArcGIS, así que me he decidido a morder la bala y profundizar en ArcObjects.

Al parecer, el uso de ArcObjects en ArcGIS 10.0 se ha vuelto un poco más fácil porque no es un nuevo marco que evita tener que lidiar con los objetos COM. Esto parece bueno, pero también significa menos ejemplos para aquellos que se están iniciando en 10.0

La única detallada de ESRI ejemplo de principio con ArcObjects es un tutorial de cómo crear un complemento. Las instrucciones para obtener un poco vago en el paso 2a) y 3 de la sección Adición de ZoomToLayer funcionalidad al botón personalizado:

< 2 > Para implementar ZoomToLayer la funcionalidad en el botón, el uso de ArcGIS Fragmento Buscador de la herramienta.

  • una. Haga clic con el Visual Studio ventana del editor de código en el deseado punto de inserción.
  • b, c, d

< 3 > Invocar el ZoomToLayer método a OnClick() método de aplicación.

Esto es lo que mi ZoomToLayerButton.cs archivo se ve como antes el paso 2:

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace CustomUIElements
{
    public class ZoomToLayerButton : ESRI.ArcGIS.Desktop.AddIns.Button
    {
        public ZoomToLayerButton()
        {

        }


        protected override void OnClick()
        {
            ArcMap.Application.CurrentTool = null;
        }
        protected override void OnUpdate()
        {
            Enabled = ArcMap.Application != null;
        }
    }

}

y aquí está el fragmento de la agarré de:

 #region"Zoom to Active Layer in TOC"
        // ArcGIS Snippet Title:
        // Zoom to Active Layer in TOC
        // 
        // Long Description:
        // Zooms to the selected layer in the Table of Contents (TOC) associated with the active view.
        // 
        // Add the following references to the project:
        // ESRI.ArcGIS.ArcMapUI
        // ESRI.ArcGIS.Carto
        // ESRI.ArcGIS.Geometry
        // 
        // Intended ArcGIS Products for this snippet:
        // ArcGIS Desktop (ArcEditor, ArcInfo, ArcView)
        // 
        // Applicable ArcGIS Product Versions:
        // 9.2
        // 9.3
        // 9.3.1
        // 10.0
        // 
        // Required ArcGIS Extensions:
        // (NONE)
        // 
        // Notes:
        // This snippet is intended to be inserted at the base level of a Class.
        // It is not intended to be nested within an existing Method.
        // 

        ///<summary>Zooms to the selected layer in the TOC associated with the active view.</summary>
        /// 
        ///<param name="mxDocument">An IMxDocument interface</param>
        ///  
        ///<remarks></remarks>
        public void ZoomToActiveLayerInTOC(ESRI.ArcGIS.ArcMapUI.IMxDocument mxDocument)
        {
            if (mxDocument == null)
            {
                return;
            }
            ESRI.ArcGIS.Carto.IActiveView activeView = mxDocument.ActiveView;

            // Get the TOC
            ESRI.ArcGIS.ArcMapUI.IContentsView IContentsView = mxDocument.CurrentContentsView;

            // Get the selected layer
            System.Object selectedItem = IContentsView.SelectedItem;
            if (!(selectedItem is ESRI.ArcGIS.Carto.ILayer))
            {
                return;
            }
            ESRI.ArcGIS.Carto.ILayer layer = selectedItem as ESRI.ArcGIS.Carto.ILayer;


            // Zoom to the extent of the layer and refresh the map
            activeView.Extent = layer.AreaOfInterest;
            activeView.Refresh();
        }
        #endregion

Con respecto a el paso 2.a)"a la Derecha-haga clic en Visual Studio ventana del editor de código en el punto de inserción deseado" donde debo insertar el fragmento de código? La lectura de los comentarios en el fragmento de código, supongo que debe ir después de la primer método:

public ZoomToLayerButton()
{

}


//here??

protected override void OnClick()
{
    ArcMap.Application.CurrentTool = null;
}

También, los comentarios en el fragmento también dicen que debo:

// Add the following references to the project:
// ESRI.ArcGIS.ArcMapUI
// ESRI.ArcGIS.Carto
// ESRI.ArcGIS.Geometry 

¿Dónde puedo agregar estos? En la parte superior de la ZoomTo LayerButton.cs archivo o mi Config.El diseñador.cs archivo? (Lo he probado ambos de estos lugares y me sale el mismo error: "Carto' no existe en el espacio de nombres de ESRI.ArcGIS)

Con respecto a el paso 3, "Invocar el ZoomToLayer método a OnClick() método de aplicación." Supongo que el código que se muestra más adelante, después de las instrucciones es lo que invoca el método:

protected override void OnClick()
{
    ZoomToActiveLayerInTOC(ArcMap.Application.Document as IMxDocument);
}

Supongo que esto también significa que debo de borrar la línea que estaba ahí antes?

ArcMap.Application.CurrentTool = null;

Todavía no he ido al siguiente paso del tutorial - Instalar el custom botón de la herramienta y - ya que no tengo todo el código hasta el momento de construir. Yo sabía que estaba en una empinada curva de aprendizaje, con ArcObjects, y esta introducción ejemplo sin duda confirma esto! Esperamos que con estas aclaraciones, voy a tener mi primera ArcObjects código que se ejecuta lo suficientemente pronto.

7voto

auramo Puntos 161

Algunas aclaraciones:

  • Usted todavía está utilizando objetos COM, el modelo de objetos en el que ArcObjects está construido. El agregar-en el marco meramente simplifica el registro de su objeto COM extensiones en categorías de componentes y la racionalización de el proceso de instalación/desinstalación.

    Hay un par de cosas que usted no puede hacer con los complementos que usted puede sólo con la tradicional COM extensiones de objeto, pero normalmente los complementos será suficiente para la mayoría de personalización de escritorio tipo de proyectos.

  • Las referencias se establecen en cada proyecto en Visual Studio. Actualmente añadido las referencias se enumeran en la sección "Referencias" de la carpeta en el explorador de soluciones. Haga clic en Referencias y haga clic en Agregar y, a continuación, en la .Ficha de NET (no en la ficha COM), agregar los ensamblados necesarios.

Aparte de que esto se parece a lo que estás haciendo, aunque quiera leer sobre la programación orientada a objetos fundamentos como clases, interfaces, la aplicación y la herencia, interfaz gráfica de usuario y diseño de interfaz de usuario, la separación de las preocupaciones, etc.

Además, usted querrá empezar a aprender tanto como usted puede sobre la práctica fundamentos: el .NET Framework, Visual Studio IDE, genéricos, y la sintaxis del lenguaje (véase el C# especificación).

Tal vez en un nivel más avanzado, usted haría bien en aprender los entresijos de la COM (especialmente cálculo de referencias y de conteo de referencia), la serialización, roscado, P/Invoke y la API de Windows (para hackear cosas que ArcObjects o el marco de complementos de no proporcionar).

Por supuesto, si usted tiene preguntas acerca de la mayoría de que usted desee ver en stackoverflow.com en lugar de los sig.se!

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X