# How can I setback a second floor with "push"?

299
2
10-18-2018 12:26 PM
New Contributor

How can I setback a second floor with "push"?

1 Solution

Accepted Solutions
New Contributor III

Hello Lorin.

If I understand you correctly you want to create a building that "steps back", the best way I have found to do that is to create the bottom floor shape, and then move that one up with the "t" function so the code would look something like this:

attr siy = 0 // floor counter
attr sty = 3 //Number of floors
attr floorHeight = 3 //Floor height
attr setbackDist = 1 //setback distance

@startrule
A01 --> //This code creates a loop that adds new floors until the "sty" is reached.
case siy < sty : A02(siy,sty) set(siy,siy+1) t(0,floorHeight,0) A01
else: A02(siy,sty)

A02(siy,sty) --> //This code takes the top floor and makes it the roof
case siy == sty : setback(setbackDist*siy-1) {front : NIL | remainder : Roof00}
else: A03(siy,sty)

A03(siy,sty) --> //This code creates the setbact of each floor, siy is the floor number where siy = 0 is the bottom floor, and siy = sty is the roof
setback(setbackDist*siy) {front : Balcony(siy,sty) | remainder : A04(siy,sty)}

A04(siy,sty) --> // here is each floor extruded to create a volume.
extrude(floorHeight)
comp(f) {side: Facade | bottom : Floor00}

Balcony(siy,sty) --> //this is the balcony area
setback(setbackDist*siy-1) {front :NIL | remainder: color(1,0,0)Balcony01}

This is maybe not the best code for doing it, but it will get the job done, you can always play around with it to see if you can make it better

2 Replies
New Contributor

I want to extrude a first floor then create a footprint with the front setback, extude again and place the second extrusion on top of the first

New Contributor III

Hello Lorin.

If I understand you correctly you want to create a building that "steps back", the best way I have found to do that is to create the bottom floor shape, and then move that one up with the "t" function so the code would look something like this:

attr siy = 0 // floor counter
attr sty = 3 //Number of floors
attr floorHeight = 3 //Floor height
attr setbackDist = 1 //setback distance

@startrule
A01 --> //This code creates a loop that adds new floors until the "sty" is reached.
case siy < sty : A02(siy,sty) set(siy,siy+1) t(0,floorHeight,0) A01
else: A02(siy,sty)

A02(siy,sty) --> //This code takes the top floor and makes it the roof
case siy == sty : setback(setbackDist*siy-1) {front : NIL | remainder : Roof00}
else: A03(siy,sty)

A03(siy,sty) --> //This code creates the setbact of each floor, siy is the floor number where siy = 0 is the bottom floor, and siy = sty is the roof
setback(setbackDist*siy) {front : Balcony(siy,sty) | remainder : A04(siy,sty)}

A04(siy,sty) --> // here is each floor extruded to create a volume.
extrude(floorHeight)
comp(f) {side: Facade | bottom : Floor00}

Balcony(siy,sty) --> //this is the balcony area
setback(setbackDist*siy-1) {front :NIL | remainder: color(1,0,0)Balcony01}

This is maybe not the best code for doing it, but it will get the job done, you can always play around with it to see if you can make it better