Solved! Go to Solution.
import arcpy class Toolbox(object): def __init__(self): """Define the toolbox (the name of the toolbox is the name of the .pyt file).""" self.label = "Set Values for Multiple Fields" self.alias = "SetValues" # List of tool classes associated with this toolbox self.tools = [SetValues] class SetValues(object): def __init__(self): """Define the tool (tool name is the name of the class).""" self.label = "Set Values" self.description = "Sets values for many fields to one value, for all selected features" self.canRunInBackground = False def getParameterInfo(self): """Define parameter definitions""" params = None param0 = arcpy.Parameter( displayName="Choose Layer", name="layer", datatype="GPLayer", parameterType="Required", direction="Input") param1 = arcpy.Parameter( displayName="Choose Fields", name="field_list", datatype="Field", parameterType="Required", direction="Input", multiValue=True) param1.parameterDependencies = [param0.name] param2 = arcpy.Parameter( displayName="Value to Set", name="set_value", datatype="GPLong", parameterType="Required", direction="Input") mxd = arcpy.mapping.MapDocument("CURRENT") layerlist = [] layerlist = arcpy.mapping.ListLayers(mxd) param0.filter.list = [] param0.filter.type = "ValueList" for layer in layerlist: param0.filter.list += [layer.name] params = [param0, param1, param2] return params def isLicensed(self): """Set whether tool is licensed to execute.""" return True def updateParameters(self, parameters): """Modify the values and properties of parameters before internal validation is performed. This method is called whenever a parameter has been changed.""" return def updateMessages(self, parameters): """Modify the messages created by internal validation for each tool parameter. This method is called after internal validation.""" return def execute(self, parameters, messages): """The source code of the tool.""" param0 = parameters[0].value param1 = parameters[1].value.exportToString() param2 = parameters[2].value #arcpy.AddError(param0) #arcpy.AddError(param1) #arcpy.AddError(param2) mymxd = arcpy.mapping.MapDocument("CURRENT") selectedlayer = arcpy.mapping.ListLayers(mymxd, param0)[0] workspace = "C:\Users\Public\Documents" # never used, just needed a folder that would always exist on any computer, and have write access. # Start an edit session. Must provide the worksapce. edit = arcpy.da.Editor(workspace) # Edit session is started without an undo/redo stack for versioned data # (for second argument, use False for unversioned data) edit.startEditing(True) # Start an edit operation edit.startOperation() #param1 = "test2;test3" param1list = param1.split(";") fieldnamelist = [] for fieldname in param1list: fieldnamelist += [fieldname] setvalue = param2 with arcpy.da.UpdateCursor(selectedlayer, fieldnamelist) as cursor: for row in cursor: for index in range(len(row)): row[index] = setvalue cursor.updateRow(row) row = None del cursor # Stop the edit operation. edit.stopOperation() # Stop the edit session and save the changes edit.stopEditing(True) return
class SetValues(object): def __init__(self): """Define the tool (tool name is the name of the class).""" self.label = "Set Values" self.description = "Sets the values for several fields to a set numeric value, for all features in the selection set" self.canRunInBackground = False def getParameterInfo(self): """Define parameter definitions""" params = None param0 = arcpy.Parameter( displayName="Choose Layer", name="layer", datatype="GPLayer", parameterType="Required", direction="Input") param1 = arcpy.Parameter( displayName="Choose Fields", name="field_list", datatype="GPString", parameterType="Required", direction="Input", multiValue=True) param1.parameterDependencies = [param0.name]
def updateParameters(self, parameters): return
del cursor
sample_file = 'C:\\New_Text_file.txt' with open(sample_file, 'w') as f: f.write('Sample Text') f
<closed file 'C:\\New_Text_file.txt', mode 'w' at 0x0000000004BAAC90>
import arcpy class Toolbox(object): def __init__(self): """Define the toolbox (the name of the toolbox is the name of the .pyt file).""" self.label = "Set Values for Multiple Fields" self.alias = "SetValues" # List of tool classes associated with this toolbox self.tools = [SetValues] class SetValues(object): def __init__(self): """Define the tool (tool name is the name of the class).""" self.label = "Set Values" self.description = "Sets values for many fields to one value, for all selected features" self.canRunInBackground = False def getParameterInfo(self): """Define parameter definitions""" params = None param0 = arcpy.Parameter( displayName="Choose Layer", name="layer", datatype="GPLayer", parameterType="Required", direction="Input") param1 = arcpy.Parameter( displayName="Choose Fields", name="field_list", datatype="Field", parameterType="Required", direction="Input", multiValue=True) param1.parameterDependencies = [param0.name] param2 = arcpy.Parameter( displayName="Value to Set", name="set_value", datatype="GPLong", parameterType="Required", direction="Input") mxd = arcpy.mapping.MapDocument("CURRENT") layerlist = [] layerlist = arcpy.mapping.ListLayers(mxd) param0.filter.list = [] param0.filter.type = "ValueList" for layer in layerlist: param0.filter.list += [layer.name] params = [param0, param1, param2] return params def isLicensed(self): """Set whether tool is licensed to execute.""" return True def updateParameters(self, parameters): """Modify the values and properties of parameters before internal validation is performed. This method is called whenever a parameter has been changed.""" return def updateMessages(self, parameters): """Modify the messages created by internal validation for each tool parameter. This method is called after internal validation.""" return def execute(self, parameters, messages): """The source code of the tool.""" param0 = parameters[0].value param1 = parameters[1].value.exportToString() param2 = parameters[2].value #arcpy.AddError(param0) #arcpy.AddError(param1) #arcpy.AddError(param2) mymxd = arcpy.mapping.MapDocument("CURRENT") selectedlayer = arcpy.mapping.ListLayers(mymxd, param0)[0] workspace = "C:\Users\Public\Documents" # never used, just needed a folder that would always exist on any computer, and have write access. # Start an edit session. Must provide the worksapce. edit = arcpy.da.Editor(workspace) # Edit session is started without an undo/redo stack for versioned data # (for second argument, use False for unversioned data) edit.startEditing(True) # Start an edit operation edit.startOperation() #param1 = "test2;test3" param1list = param1.split(";") fieldnamelist = [] for fieldname in param1list: fieldnamelist += [fieldname] setvalue = param2 with arcpy.da.UpdateCursor(selectedlayer, fieldnamelist) as cursor: for row in cursor: for index in range(len(row)): row[index] = setvalue cursor.updateRow(row) row = None del cursor # Stop the edit operation. edit.stopOperation() # Stop the edit session and save the changes edit.stopEditing(True) return