2 models for height setbacks: "if" vs solid subtraction

I have been testing various urban design related definitions that have height setbacks.

If Statements.
The first example, unfinished, attempts to use if “x (a,b)” expressions, which is working fine but becomes tedious when I have to then move the setback profiles upward. Any ideas for how to make this less weighty, rather than copying the same expression twice?

From the if example, I realized that I may as well model the whole building with the setbacks and then just subtract a solid from the maximum envelope to get the resultant form rather than to keep setting up the if’s that would do it as certain height conditions were met.
This one uses indexes to select points but what I am trying to do is something like “select index x, then x+1”, but I have to keep copying the parts of the definition over. Is there an easier way to do this?

Thanks for your time!

Circular Array Circus.3dm (2.7 MB)
Circus 2-if.gh (23.5 KB)
Circus 3-solid subtract.gh (45.5 KB)

Yes there is defenitly an easier way :slight_smile: You should have a look at tree Management. May have a look at this:

The blue Group in the bottom replaces your copy and paste purple Group from above :slight_smile:

Circus 3-solid subtract_re.gh (47.6 KB)

Hey thanks Tim!
I will read up on tree management tonight… always something new to learn with Grasshopper!

Looking into this tonight Tim and this tree stuff is breaking my mind but so useful. Below is where i am at recreating your definition (this is the bit that interests me most), and I have stalled.
As you can see, its working great until I get to the part where i have to select a particular group from the tree when there is the crossover on the first. I’ve played with reversing but haven’t fixed it yet.
If they have the same indexes, how do I select particular parts of the tree?