# Cross Laminated Timber

![Concept and Construction](/files/-MZMEDDERVlG2Tk5Iaz5)

![Climate and Community](/files/-MZMEI02Qs03Ay2M7Hj_)

{% file src="/files/-MZMF6SSaC8BA58bptmV" %}

### Burrow Borrow Barrow

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

**Burrow**<br>

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.<br>

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.<br>

**Borrow**<br>

‘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.<br>

Unbuilt > Unbuild<br>

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.<br>

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.<br>

Unbuild -> Unbuilt<br>

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.<br>

#### Barrow

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.<br>

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.<br>

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.<br>

{% file src="/files/-MZMFBp1T5RXvDJ-MdN9" %}

![](/files/-MZMBjhCSqpB9qliwj31)

```d
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;


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

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

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

![](/files/-MZMBr1-WtbHqD6DZ2Ds)

```d
//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;

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

//Electrical Shaft
elcShf = 300;

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

{% file src="/files/-MZMCHwnPzzydJJXioqo" %}
Dynamo version 2.12
{% endfile %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://gitbook.testingwaters.in/projects-1/cross-laminated-timber.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
