So I've solved the extra wall issue but now I've got duplicate towers, one set that is extruding from the top floor of the pedestal but also a set that extrudes from the top of the first floor of the pedestal. I thought that the split only effected the current polygon?The model now looks like the following:[ATTACH=CONFIG]30663[/ATTACH]the code now looks like this:Pedestal -->
extrude(world.y, ((Num_Pedestal_Floors * Upperfloor_Height) + (Groundfloor_Height - Upperfloor_Height)))
PedBuildingVolume3D
PedBuildingVolume3D -->
case (Groundfloor_Height != ((Num_Pedestal_Floors * Upperfloor_Height) + (Groundfloor_Height - Upperfloor_Height))) : #pedestal height is NOT equal to height of just the ground floor
# the 3d volume will be split into smaller 3d volumes ! 1 ground floor volume will be created.
split(y) {Groundfloor_Height : Volume("GF") | ~1 : PedAllUpperFloors}
else:
split(y) {Groundfloor_Height : Volume("GF")}
report("NUMFLRS",NumFlrs)
Towers
PedAllUpperFloors -->
# the rest of the volume is not split into upper floor volumes, as many times as possible ('*' sign)
split(y) {~Upperfloor_Height : Volume("UF")}*
NIL
Towers
Volume(volumeType) -->
case volumeType == "GF" :
case ((split.index == 0) && (NumFlrsComm >= 1)):
comp(f){side: Simple_Com | bottom: FloorBottom | top : Top | all: NIL }
set(material.opacity,OpacityVal)
report("SPLITTOT", split.total)
CommReporting
MassReporting
case ((split.index == 0) && (NumFlrsComm == 0) && (NumFlrMix >= 1)):
comp(f){side: Simple_Mix | bottom: FloorBottom | top : Top | all: NIL }
set(material.opacity,OpacityVal)
report("SPLITTOT", split.total)
MixReporting
MassReporting
case ((split.index == 0) && (NumFlrsComm == 0) && (NumFlrMix == 0) && (NumFlrOff >= 1)):
comp(f){side: Simple_Off | bottom: FloorBottom | top : Top | all: NIL }
set(material.opacity,OpacityVal)
report("SPLITTOT", split.total)
OffReporting
MassReporting
case ((split.index == 0) && (NumFlrsComm == 0) && (NumFlrMix == 0) && (NumFlrOff == 0)):
comp(f){side: Simple_Res | bottom: FloorBottom | top : Top | all: NIL }
set(material.opacity,OpacityVal)
report("SPLITTOT", split.total)
ResReporting
MassReporting
else:
NIL
case volumeType == "UF" :
case ((split.total <= Num_Pedestal_Floors) && (((split.index + 1) <= (NumFlrsComm - 1)) && (NumFlrsComm > 1))):
comp(f){side: Simple_Com | bottom: FloorBottom | top : Top }
report("SPLITTOT", split.total)
CommReporting
MassReporting
case ((split.total <= Num_Pedestal_Floors) && ((split.index + 1) > (NumFlrsComm - 1)) && (NumFlrMix > 0) && ((split.index + 1) <= ((NumFlrsComm + NumFlrMix) - 1))):
comp(f){side: Simple_Mix | bottom: FloorBottom | top : Top }
report("SPLITTOT", split.total)
MixReporting
MassReporting
case ((split.total <= Num_Pedestal_Floors) && ((split.index + 1) > ((NumFlrsComm - 1) + (NumFlrMix - 1))) && (NumFlrOff > 0) && ((split.index + 1) <= ((NumFlrsComm + NumFlrMix + NumFlrOff) - 1))):
comp(f){side: Simple_Off | bottom: FloorBottom | top : Top }
report("SPLITTOT", split.total)
OffReporting
MassReporting
case ((split.total <= Num_Pedestal_Floors) && (split.index + 1) > (NumFlrsComm + NumFlrMix + NumFlrOff) - 1):
comp(f){side: Simple_Res | bottom: FloorBottom | top : Top }
report("SPLITTOT", split.total)
ResReporting
MassReporting
else:
NIL
else:
NIL
Towers -->
case xLength > zLength :
split(x) {'.5 : Tower1 | '.5 : Tower2 } # I expected this split to split the polygon at the top of the pedestal, but it appears to
else : # also split the top of the first floor of the pedestal and extrudes from both location, why?
split(z) {'.5 : Tower1 | '.5 : Tower2 }
Tower1 -->
setback(FSetbackT1) { street.front : Concrete | remainder : T1Sub1 }
T1Sub1 --> setback(BSetbackT1) { street.back : Concrete | remainder : T1Sub2 }
T1Sub2 --> setback(LSetbackT1) { street.left : Concrete | remainder : T1Sub3 }
T1Sub3 --> setback(RSetbackT1) { street.right : Concrete | remainder : Tower1Extrude }
Tower1Extrude -->
extrude(world.y, (Tower1_Floors * Upperfloor_Height))
T1BuildingVolume3D
T1BuildingVolume3D -->
# the volume is split into upper floor volumes, as many times as possible ('*' sign)
split(y) {~Upperfloor_Height : T1Volume}*
T1Volume -->
case ((split.total <= Tower1_Floors) && (split.index <= (NumFlrComm1 - 1))):
comp(f){side: Simple_Com | bottom: FloorBottom | top : Top }
CommReporting
MassReporting
case ((split.total <= Tower1_Floors) && ((split.index > (NumFlrComm1 - 1)) && (NumFlrMix1 > 0) && ((split.index) <= ((NumFlrComm1 + NumFlrMix1) - 1)))):
comp(f){side: Simple_Mix | bottom: FloorBottom | top : Top }
MixReporting
MassReporting
case ((split.total <= Tower1_Floors) && (((split.index) > ((NumFlrComm1 + NumFlrMix1) - 1)) && (NumFlrOff1 > 0) && ((split.index) <= ((NumFlrComm1 + NumFlrMix1 + NumFlrOff1) - 1)))):
comp(f){side: Simple_Off | bottom: FloorBottom | top : Top }
OffReporting
MassReporting
case ((split.total <= Tower1_Floors) && ((split.index) > (NumFlrComm1 + NumFlrMix1 + NumFlrOff1) - 1)):
comp(f){side: Simple_Res | bottom: FloorBottom | top : Top }
ResReporting
MassReporting
else:
NIL