How would I go about tagging inner versus outer edges on a O shape in particular. I am wanting to extrude a Shape O and comp(f) on the top and then applying a front, rear, left, right side setback (for upper storeys) however the shape is applying these setbacks from the inside too when I just want it to apply from the outer edges.
Hi @jabrett
The setback operation, as well as the shapeL/shapeU/shapeO operations, automatically tag the resulting edges. These can be used as basis to differentiate the inner/outer edges.
Example:
BuildableArea-->
shapeU(10,10,10) { shape: PodiumFootprint | remainder: Yard }
PodiumFootprint -->
// this comes from shapeU and each edge is tagged "setback.front", "setback.side" or "setback.back"
// we can use these tags to differentiate the 'left' on the front from the back:
setback(2) { left && isTagged("setback.front"): UpperPodiumFootprint
| remainder: TerraceFootprint }
It might be better and more explicit to manage your own tags. In this case we would start by tagging the original edges. The setback will automatically copy these tags to the respective new setbacked edges (which is useful when we want to continue on the remainder). In your use case, this is not needed (as we continue on the setback faces and want to distinguish the new/original edges). we can fix that using modify to remove those copied tags from the new edges. We can then use the tag to select the correct edges for the subsequent setback operation.
Footprint -->
tag("OriginalEdge", edges)
shapeU(10,10,10) { shape: PodiumFootprint | remainder: Yard }
PodiumFootprint -->
// the "OriginalEdge" tag stays on all original edges + it is copied automatically to the setbacked edges.
// In this case we dont want thme on the new edges. We can remove them using modify
modify(e) { isTagged("setback.back"): deleteTags("OriginalEdge") X. }
setback(2) { left && isTagged("OriginalEdge"): UpperPodiumFootprint
| remainder: Terrace }
I hope this helps. Happy to assist also with further questions. If you want me to have a look at your concrete example, please include the cga code.
Best
Niklaus
Many thanks Niklaus, I will try this out.