I am struggling to get the ArcGIS ModelBuilder "While" Iterator to work as I would expect it. I have a hunch it's user error, but even reading the help hasn't seemed to get it working for me.
I have a simple model that calls a Python script that simple does a time.sleep(15)
and then sends back the conditional parameter of "TRUE" or "FALSE" using arcpy.SetParameterAsText(1, "FALSE")
or similar for True statements in an if/else statement. I've also tried every combination of TRUE, True, and true, as outputs from my Python script without success.
I can see in the results that my conditions are being set correctly:
Executing (While): IterateCondition FALSE TRUE
Start Time: Tue Nov 20 16:10:06 2012
Succeeded at Tue Nov 20 16:10:06 2012 (Elapsed Time: 0.00 seconds)
and
Executing (While): IterateCondition TRUE TRUE
Start Time: Tue Nov 20 16:26:41 2012
Succeeded at Tue Nov 20 16:26:41 2012 (Elapsed Time: 0.00 seconds)
but the WHILE Iterator continues to fire the sleep script, even if I change the output parameter of my script. Any ideas on why I cannot seem to get the sleep script to stop firing? What should I be passing from my SetParametersAsText() in order to get the While Iterator to stop firing the Sleep script?
Answer
The input of the While loop should be of boolean data type.
I recreated your model and script and called arcpy.SetParameterAsText(1, "FALSE")
in the script. For the script output, I used a boolean. ModelBuilder automatically converts the output string "FALSE" to boolean false. The boolean false can be evaluated by the While loop.
No comments:
Post a Comment