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: https://youtu.be/EWsMnTbkIWE
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.
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.
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.
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.
The graph should now look similar to the below image.
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.
I have now created a Code Block to divide the curve length into the half distance of my sheet pile.
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.
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.
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”
Excellent Lawrence, look forward to the video demonstration!
Sit tight, should be here soon!
The video is now up on my YouTube Channel.
Hello Lawrenceh, can you tell me where i can find the Curves.divide curves node please ?
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.
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?
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.
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?
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
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.
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
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?
Hi Wayne, you should be able to go to https://dynamopackages.com/ and lunchbox is hosted here. Just download the latest version. hope this works for you.
Downloaded and the program is working
Good to hear it worked for you.
Downloaded latest version of Lunchbox 2016.11.11, however the Curves.DivideCurve is not there it seems!
Hi Arron, I have noticed this as well. You can use the in build divide curve which will create multiple curves and then get the start and end points.
Used the Curve.DividePoints node and it all works fine.
can you share the adaptive Pilling sheet Family?
Thanks Lawrence! Been really struggling with adaptive components in Dynamo. Great blog. Please keep it up!
glad I could help
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.
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.
Send my your email address and I will email you the Adaptive Sheet Pile, you will then see how this works from the family
Thank you very much! My email is firstname.lastname@example.org
Can you also send me the sheet pile family?! Thanks
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 email@example.com
Grateful if you can share your adaptive shetpile family to my mail box
I would really appreciate if you can share your sheetpile family. My email address is firstname.lastname@example.org
Thank your for this lesson, it’s exactly what I’m trying to do now. Is it possible to share your adaptive sheetpile family? My email adress is email@example.com