I am using ArcMap 10.5, but help pages I am referring are the same as in 10.7.
I am trying to make a GP tool within Python toolbox with kind of selection input: user selects features in ArcMap interactively.
I was reading Using the interactive feature and record input controls and found that it's possible for GP tool to have such kind of parameter. Quote: "The interactive feature input control gives you two methods for inputting features to a tool—either by clicking on a map display or by providing an existing dataset."
OK, so I checked what parameter types I can create here: Defining parameter data types in a Python toolbox and it seems that Feature Set (GPFeatureRecordSetLayer) is what I am looking for as description says: "Interactive features that draw the features when the tool is run.".
Here is my magic tool, but I do not see any way to "enter features interactively":
class AttachTool(object):
def __init__(self):
"""Define the tool (tool name is the name of the class)."""
self.label = "Add attachments"
self.description = "Adds the same file as attachment to multiple selected features"
self.canRunInBackground = False
def isLicensed(self):
"""Set whether tool is licensed to execute."""
return True
def getParameterInfo(self):
"""Define parameter definitions"""
paramInputFeatures = arcpy.Parameter(
displayName="Input Features",
name="in_feature_set",
datatype="GPFeatureRecordSetLayer", # Interactive features that draw the features when the tool is run
parameterType="Required",
direction="Input",
multiValue = True)
paramInputFile = arcpy.Parameter(
displayName="File to attach",
name="in_file",
datatype="DEFile",
parameterType="Required",
direction="Input")
return [paramInputFeatures, paramInputFile]
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."""
arcpy.AddMessage('Just pretending to do something...')
return
Input field looks like this and I don't see how I should select features...
PS. Copy on GeoNet: https://community.esri.com/thread/243774-arcpyparameter-how-to-create-the-interactive-feature-input-control