Upper level building setbacks

338
1
03-09-2024 07:09 PM
jabrett
New Contributor

Hi

I have used the LShape with 0 width for the second wing, in order to control a building massing's depth (20m in this case).  The LShape was set first with lot min. setbacks to front, left, back, right.

I'm trying to build in the ability to add upper floor setbacks and control which floor the upperlevel setback starts, as well as the setback distance from each edge, without any success.

I tried incorporating the rule in this thread, however I also have a split as the ground floor has a different height to the upper floors. Also the upper floors in the thread below output just the floor plates and not a mass. https://community.esri.com/t5/3d-mapping-questions/setback-after-height/m-p/775262

I also tried adapting the rule in this thread (https://community.esri.com/t5/arcgis-cityengine-questions/different-setbacks-in-the-same-building/td..., using an LShape instead of an OShape but without success.

Can anyone help with this?

Thanks!

 

 

CityEngine_LShapeUppersetbacks.png

0 Kudos
1 Reply
desert
by
New Contributor III

I'm not sure I understand your question.
There's probably a better way, but here's what I did.

@Group("Lshape_setting",0)
@Order(0)
@Range(min=0, max=100, stepsize=1)
attr FrontDepth = 0

@Order(1)
@Range(min=0, max=100, stepsize=1)
attr LeftDepth = 0

@Group("Floor_setting",1)
@Order(0)
@Range(min=3, max=5, stepsize=0.1)
attr groundFloorHeight = 4

@Order(1)
@Range(min=2, max=10, stepsize=1)
attr upperFloorCount = 3

@Order(2)
@Range(min=3, max=5, stepsize=0.1)
attr upperFloorHeight = 3.5

@Order(3)
@Range(min=2, max=10, stepsize=1)
attr setbackFloorCount =2

@Order(4)
@Range(min=3, max=5, stepsize=0.1)
attr setbackFloorHeight = 3.5


@Group("Setback_setting",2)
@Order(0)
@Range(min=0, max=100, stepsize=0.5)
attr setbackFrontWidth = 1

@Order(1)
@Range(min=0, max=100, stepsize=0.5)
attr setbackRightWidth = 1

@Order(2)
@Range(min=0, max=100, stepsize=0.5)
attr setbackLeftWidth = 1

@Order(3)
@Range(min=0, max=100, stepsize=0.5)
attr setbackBackWidth = 1



Lot -->
	shapeL(FrontDepth,LeftDepth){shape : L_Base | remainder : X.}

L_Base -->
	extrude(groundFloorHeight)
	GroundFloor 
	
GroundFloor --> 
	color(1,0,0)
	comp(f){top : UpperFloor | all : GroundFloorWall.}

UpperFloor -->
	color(0,1,0)
	extrude(upperFloorHeight*upperFloorCount) 
	comp(f){top : SetbackBase | side : UpperFloorWall}
	
UpperFloorWall -->
	split(y){upperFloorHeight : UpperFloorFacade.}*
	
SetbackBase -->
	innerRectangle(scope){shape : SetbackFloorBase | remainder : X.}
	
SetbackFloorBase -->
	alignScopeToAxes(object.xyz)
	shapeO(setbackFrontWidth,setbackRightWidth,setbackBackWidth,setbackLeftWidth){shape : X. | remainder : SetbackFootprint}
	
SetbackFootprint -->
	color(0,0,1)
	extrude(setbackFloorCount*setbackFloorHeight) split(y){setbackFloorHeight: setbackFloorFacade.}*
	

 

Video_240312085910.gif

Hope this helps.