import arcpy from arcpy import env import pythonaddins class ButtonClass1(object): """Implementation for add_Layers_addin.button (Button)""" def __init__(self): self.enabled = True self.checked = False def onClick(self): #set the map document reference mxd = arcpy.mapping.MapDocument("CURRENT") #set the dataframe reference using the map document and the first data frame in the list df = arcpy.mapping.ListDataFrames(mxd)[0] #set the layer reference using the map document reference and the first layer in the list of layers layer1 = arcpy.mapping.ListLayers(mxd)[0] symbologyLayer = r'G:\Texas\Potter-Randall\Database\Ownership.lyr' #create a search cursor to get relevant information about a parcel sc = arcpy.SearchCursor(layer1) #for loop to get the selected data for row in sc: #select the relevant fields to be put on the map ap = row.getValue("MAP_NUMBER") addLayer = arcpy.mapping.Layer(r'G:\Texas\Potter-Randall\Database' + '\\' + str(ap) + '\\' + str(ap) + ".gdb" + '\\' + str(ap)) arcpy.ApplySymbologyFromLayer_management (addLayer, symbologyLayer) arcpy.mapping.AddLayer(df, addLayer, "TOP") #zoom to selected features df.zoomToSelectedFeatures() #refresh the active view arcpy.RefreshActiveView() #delete map, layer and dataframe variables del mxd del layer del df del ap del sc del row
Solved! Go to Solution.
Within your loop on layer1, are the items you are adding the same as what is already in the CURRENT mxd?
def __init__(self):
self.enabled = True
self.checked = False
def onClick(self):
#set the map document reference
mxd = arcpy.mapping.MapDocument("CURRENT")
#set the dataframe reference using the map document and the first data frame in the list
df = arcpy.mapping.ListDataFrames(mxd)[0]
#set the layer reference using the map document reference and the first layer in the list of layers
layer1 = arcpy.mapping.ListLayers(mxd, "AP_Map_Numbers", df)[0]
symbologyLayer = r'G:\Texas\Potter-Randall\Database\Ownership.lyr'
#create a search cursor to get relevant information about a parcel
sc = arcpy.SearchCursor(layer1)
#for loop to get the selected data
for row in sc:
#select the relevant fields to be put on the map
ap = row.getValue("MAP_NUMBER")
addLayer = arcpy.mapping.Layer(r'G:\Texas\Potter-Randall\Database' + '\\' + str(ap) + '\\' + str(ap) + ".gdb" + '\\' + str(ap))
arcpy.ApplySymbologyFromLayer_management (addLayer, symbologyLayer)
#arcpy.mapping.AddLayer(df, addLayer, "TOP")
#zoom to selected features
df.zoomToSelectedFeatures()
#refresh the active view
arcpy.RefreshActiveView()
#delete map, layer and dataframe variables
del mxd
del layer
del df
del ap
del sc
del row