Estoy tratando de cambiar la escala de un mapa, en una mxd FUERA de ArcMap en una aplicación independiente de Windows. El problema es la escala que nunca persiste - el mejor código que he llegado es la siguiente:
private void UpdateMapScaleInMxd(double scale, string mxdFullPath)
{
IMapDocument mapDocument = new MapDocumentClass();
mapDocument.Open(mxdFullPath, "");
IPageLayout pageLayout = (IPageLayout)mapDocument.ActiveView;
IGraphicsContainer graphicsContainer = (IGraphicsContainer)pageLayout;
graphicsContainer.Reset();
IMapFrame mapFrame;
IActiveView tmpActiveView = null;
IElement element = graphicsContainer.Next();
while (element != null)
{
if (element is IMapFrame)
{
mapFrame = (IMapFrame)element;
tmpActiveView = (IActiveView)mapFrame.Map;
mapFrame.ExtentType = esriExtentTypeEnum.esriExtentScale;
mapFrame.MapScale = scale;
tmpActiveView.Refresh();
}
element = graphicsContainer.Next();
}
mapDocument.Save(false, false);
mapDocument.Close();
}
Puedo comprobar el mxd con la apertura en ArcMap y, a la escala del mapa ha cambiado yo.e el marco de datos que ahora tiene una escala fija y la escala combobox es de color gris.
Así que ahora trato de exportar el mapa como un archivo PDF en el código - y lo más frustrante es - exporta el mapa en la escala anterior que se puso en la escala acabo de cambiar a! Tan exasperante - si alguien me puede ayudar a entender dónde estoy yendo mal que sería genial.
ACTUALIZACIÓN:
En el código de arriba, yo estoy usando el IMapDocument - y creo que hay limitaciones (de acuerdo a la ayuda):
La interfaz proporciona IMapDocument propiedades y métodos para la lectura de mapa los archivos de documento (*.mxd, *mxt, .pmf) y escribir y guardar los cambios en el mapa los archivos de documento (.mxd). Sin embargo, ya que no está ligada a la de ArcMap aplicaciones específicas de la aplicación funcionalidad en el MapDocument se no se conservan. Ejemplos de específica de la aplicación con la funcionalidad la configuración de la barra, las personalizaciones de la interfaz de usuario, Los proyectos de VBA, y ArcMap gráficos. Para escritorio desarrolladores que necesitan utilizar esta funcionalidad, el MxDocument interfaz, ubicada en la ArcMapUI la biblioteca es una mejor opción.
Ahora estoy pensando que el cambio de la escala del mapa puede no ser persistentes utilizando correctamente el IMapDocument de la interfaz.