version "2023.1"



@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



@StartRule

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.}*
  
  
  
  
  
  
  
  
  
  

 

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。