Hi,
I trying to Build a rule where I have a Podium and a Tower over, for which I am trying to split a plot based on FAR and ground cover. But my building is splitting in two rather that coming one above each other.
My Code:
Tower(h)-->
extrude (world.y,h)
split(y){TowerFloorHt:Colorize}*
Podium(h)-->
extrude (world.y,h)
split(y){PodiumFloorHt:Colorize}*
Colorize -->
color ("#ffffff")
DevelopLot -->
case Zoning == "HRCommercial" : HRCommercialLot
else : OpenSpace
Lot -->
split(x) {'(0.6*GCover): Tower (((floor((SiteArea * MaxFAR)/(0.6*GCover* SiteArea))+(PodiumFloors))*TowerFloorHt))|'(1-(0.6*GCover)) : Podium (PodiumFloors*PodiumFloorHt)}
OpenSpace --> color("#77ff77")
I want to have enough control to be able to place the tower any place over the podium(eg. corner or center), which I am unable to do. Is there a way for me to have this kind of control over the placement of the tower and also controlling the FAR for tower and podium differently.
Thank you
A
Solved! Go to Solution.
There are many ways to achieve this. Peter's method is one way, but with this method be careful about calculating floor area values because I think the Tower actually penetrates/overlaps the Podium in this rule and may lead to double counting floor area. If you don't care about floor area calculations, then this method will work for you. If you need floor area calculations to be exact, then you might want to translate the Tower upwards (in the y direction) to the height of the Podium so that it does not overlap the Podium.
Alternatively, (just to illustrate that there are multiple ways to create similar geometry) another way to create a tower on top of a podium is to create the podium, comp out the roof the podium, use the podium roof as a base to create your tower(s). For example, if you want a tower centered on top of a podium, here's how you could do it.
Lot -->
extrude(podium_height)
Podium
Podium -->
comp(f) { top: PodiumRoof. Tower | all: PodiumFace. }
Tower -->
extrude(tower_height)
s(tower_width, '1, tower_width)
center(xz)
If you want two towers centered on top of the podium separated by a distance, here's how you could do it.
Podium -->
comp(f) { top: PodiumRoof. Towers | all: PodiumFace. }
Towers -->
extrude(tower_height)
s(2*tower_width + towerSeparation_distance, '1, tower_width)
center(xz)
split(x) { ~1: Tower.
| towerSeparation_distance: NIL
| ~1: Tower. }
Again, there are many ways you can create this geometry, and the above code just shows one way. You can also combine translate, scale, and split operations to achieve the same results, and you might want to do this in order to create attribute values for the characteristics that you want to be able to control and change. For example, if you decide that you would rather control the tower position by xz coordinates, you can create attributes for these xz coordinates and then use translate operations to put the tower in the right place.
seems to me that you are splitting your LOT in tower and podium. If you want your tower on top of your Podium you have to split your podium in podium and tower.
perhaps you can also do this as people make a chimney and use the t operation. Like this
Lot -->
Podium
Tower
Podium -->
color(0,1,0)
extrude(10)
Tower -->
color(1,0,0)
extrude(1)
s(11,20,11)
t(4,0,4)
greetings Peter
Hi Peter,
How do you add two towers on podium control by tower separation distance?
Thank you.
Dulini
There are many ways to achieve this. Peter's method is one way, but with this method be careful about calculating floor area values because I think the Tower actually penetrates/overlaps the Podium in this rule and may lead to double counting floor area. If you don't care about floor area calculations, then this method will work for you. If you need floor area calculations to be exact, then you might want to translate the Tower upwards (in the y direction) to the height of the Podium so that it does not overlap the Podium.
Alternatively, (just to illustrate that there are multiple ways to create similar geometry) another way to create a tower on top of a podium is to create the podium, comp out the roof the podium, use the podium roof as a base to create your tower(s). For example, if you want a tower centered on top of a podium, here's how you could do it.
Lot -->
extrude(podium_height)
Podium
Podium -->
comp(f) { top: PodiumRoof. Tower | all: PodiumFace. }
Tower -->
extrude(tower_height)
s(tower_width, '1, tower_width)
center(xz)
If you want two towers centered on top of the podium separated by a distance, here's how you could do it.
Podium -->
comp(f) { top: PodiumRoof. Towers | all: PodiumFace. }
Towers -->
extrude(tower_height)
s(2*tower_width + towerSeparation_distance, '1, tower_width)
center(xz)
split(x) { ~1: Tower.
| towerSeparation_distance: NIL
| ~1: Tower. }
Again, there are many ways you can create this geometry, and the above code just shows one way. You can also combine translate, scale, and split operations to achieve the same results, and you might want to do this in order to create attribute values for the characteristics that you want to be able to control and change. For example, if you decide that you would rather control the tower position by xz coordinates, you can create attributes for these xz coordinates and then use translate operations to put the tower in the right place.
I was able to create a rule which has control of adding 0 to 4 tower on a base podium.
Thank you Cheryl.
Dulini,
Your CGA code for Tower and Podium is brilliant. May I get a copy of the code?
Thank you,
Paolo Mazza
Hi there, is this a cga rule that could potentially be shared? Dulini Ratnayake
Hi Andrew,
Sorry I was busy with other projects for a while.
I am very happy to share the cga rule I did sometime back and please share any improvements with me.
Please let me have your email.
Regards,
Dulini