Here's an example of using ArcObjects in Python to get at this information. I leave modifying the values and saving the MXD as an exercise to the reader:
import arcpy
from ESRICOMHelpers import *
esriSystem = GetESRIModule("esriSystem")
esriCarto = GetESRIModule("esriCarto")
def enumerate_feature_layers(map):
uid = NewObj(esriSystem.UID, esriSystem.IUID)
uid.value = "{E156D7E5-22AF-11D3-9F99-00C04F6BC78E}" # IGeoFeatureLayer
enumLayer = map.Layers(uid, True)
enumLayer.Reset()
layer = enumLayer.Next()
while layer:
yield layer
layer = enumLayer.Next()
def enumerate_label_classes(layer):
labelClasses = CType(layer, esriCarto.IGeoFeatureLayer).AnnotationProperties
for i in range(labelClasses.Count):
labelClass, labelClassId = CType(labelClasses, esriCarto.IAnnotateLayerPropertiesCollection2).QueryItem(i)
yield labelClass
def open_map_document(path):
mxd = NewObj(esriCarto.MapDocument, esriCarto.IMapDocument)
mxd.Open(path)
return mxd
def print_label_classes(mxd_path):
mxd = open_map_document(mxd_path)
map = mxd.Map[0]
layers = enumerate_feature_layers(map)
for layer in layers:
print layer.Name
for labelClass in enumerate_label_classes(layer):
print "\tname: {0}, minScale: {1}, maxScale: {2}".format(labelClass.Class, labelClass.AnnotationMinimumScale, labelClass.AnnotationMaximumScale)
mxd.Close()
if __name__ == '__main__':
mxd_path = r"path\to\map.mxd"
print_label_classes(mxd_path)
Get comtypes
here.
The ESRICOMHelpers
module is here.
Also note that for 10.1 and up you need to fix automation.py
in the comtypes
site package.