Inconsistent Behaviour of Setback Operation

01-14-2017 12:25 PM
New Contributor


I am perplexed as to why the Setback operation behaves differently in these two instances.  Can anyone shed any light?  My desired result is the one on the left.

Here's the rule that I am applying to the initial shape:


   setback(2) {0:Yard | remainder:Building}

Yard -->


Building -->


Please help.
Thanks! Geoff. 

Tags (1)
0 Kudos
5 Replies
Occasional Contributor III

I think it is to do with the angle between the edge you are setting back and the adjacent sloping edge.

i.e.  if the angle is closer to being a straight edge than a right angle you get the behaviour on the right-hand building, but if it's closer to being a right angle it behaves like the left-hand building.

0 Kudos
Esri Regular Contributor

Yes, Ben is correct.  The shape you get depends on the angle between the two edges.  I have a feeling that it happens when the angle between the two edges is > 135 deg.  Maybe this is a bug.  Thanks for posting.

If you want the behavior on the left, you might be able to achieve that with a split, but that depends on what kind of lot shapes you want this to work on.

0 Kudos
Occasional Contributor III

I see, at first I thought it might have to do with Edge indexing, but a small difference in angle seems hard to perceive just from the image. My first comment was unhelpful. For a rule to generalize, I guess you could use geometry.edges/is rectangular to determine if you should use setback vs. a well oriented split. It does seem very strange. 

Does the behavior change if you use a different selector rather than the default? 

David Wasserman, AICP
0 Kudos
Occasional Contributor III

I don't think it's a bug - this is the behaviour I expect.

As you suggest, split looks like the correct tool for this job.

0 Kudos
New Contributor

Thanks everyone for your help.  I have used the split function in conjunction with the alignScopetoGeometry to achieve what I wanted.

//--- Corner Lot (Right) ---//

frontYardcr -->
alignScopeToGeometry(yUp, largest, 0)
split(z) {~1: rearYardcr | frontSetback: colorGreen}

rearYardcr -->
alignScopeToGeometry(yUp, largest, 2)
split(z) { ~1: sideYard1cr | rearSetback: colorGreen}

sideYard1cr -->
alignScopeToGeometry(yUp, largest, 3)
split(z) { ~1: sideYard2cr | flankageSetback: colorGreen}

sideYard2cr -->
alignScopeToGeometry(yUp, largest, 1)
split(z) { ~1: buildableArea | interiorSetback: colorGreen}

0 Kudos