AnsweredAssumed Answered

arcpy.Parameter : how to create "The interactive feature input control"?

Question asked by rpankevicius on Nov 15, 2019
Latest reply on Nov 16, 2019 by rpankevicius

(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—Help | ArcGIS Desktop 

which show 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 check what parameter types I can create here:
Defining parameter data types in a Python toolbox—Help | ArcGIS Desktop 

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.".


So 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...
How the tool input looks like

Outcomes