Different setbacks in the same building

2108
3
Jump to solution
09-30-2013 04:46 AM
by Anonymous User
Not applicable
Original User: Sheyla_Santana

Hello, Everyone.

I'm here again!

I need to construct a build like the one in the picture. They need to start within a front setback of 5.9 meters and extrude three meters. Then i need to extrude the next two floors (10 meters) without any setbacks. The remaining floors need back setback of 5 meters, a front setback of 2 meters and side setback of 1.5 meters. This information of how many floors that those buildings are going to have is defined using the my basic rule that considers setbacks, occupancy rate and coefficient of utilization. I have to put some discont areas (about 27-31% of the total area of the building). At this moment, i don't know how to do it...
I tried to:

Represent the building diagram as a rectangular footprint shape.

Extrude the shape upwards to max height.

Split in Y direction (vertically, as CE uses Y-up, not Z-up) into:

1) bottom level with 5.9m setback.

2) middle levels that use entire footpring

3) top level with 5m stepback.

Split bottom level in either X or Z direction, with absolute split amount of 5.9 sent to NIL, and remainder of split is the ground floor mass/volume.

But it's still not working... Any ideas?

Thanks!

Sheyla
0 Kudos
1 Solution

Accepted Solutions
MatthiasBuehler1
Frequent Contributor
Here's the CGA file.

The forum usually fucks up the code layouting.

Cheers !

Matt

View solution in original post

0 Kudos
3 Replies
by Anonymous User
Not applicable
Original User: matthiasbuehler

Hi,

sorry, I've been too busy to post something yet. I'm working on something for you right now. 🙂

m.
0 Kudos
MatthiasBuehler1
Frequent Contributor
Ok, here's 20 minutes of CGA coding .. 😉



#####################################################################################
# ATTRS
#####################################################################################


@Group("BUILDING",0)  @Order(0)
attr nFloors    = 15
@Group("BUILDING")   @Order(1)
attr groundFloorHeight  = 5.5
@Group("BUILDING")   @Order(2)
attr upperFloorHeight  = 3.5
@Group("BUILDING")   @Order(3)
attr volumeChange_1_floor = 2
@Group("BUILDING")   @Order(4)
attr volumeChange_2_floor = 5


@Group("1",1)    @Order(0)   @Range(0,5)  
attr frontSetback_1   = 0
@Group("1")     @Order(1)   @Range(0,5) 
attr backSetback_1   = 5.9
@Group("1")     @Order(2)   @Range(0,5) 
attr sideSetback_1   = 0

@Group("2",2)    @Order(0)   @Range(0,5) 
attr frontSetback_2   = 0
@Group("2")     @Order(1)   @Range(0,5) 
attr backSetback_2   = 0
@Group("2")     @Order(2)   @Range(0,5) 
attr sideSetback_2   = 0

@Group("3",3)    @Order(0)   @Range(0,5) 
attr frontSetback_3   = 5
@Group("3")     @Order(1)   @Range(0,5) 
attr backSetback_3   = 0
@Group("3")     @Order(2)   @Range(0,5) 
attr sideSetback_3   = 2


#####################################################################################
# FUNCTIONS
#####################################################################################


floorHeightFunction(floorID) =
 case floorID == 1:
  groundFloorHeight
 else :
  upperFloorHeight

setbackID (n) =
 case n >= rint(volumeChange_2_floor) :
  3
 case n >= rint(volumeChange_1_floor) :
  2
 else :
  1
  
setbackDimension (n, side) =
 case setbackID(n) == 3:
  case side == "front"  : frontSetback_3
  case side == "back"  : backSetback_3
  else      : sideSetback_3
 case setbackID(n) == 2:
  case side == "front"  : frontSetback_2
  case side == "back"  : backSetback_2
  else      : sideSetback_2
 else :
  case side == "front"  : frontSetback_1
  case side == "back"  : backSetback_1
  else      : sideSetback_1


#####################################################################################
# START
#####################################################################################


@StartRule
Shape -->
 BuildingRecursion(1) # start with floor '1' = ground floor


BuildingRecursion(n) -->
 case n > rint(nFloors) :
  NIL
 else :
  extrude(world.y, floorHeightFunction(n))
  FloorVolume(n)

  # back to recursion
  comp(f) {top : BuildingRecursion(n + 1)}


FloorVolume(n) -->
 comp(f) {bottom:
  reverseNormals
  alignScopeToAxes(y)
  shapeO(setbackDimension (n, "front"),setbackDimension (n, "side"),setbackDimension (n, "back"),setbackDimension (n, "side")) { shape : NIL | remainder :
   extrude(world.y, floorHeightFunction(n))
   Floor.
   }
  }
MatthiasBuehler1
Frequent Contributor
Here's the CGA file.

The forum usually fucks up the code layouting.

Cheers !

Matt
0 Kudos