Cross Laminated Timber

CLT Structural Concept

Burrow Borrow Barrow

Taking inspiration and material from trees, a purely CLT building system bearing a reduced physical and carbon footprint is conceived.


Humanity has progressed by intelligently utilizing minerals obtained from burrowing the earth. We call it mining and it is the source of most raw materials used in buildings. Mining however expends gigantic amounts of energy while also inflicting substantial collateral damage to the natural environment.

Tree roots also burrow the earth in search of minerals, they’ve been doing so for longer and with a lot more sophistication and finesse. Trees are major components of the biosphere, and their wood has a major role as a sustainable and renewable eco material. Their developing wood cells are one of the most important sinks for excess atmospheric CO2. Wood is the most important natural and endlessly renewable source of energy and has a major future role as an environmentally cost-effective and energy-sufficient material.


‘The greenest building is the one that already exists’*

Pursuing that line of thinking, if we unbuild an existing building it would be greener than the greenest, where the term unbuild alludes to harmonious dismantling and not violent demolition. Hypothetically travelling back to a time before the building existed would make it unbuilt. Greenest of the greenest.

Unbuilt > Unbuild

Any act of building is inherently environmentally unsustainable. The violence of excavation and the relative permanence of the foundation would have disrupted the topsoil and subterranean natural systems leaving it permanently scarred.

The argument isn’t against buildings, but against a sense of ownership. Considering our relatively short existence on the planet, if we could behave like borrowers and consider it our fundamental obligation to return to nature the borrowed item in the condition it was received, we would be a lot more environmentally sustainable. In India, people are actually already culturally tuned to this philosophy. Construction projects usually begin with a worship ritual to take permission and seek forgiveness from Mother Earth for the disturbance of the earth’s equilibrium during construction.

Unbuild -> Unbuilt

The modular superstructure of the proposed building system with CLT panels can be completely dismantled and the significantly lower weight of CLT enables innovative foundation systems in structures within a certain scale to leave absolutely no trace once dismantled.


A wheelbarrow is one of the simplest complex machines, comprising two simple machines, the lever and wheel and axle working together making the task of moving loads easier. Redundancy is absent with every component serving a specific purpose at a specific position.

Likewise, every component in the proposed CLT building system has a specific purpose. Here too redundant components or spaces are absent. Material cut out of larger flat panel modules are utilized as components in smaller multi-part circulation modules. Construction waste is effectively designed out from the start.

Summarily, the concept heavily draws inspiration from it’s muse, the Papaya plant, with sustainable interpretations of the succulent hollow core, small footprint, uniform exposure and axial branching.

armCnt = 10;
armExt = 3600;

flrThk = 100;
walThk = 100;
flrHgt = 3000;

rsrMax = 150;
rsrCnt = Math.Ceiling((flrThk + flrHgt)/rsrMax);
trdMin = 300;
strWdt = 1200;
elvWdt = 0;

creGap = 500;
armLgt = armExt - creGap - walThk;
crInLt = elvWdt + (strWdt*2) + (trdMin+(rsrCnt-1));
crInWt = elvWdt + (strWdt*2) + (trdMin+(rsrCnt-1));
creWal = creGap - (walThk*2);
creLgt = crInLt + creGap + walThk*2;
creWdt = crInWt + creGap + walThk*2;

dorWdt = 1000;
dorHgt = (flrHgt+flrThk)*0.75;

dor001 = Rectangle.ByWidthLength(creWal+(walThk*4),dorWdt).Translate(creLgt/2,creLgt/2-dorWdt+(walThk*1.5),0).ExtrudeAsSolid(dorHgt);
dor002 = dor001.Rotate(Plane.XY(),0..#armCnt..90).Translate(Vector.ZAxis(),0..#armCnt..(flrHgt+flrThk)/4);

flr001 = Rectangle.ByWidthLength(armLgt + dorWdt + walThk*2 - creWal*2,creWdt + armLgt + dorWdt + walThk*3).Translate(creLgt/2 + dorWdt/2 + walThk*1.5 + armLgt/2,-creWal+ walThk*1 + armLgt/2 + dorWdt/2,0).ExtrudeAsSolid(Vector.ZAxis(),-flrThk);
flr002 = flr001.Rotate(Plane.XY(),0..#armCnt+4..90).Translate(Vector.ZAxis(),0..#armCnt+4..(flrHgt+flrThk)/4);

pnl001 = Solid.ByUnion(Line.ByStartPointDirectionLength(Point.ByCoordinates(-creLgt/2-creWal+(walThk/2),-creWdt/2-creWal),Vector.XAxis(),[creLgt+armLgt+dorWdt+walThk*2,creLgt+armLgt]).Extrude(Vector.ZAxis(),flrHgt).Thicken(walThk).Translate(Vector.YAxis(),[0,creWdt]));
pnl002 = pnl001.Rotate(Plane.XY(),0..#armCnt..90).Translate(Vector.ZAxis(),0..#armCnt..(flrHgt+flrThk)/4);
pnl003 = List.AddItemToEnd(List.LastItem(pnl002),pnl002.Difference(Solid.ByUnion(List.DropItems(pnl002,1..List.Count(pnl002)-1))));
pnl004 = pnl003.Difference(Solid.ByUnion(dor002));
//flrCnt = 36;

//flrHgt = 3000;
//flrThk = 200;
//walThk = 200;

//Core cavity width
//corCav = 600;

//Entrance door width
entWdt = 1000;

//Extension from Core
//extLgt = 3200;

//Sunshade Depth
sunPrj = 750;

rsrMax = 180;
rsrCnt = Math.Ceiling((flrHgt/rsrMax)/4);
trdMin = 250;
//strWdt = 1200;

//Electrical Shaft
elcShf = 300;

//elvShf = 1800;
elvWdt = (elvShf*2) + (walThk*3) - ((rsrCnt-1)*trdMin);

//Core Interior Width
corInt = elvWdt + (strWdt*2) + (rsrCnt-1)*trdMin;

//Overall Exterior Width
extWid = corInt + corCav*2 + extLgt*2 + walThk*4;

//Start Elevation
strLvl = -0.75 * flrHgt;

//Floor Panel Count
lvlCnt = flrCnt + 5;

//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);

//Revit Foundation
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());

//Revit Elevator Shaft
elvPn1 = FamilyType.ByName("elevatorModule").SetParameterByName(["Elevator Shaft Width", "Panel Height", "Panel Thickness"],[elvShf, flrHgt, walThk]);
elvPn2 = FamilyInstance.ByPoint(FamilyType.ByName("elevatorModule"),elSpt1);

//Revit Floor Panels
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));

//Revit Door Modules
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));

//Revit Facade Panel
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));

//Revit Wall Panels
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);

Last updated