Revit Structure & Dynamo – Piled Wall Systems Tutorial

When creating Piled wall systems within Revit you either have to create a structural wall and then 2D detail this in plan to look like a piled wall system or more commonly place each male and female pile and at best, use the array or copy commands. Although this is not too complex for linear piling it can get quite time consuming when curves and turns are encountered within the path.

Link to video:

Piled wall systems with Revit and Dynamo

Dynamo does provide a very neat solution to this problem and could also be used for sheet piling as well as secant and contiguous systems. In this example I have created a chain of model lines which represents the path of the piling in plan. I then project these lines onto the surface which gives the correct Z levels. The path is then divided into segments and each coordinate pair is then extracted from this list. Finally an adaptive component is placed at each set of coordinates.

This tutorial starts with a quick look at the anatomy of an adaptive component. Adaptive components are very useful when you need to control the placement of elements along a path and have the element rotate to stay aligned. A good example of this is sheet piling.Revit Sheet Piling - Connected clasps

The Adaptive Sheet Pile is basically a standard foundation family that is nested into an adaptive component template. The below image shows the nested family and the adaptive points that control the placement of the pile.Adaptive Component

The first stage is to create a path for you piling layout, in this example I have done this with Model lines. Start Dynamo and then create a new workspace.
The first section of the dynamo graph will allow the user to create a selection of model lines. The Element Curves node will get all the curves/lines within the selections. The list is then flattened and the individual curves/lines are joined into a single poly curve. The last node reports on the total curve length.Sheet Piling with Dynamo - Select model elements

The next stage is to get a selection of your topography and then convert this into a poly surface. The node I have used below if the Python implementation which is much faster than the original conversion tool. (This is found in the Spring Nodes package).

You can then take the surface and the joined curve from the top example and then project this onto the poly surface (Your Topograpghy). Note that the Vector.ZAxis simply projects down the Z axis.Sheet Piling with Dynamo - Get topo

The graph should now look similar to the below image.

Sheet Piling with Dynamo - first part of graph

We now take the new poly curve and divide this into a series of points. In my case the sheet pile in 900mm from point to point. I want to have a start and end point for each pile so I am simply going to divide this by 2.

Sheet Piling with Dynamo - Code Blocks

I have now created a Code Block to divide the curve length into the half distance of my sheet pile.Sheet Piling with Dynamo - Create the Divisions

This will of course create a real number (65.4950), what we need is to round this value down to the nearest integer (65). The output of this is then used to divide the curve into the required number of points. The output of the Points node now contains all the coordinates.

Sheet Piling with Dynamo - create the division Points

These coordinates need to be split into pairs. The List.Chop will then create pairs but if there is a single coordinate left then the Adaptive Component will fail to be placed. The filter looks at the length of the sub lists and then only gets the lists that have more than one set of coordinates.Sheet Piling with Dynamo - Split into Pairs

This is more of a high level overview of the process and the Dynamo script but I will do a video showing and explaining each stage.



34 thoughts on “Revit Structure & Dynamo – Piled Wall Systems Tutorial

  1. Yep, it’s from the Lunch Box collection. Click packages, search for a package and then Lunchbox. Once it’s installed you’ll have the nodes.

  2. Hi Lawrence, I’m struggling a bit with contiguous piles. I’ve made a nested family of male and female piles with adaptive points at start and finish (ie beginning of full male pile and end of female) but this is causing them tilt following the topography of the land as points 1 and 2 are at different levels. Is there a requirement for two sets of split curve coordinates? One for male and one for female piles?

    1. Hi,

      You need to create a separate male and female pile family. Divide the curve twice and shift the points using list.shift. This will then enable you to then chop each list and insert the separate families onto each set of points. You only need one curve and then if this curve is re positioned all the piles will update.

      Hope this helps.

      1. Thanks Lawrence, next issue is now that I have the points, they also need to be offset a further 150mm below the topo level, for cover and they then need to be categorized so that the secant piles step down at 500mm increments in relation to the topo surface across the site. What node would I use and formula for that matter?



  3. You could get the z value of the points and then deduct 150 from all the z values and then recombine them to points. The other method is perhaps to offset the topo in dynamo

  4. Hi lawrench, thank you for your shearing but i have some problem when i try to modify your dynamo for my project use. Could you please tell me how can i place the non-adaptive family? i try to use “FamilyInstance.ByPoint” to replace “AdaptiveComponent.ByPoints” but the family can not along the line in topography.

  5. Hi lawrenche, thank you for your shearing but i have some problem when i try to modify your dynamo for my project use. Could you please tell me how can i place the non-adaptive family? i try to use “FamilyInstance.ByPoint” to replace “AdaptiveComponent.ByPoints” but the family can not along

  6. I have recreated you pile wall system and I can not find the dividecurve node from lunchbox
    could you please give me the link for this?

  7. Hi Lawrence,

    Downloaded latest version of Lunchbox 2016.11.11, however the Curves.DivideCurve is not there it seems!

  8. Thanks Lawrence! Been really struggling with adaptive components in Dynamo. Great blog. Please keep it up!

  9. Hi Zain, I cannot upload anything other than images and PDF’s onto this site. However, it is just a standarad pile family nested into an adaptive component.

  10. I am also struggling with the adaptive component, do you have a step-by-step instruction for this? I would appreciate any help with this.

  11. Hi lawrenceh,

    Thanks for the informative post, I really learnt a lot. Would it be possible to email me the adaptive sheet pile as well? Thank you so much! My email is

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s