4 votos

"ZoomToLayer" no funciona

Estoy intentando llamar a ZoomToLayer desde mi código personalizado (se muestra a continuación).

 ESRI.ArcGIS.esriSystem.UID pUID = new ESRI.ArcGIS.esriSystem.UID();
ICommandItem CmdItem;

//pUID.Value = "{18DF94D9-0F8A-11D2-94B1-080009EEBECB}";
pUID.Value = "esriArcMapUI.LayerContextMenuItems";
pUID.SubType = 7;

CmdItem = IApplication.Document.CommandBars.Find(pUID, true, false);

CmdItem.Execute();
 

Tras la investigación encontré que CommandItem.Action está lanzando COMException:

'CmdItem.Action' lanzó una excepción de tipo 'System.Runtime.InteropServices.COMException: este método no puede invocarse con comandos incorporados.

Estoy tratando de usarlo como un comando y no como una herramienta ... por lo tanto, no puedo entender la excepción.

¿Alguna idea de por qué está sucediendo?

2voto

mark Puntos 413

Si tiene la Capa de interés en su tabla de contenido, podría ir de esta manera y no tener que meterse con ContextMenuItems al intentar esto:

         ILayer layer = null;
        for (int a = 0; a < layercount; a++)
        {
            layer = focusmap.get_Layer(a);
            if (layer.Name.Contains("YOURLAYERNAMEHERE"))
            {

                break;
            }
        }
        ArcMap.Document.FocusMap.ActiveView.Extent = layer.AreaofInterest;
        ArcMap.Document.FocusMap.ActiveView.Refresh();
 

2voto

Isaac Solomon Puntos 16554

También debe establecer el IMxDocument.ContextItem en la capa a la que desea hacer zoom. Consulte el foro de ESRI: Re: Acercamiento en un Shapefile para resaltar áreas

1voto

FlySwat Puntos 61945

Ok, no he hecho VB.NET, pero estás llamando

CmdItem = IApplication.Document.CommandBars.Find (pUID, true, false);

en una definición de la interfaz de IApplication y no una instancia de coclass

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