2

Seems like this should be dead simple. I'm writing an add-in for ArcMap 10 in VB.Net. I need code that will reproduce the 'Selection --> Zoom To Selected Feature' menu option.

mwolfe02
  • 387
  • 1
  • 5
  • 11
  • What is causing problems? Add-in or "Zoom to selected"? – MathiasWestin Oct 05 '10 at 14:50
  • Implementing "Zoom To Selected" inside the Add-in. The Add-in itself is working fine, other than the Zoom To Selected feature. I assumed there would be some VB.Net equivalent to the python code here: http://gis.stackexchange.com/questions/1711/is-it-possible-to-use-arcpy-in-arcgis-10-to-zoom-to-a-selected-feature/1715#1715 – mwolfe02 Oct 05 '10 at 15:00

3 Answers3

2

You can call the built-in command for "Zoom to Selected Features" using the CLSID or ProgID.

{AB073B49-DE5E-11D1-AA80-00C04FA37860} esriArcMapUI.ZoomToSelectedCommand

http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#/ArcMap_commands/00010000029s000000/

http://resources.esri.com/help/9.3/arcgisdesktop/com/shared/desktop/reference/ArcMapIds.htm

mcooper
  • 404
  • 2
  • 3
  • Awesome. Exactly what I was looking for. I've been wasting my time trying to implement this manually in the code using envelopes, etc. but I really didn't need that level of granular control. I knew there had to be a straightforward way to simply use the existing toolbar commands. Thanks again! – mwolfe02 Oct 05 '10 at 18:55
1

I had problems implementing the above solutions - the syntax hadn't been updated. This is my solution.

    Dim pUID As New UID
    'set the puid by using the clsid
    'pUID.Value = "{AB073B49-DE5E-11D1-AA80-00C04FA37860}"
    'Put subtype here if there is one.  There isn't in this case so you don't need it.
    'pUID.SubType = 0
    'Used the  ProgID instead.  Easier for someone else to read the code.
    pUID.Value = "esriArcMapUI.ZoomToSelectedCommand"
    My.ArcMap.Application.Document.CommandBars.Find(pUID).Execute()

This was written for an add-in using ArcGIS 10sp2 and Visual Studio 2008.

0
       public void ZoomToSelectedFeatures()
    {
        ESRI.ArcGIS.Carto.IActiveView pActiveView;
        ESRI.ArcGIS.Carto.IMap pMap;
        ESRI.ArcGIS.Geodatabase.IEnumFeature pEnumFeature;
        ESRI.ArcGIS.Geodatabase.IFeature pFeature;

        pMap = (IMap)m_hookHelper.FocusMap;
        pEnumFeature = (IEnumFeature)pMap.FeatureSelection;
        pFeature = pEnumFeature.Next();

        ESRI.ArcGIS.Geometry.IEnvelope pEnvelope;
        pEnvelope = new EnvelopeClass();

        while (pFeature != null)
        {
            pEnvelope.Union(pFeature.Shape.Envelope);
            pFeature = pEnumFeature.Next();
        }

        pEnvelope.Expand(1.2, 1.2, true);
        pActiveView = m_hookHelper.ActiveView;
        pActiveView.Extent = pEnvelope;
        pActiveView.Refresh();
    }
geogeek
  • 4,566
  • 5
  • 35
  • 79