Dynamo | Retaining Wall Automation
Tuesday, 25 July 2019
I was requested to create a workflow for the civil team to automatically model 3d retaining walls in Revit, based on 2 alignment, top and bottom string lines. It doesn't sound very difficult, but there are a few interesting parameters/controls involved in the scripting process that I would like to share.
My Personal Approach to Dynamo Scripting
I absolutely try my best to always clean-up my script as much as possible. Dynamo is very similar to Grasshopper at first glance, viausal scripting by connecting components/nodes without paying to much attention to grammars allows us to quickly achieve what we intend to do, despite that the overall visual scripts/graph gets increasingly messy when it gets complex. The good news is that Dynamo has this advantage over Grasshopper, it allows nodes to be represented in text string format in code blocks, namely, the DesignScript. This is a very nice way to put complex nodes into very organised coding lines, thus easier to read and develop, as well as providing more user-friendly interface when it comes to Dynamo Player for non-coders.
Overall Logics of Retaining Wall Automation
1. Project one of the alignments Curves to Plane XY
2. Offset ProjectedCrv based on wall thickness, beam thickness, pile location.
Dynamo by default creates wall by centre line, this is why offset is needed
Similar requirements for Beam and Pile
3. Divide ProjectedCrv based on distance/straight section length = wall panel width
Wall panels are essentially straight
This basically decompose curvy curves into a series of straight sections of identical length
4. Project those division Points to the original 2 alignment (Z Value of Points)
This is for getting the height of each wall panel by ZTopAlign - ZBottomAlign
And for getting the base offset of wall by ZBottomAlign
Dynamo only allows to modify wall base offset, not top offset
5. Place Wall Panels based on those straight line sections
6. Adjust Wall Base Offset and Wall Height
7. Place Beam with Appropritate Offset
Beam Family needs to be Structural Framing Category
Beam placed by straight lines recreated by projected points to top alignment
8. Place Piles with Appropriate Offset and Base Offset Adjustment for Length