
- Goal and inspiration
Tree nets or tree weaves are strong, trampoline-like netting systems typically woven between trees. These playful structures are designed for people to sit, walk or bounce on, creating a platform high up in the trees, often used in tree-top adventures or outdoor recreational areas.

For this project, I was inspired by my summers as a Scout leader, and the building of tree nets. When building chord structures in the woods (as you do…), one is always faced with the questions “how much chord should I cut for it?”. There is nothing quite like having to unravel an entire net because you don’t have enough length to finish it; or having 15m of chord leftover because you overshot… After years of false expectations and kilometers of scrap chord, it has become apparent that this is not a “trust your gut” kind of question. I decided to over-engineer a solution to this problem, in order to limit the Scouts’ yearly waste of paracord.
2. Building Principles
Tree nets can be made in a variety of sizes and shapes, with the use of different knot networks. One of the simplest version uses a weave similar to that of a dreamcatcher. A fist section of cable or strong chord connects the trees (min 3) to create the perimeter of the net. A thinner section of chord is then knotted all along the perimeter to create the first row of the weave. The next rows are created by tying the chord in the center of each previous loop, again and again in a spiral pattern. Once the desired number of rows has been woven, the center string is pulled, thus tightening the entire structure.
3. Program
The grasshopper program follows the same principles listed above.

a. Setting up the trees
The first section of the program is dedicated to setting up the trees which will support the structure. Using either the grid or an imported plan, the user maps out the trees with multiple circles. Using the “loft” command, the program generates a mock-up of the tree trunks (1).
b. Perimeter row
A second section defines the point on each tree where the knot should lay, so as to create the shortest perimeter possible (2). The height of the perimeter row on the trunk can be adjusted.

b. First woven row and main weave
Similar to the previously described dream-catcher method, the first row is created by dividing the perimeter polygon into sections, and “knotting” a polyline all along the perimeter (the user-defined number of knots per row defines the density of the net).
To create the next woven rows, the program uses the Anemone plug-in to create a repeated loop, where a “knot” is added to the center of each previous section. The knots connect to create a new polyline. The number of Anemone loops defines the number of rows in the net. The user-defined number of rows defines the density and rigidity of the net: the more rows, the more paracord used, the less tight the net.
In order not to overwork the program when tweaking the knot and row parameters, a data dam (“delay box :)” has to be clicked before moving on to the next step of the simulation.

c. Physical properties and tightening of the net
With the woven rows established, the program moves on to adding forces to the elements. In order to give the lines chord-like features in the simulation, we use the “bouncy solver” from the Kangaroo 2 add-on. The following steps are dedicated to creating the input for the solver’s simulation.
Path n°1 defines the physical properties of the perimeter row, which is usually made of a stronger chord. The strength and deformation of the segments can be adjusted with sliders.
Path n°3 follows the same principle for the main weave.
Path n°4 sets the trees as anchors for the structure. The strength of these anchors is unrealistically high for the purpose of the simulation, so as to replicate the conditions of a real net. A physical net would stay attached to the trees, and break if overloaded, rather than pull away from the trees.
Lastly, path n°2 is used to fix an issue that was encountered, where the net would form a large central hole. This was due to the fact that the knots, inevitably closer and closer to each other, made the rows thinner and thinner, thus never reaching the center point. This issue would also result in a heavy structure that would sag down, much like a basketball net.
Path n°2 generates a tightening of the center-most row, similar to the end tightening of a dream-catcher. The “tree statistics”, “list item” and “tree branch” commands are first used to retrieve and select the last row on the net. A strength is then applied to tighten the row, which pulls in/creates tension on the rest of the net.

d. Loads
Two more inputs are fed to the bouncy solver: both are loads applied to the net.
Path n°1 applies earthly gravity to the net. Duplicate points are culled, so as to not add unnecessary weight; then a Z vector is applied to each section of chord.
Path n°2 allows the user to vizualise the net’s distortion when the weight of children is applied. The repartition of the children can be modified by reducing the length of chord supporting them (top section). The user can also modify the number of children in the visualization, as well as their weight (bottom section).

The 6 previous parameters are then merged, and fed to the bouncy solver :
e. Solution saving
In order to keep a set of parameters, the user can save the state of all of the cursors and toggles by using Solution>Save state in the grasshopper top bar. Once named, previous solutions can be accessed and used again at a later time.
f. 3D Model
Once the user is satisfied with the parameters of the weave, a “multipipe” command is used to generate a 3D visualization of the net.


g. Measurements

In order to calculate the length of chord needed, the programm uses “length” and “mass addition”. The length of chord is dependent on the chosen radius, the number and tightness of the knots. In order for the chord to be easier for scouts to measure, the length is calculated both in meters and arm’s lengths.
g. Remote command
In order to simplify the use of the program, the cursors for the user-defined parameters are gathered in a remote command, which can be used near the rhino viewport. In addition to commands, the panel gathers the chord measurements calculated for the model.
To add cursors and panels to the remote panel, right click on the grasshopper elements, and select “publish to remote panel”.
To access the panel, click view>remote control panel on the grasshopper screen.

And just like that, you’ve created a digital tree net ! (yeehooo)
4. Further uses
The program answers a rather pointy question, and is targeted to a very limited audience: scout kids. The basis of this script can, however, be used in architectural applications. Firstly, he physical properties that apply to the tree net can be applied to other tensile structures such as parasols or shade structures.

In addition, the net structure can be scaled up to create suspended metal or wooden armatures. The resulting structures can be supported by pillars to replace the trees.

Lastly, the net structure, if made rigid, can be flipped upside down. Following the principles of the catenary arch, the resulting convex structure is extremely solid, for it is only subjected to compression forces. This technique is known to have been used by Gaudi in the design of the Sagrada Familia in Barcelona.

5. Links
Link to the grasshopper file :
Rhino version used : Rhino 8 SR15
Plug-ins used :
“Anemone” by Mateusz Zwierzycki_1 : https://www.food4rhino.com/en/app/anemone
“Kangaroo Physics” (v. Kangaroo 2.42) by Daniel Piker : https://www.food4rhino.com/en/app/kangaroo-physics