Sunday, 10 March 2019

arcgis desktop - Passing variable from ArcPy script to ModelBuilder?


I have a model that passes a variable to a python script. The script uses that variable to query some directories and return a list of paths. What I want to know is:




  • How can I then use each of those paths as the parameter in a subsequent operation?

  • Is the bridge between python and ModelBuilder a one-way street?



Answer



I assume that you've added the Python script to the model by first adding the Python script to the toolbox, setting the script input through the Parameters tab.


In the Parameters tab you can add new parameters for the script output. To do this simply change:



  • the Direction in the Parameter Properties to Output;

  • the Data Type depending on what the Python output will be (probably a string or integer, but maybe a feature class);

  • and then the Type in the Parameter Properties to Derived (though to be fair, Required and Optional will work depending on the data type, but I'll describe that below)



Then we can simply use arcpy.SetParameter to output from your Python script back to the model.


A couple of notes:



  • If you have the output parameter set to Required or Optional you can supply input to your script by providing default values, which you can get with arcpy.GetParameter or from sys.argv

  • The number of the parameter to set as output is dependent on the total number of parameters for your Python script (i.e. if you already have two input parameters before your output parameter then you need to use arcpy.SetParameter(2, value))


Also take a look at the arcpy Setting script tool parameters help.


No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...