Hi everyone,
I have 14 mxd's with scale 50000 and one mxd with scale 25000. with this code i try to add a new layer, extent to this layer then set a new scale 500000- just to mxd's with scale 50000 . i doesn't want to change the 25000 scale mxd, but i do want just to add him the new layer - and it doesn't work.
i don't know what wrong with this code- i think i didn't place the "if" statement in the right place:
import arcpy,os,sys from arcpy import env
env.workspace = r"C:\Project"
lyr1 = arcpy.mapping.Layer(r"D:\PROJECTS\industryArad\gis\layers\4_11_15\GVUL TOHNIT.dwg Polyline.lyr")
for mxdname in arcpy.ListFiles("*.mxd"):
print mxdname
mxd = arcpy.mapping.MapDocument(r"C:\Project\\" + mxdname)
df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
if df.scale == 25000:
continue
arcpy.mapping.AddLayer(df, lyr1, "TOP") # TOP \ BOTTOM \ AUTO_ARRANGE
print 'AddLayer'
lyr = arcpy.mapping.ListLayers(mxd, "GVUL TOHNIT.dwg Polyline", df)[0]
ext = lyr.getExtent()
df.extent = ext
print 'getExtent'
df.scale = 500000
print df.scale
for lyr in arcpy.mapping.ListLayers(mxd, "bbb",df):
arcpy.mapping.RemoveLayer(df, lyr)
print 'remove'
mxd.save()
del mxd
Solved! Go to Solution.
the logic is
if the scale is 25000
then do something that only applies to layers of that scale
else: (if it is not 25000)
do something else that only applies to layers not of 25000 scale
carry on doing stuff that applies to both situations.
the logic is
if the scale is 25000
then do something that only applies to layers of that scale
else: (if it is not 25000)
do something else that only applies to layers not of 25000 scale
carry on doing stuff that applies to both situations.
great it works !!! thanks Dan
for mxdname in arcpy.ListFiles("*.mxd"):
print mxdname
mxd = arcpy.mapping.MapDocument(r"C:\Project\\" + mxdname)
df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
if df.scale == 25000:
arcpy.mapping.AddLayer(df, lyr1, "TOP") # TOP \ BOTTOM \ AUTO_ARRANGE
print 'AddLayer to ' ,mxdname
else:
arcpy.mapping.AddLayer(df, lyr1, "TOP") # TOP \ BOTTOM \ AUTO_ARRANGE
print 'AddLayer to ' ,mxdname
lyr = arcpy.mapping.ListLayers(mxd, "GVUL TOHNIT.dwg Polyline", df)[0]
ext = lyr.getExtent()
df.extent = ext
print 'getExtent'
df.scale = 100000
print df.scale
for lyr in arcpy.mapping.ListLayers(mxd, "bbb",df):
arcpy.mapping.RemoveLayer(df, lyr)
print 'remove'