rsrCnt = Math.Ceiling((flrHgt/rsrMax)/4);
elvWdt = (elvShf*2) + (walThk*3) - ((rsrCnt-1)*trdMin);
corInt = elvWdt + (strWdt*2) + (rsrCnt-1)*trdMin;
extWid = corInt + corCav*2 + extLgt*2 + walThk*4;
//Revit Element placement points
pnSpt1 = Point.ByCoordinates(-corInt/2 - walThk - corCav, -corInt/2 - walThk - corCav).Translate(Vector.YAxis(), [0,corCav + walThk*2 + corInt]);
pnSpt2 = pnSpt1<2>.Rotate(Plane.XY(),(0..#lvlCnt..90)<1>).Translate(Vector.ZAxis(),strLvl..#lvlCnt..(flrHgt)/4);
flSpt1 = Point.ByCoordinates(corInt/2 + walThk*2 + corCav, -corInt/2 - walThk*2 - corCav).Rotate(Plane.XY(),(0..#(lvlCnt + 3)..90)).Translate(Vector.ZAxis(),strLvl..#(lvlCnt+2)..(flrHgt)/4);
fcSpt1 = Point.ByCoordinates(-extWid/2,-extWid/2,0).Rotate(Plane.XY(),(0..#(lvlCnt-3)..90)).Translate(Vector.ZAxis(),0..#(lvlCnt-3)..(flrHgt)/4);
drSpt1 = Point.ByCoordinates(corInt/2,-corInt/2,0).Rotate(Plane.XY(),(0..#(lvlCnt-5)..90)).Translate(Vector.ZAxis(),0..#(lvlCnt-5)..(flrHgt)/4);
elSpt1 = Point.Origin().Translate(Vector.ZAxis(),flrThk..#flrCnt/4..flrHgt);
fdnPn1 = FamilyType.ByName("Foundation").SetParameterByName(["Length", "Foundation Thickness", "Width"],[corInt + walThk*6 + corCav*2, 750, corInt + walThk*6 + corCav*2]);
fdnPn2 = FamilyInstance.ByPoint(FamilyType.ByName("Foundation"),Point.Origin());
elvPn1 = FamilyType.ByName("elevatorModule").SetParameterByName(["Elevator Shaft Width", "Panel Height", "Panel Thickness"],[elvShf, flrHgt, walThk]);
elvPn2 = FamilyInstance.ByPoint(FamilyType.ByName("elevatorModule"),elSpt1);
flrPn1 = FamilyType.ByName("floorPanel").SetParameterByName(["Floor Length", "Floor Thickness", "Floor Width"],[extLgt, flrThk, corInt + walThk*4 + corCav*2 + extLgt]);
flrPn2 = FamilyInstance.ByPoint(FamilyType.ByName("floorPanel"),List.DropItems(flSpt1,3)).SetRotation(List.DropItems(-(0..#(lvlCnt + 2)..90),3));
dorPn1 = FamilyType.ByName("doorModule").SetParameterByName(["Core Cavity", "Panel Height", "Door Width", "Panel Thickness", "Floor Thickness","Maximum Riser", "Minimum Tread", "Stair Width", "Elevator Shaft Width"],
[corCav, flrHgt, entWdt, walThk, flrThk, rsrMax, trdMin, strWdt, elvShf]);
dorPn2 = FamilyInstance.ByPoint(FamilyType.ByName("doorModule"),drSpt1).SetRotation(-(0..#(lvlCnt-5)..90));
fcdPn1 = FamilyType.ByName("facadePanel").SetParameterByName(["Floor Height", "Overall Width", "Projection", "Thickness"],[flrHgt, extWid, sunPrj, flrThk]);
fcdPn2 = FamilyInstance.ByPoint(FamilyType.ByName("facadePanel"),List.DropItems(fcSpt1,0)).SetRotation(List.DropItems(-(0..#(lvlCnt-3)..90),0));
walPn1 = FamilyType.ByName(["wallPanelLeft","wallPanelRight"])<1>.SetParameterByName(
["Core Cavity", "Core Length", "Door Width", "Extension Length", "Floor Thickness", "Panel Height", "Panel Thickness", "Electrical Shaft"]<2>,
[corCav, corInt, entWdt, extLgt, flrThk, flrHgt, walThk, elcShf]<2>);
walPn2 = FamilyInstance.ByPoint(FamilyType.ByName(["wallPanelLeft","wallPanelRight"]),pnSpt2<1>).SetRotation(-(0..#lvlCnt..90));
walPn3 = List.TakeItems(walPn2,3).SetParameterByName("Remove Bottom",-strLvl..#3..-flrHgt/4);
walPn4 = List.FirstItem(List.TakeItems(walPn2,-2)<1>).SetParameterByName("Remove Top",[flrHgt/4,3*flrHgt/4]);
walPn5 = List.LastItem(List.TakeItems(walPn2,-3)<1>).SetParameterByName("Remove Top",flrHgt/4..#3..flrHgt/4);