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.
-
What is causing problems? Add-in or "Zoom to selected"?MathiasWestin– MathiasWestin2010年10月05日 14:50:36 +00:00Commented Oct 5, 2010 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: gis.stackexchange.com/questions/1711/…mwolfe02– mwolfe022010年10月05日 15:00:48 +00:00Commented Oct 5, 2010 at 15:00
3 Answers 3
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://resources.esri.com/help/9.3/arcgisdesktop/com/shared/desktop/reference/ArcMapIds.htm
-
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– mwolfe022010年10月05日 18:55:47 +00:00Commented Oct 5, 2010 at 18:55
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.
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();
}