ArcGIS 10.3.x Python tool script - Error for required parameters when disabled

1904
2
06-28-2016 08:50 AM
FrancescoTonini2
Occasional Contributor II

In the python script tool I am programming (see code below), I am using a simple boolean checkbox to enable/disable certain parameters in the script GUI. However, even though the parameters get disabled correctly (greyed out, see screen capture), when I add points to my featureSet parameter interactively and click on OK to run, I receive error 000735 that the parameters I disabled are "required", impeding the run.

Is there any workaround to having to set inTable, X_field, and Y_field as "Optional"? In other words, can those 3 appear as Required and be correctly disabled without impeding script execution?

Code:

# Import all necessary module dependencies
import arcpy

import os

import sys

arcpy.env.overwriteOutput = True
arcpy.env.outputCoordinateSystem = arcpy.SpatialReference(3857)

def DrawSystems():

   # Local variable:
   out_layer = "Systems_lyr"

   # Get the value of the input parameter
   isChecked = arcpy.GetParameter(0)

  inTable = arcpy.GetParameterAsText(1)

  X_field = arcpy.GetParameterAsText(2)

  Y_field = arcpy.GetParameterAsText(3)

  inFeatureSet = arcpy.GetParameterAsText(4)

  arcpy.SetProgressorLabel('Creating System Components ...')

  arcpy.AddMessage('Creating System Components ...')

   if isChecked == False:

       if inTable or inTable != "#":

           try:

              # Process: Make XY Event Layer (temporary)
              arcpy.MakeXYEventLayer_management(table=inTable,
                                                                                 in_x_field=X_field, in_y_field=Y_field,
                                                                                out_layer=out_layer)

           except Exception:

               e = sys.exc_info()[1]

               arcpy.AddError('An error occurred: {}'.format(e.args[0]))

 

else:

       if inFeatureSet or inFeatureSet != "#":

           try:

               # Process: Make Feature Layer (temporary)
               arcpy.MakeFeatureLayer_management(in_features=inFeatureSet, out_layer=out_layer)

           except Exception:

              e = sys.exc_info()[1]

             arcpy.AddError('An error occurred: {}'.format(e.args[0]))  # Process: Create Feature Class from Feature Layer

          #### Create Feature Class & Add Coordinates ####
          try:

              # Process: Copy Feature Class
              outSystems_fc = os.path.join(arcpy.env.scratchGDB, "Systems")

              outFC = arcpy.CopyFeatures_management(out_layer, outSystems_fc)

              arcpy.SetProgressorLabel('Adding XY Coordinates ...')

              arcpy.AddMessage('Adding XY Coordinates ...')

              # Process: Add Coordinates
              arcpy.AddXY_management(outFC)

          except:

              arcpy.AddIDMessage("ERROR", 930)

  #### Set Parameters ####

arcpy.SetParameter(5, outFC)

if __name__ == '__main__':

  DrawSystems()

0 Kudos
2 Replies
WesMiller
Regular Contributor III

You could try to use a python tool box and   if isChecked == False: then parameterType = "Optional"

Customizing tool behavior in a Python toolbox—Help | ArcGIS for Desktop

0 Kudos
FrancescoTonini2
Occasional Contributor II

Wes, I thought that parameterType is a read-only property...so that would not work if that is the case.

0 Kudos