mandag 28. august 2017

Ammo: Watershed Analysis in Revit, Dynamo, Flux and Grasshopper

It's been a while since my last post for various reasons. The biggest of which is that I'm holding a little session at this years BILT Europe conference about topographies in a Revit/Dynamo environment. In that matter, all spare time goes into preparation for this, so no blogposts then.. It is a quite niche subject, so who knows if anyone shows up for that class at all. Anyway, I will eventually share all the material on this blog as well.
On the matter of topographies, let's have a look at a subject on which I have pondered for a while: How to create a Watershed Analysis (WSA) in Revit.
So what is a WSA you ask.
Well, given a topography/terrain and some start positions for the water, which way will the water go?
Here is a perspective example:
Now going about this, I've tried creating something in Python/Dynamo, but didn't succeed in that endeavour, unfortunately. Let me know if you do! But after some research(that would be googling..) I found a Grasshopper based version with a VB script that proved itself to be adequate for the task. Here is a link to that original forum post.
But how to get my data across? Flux obviously..

Now, I'm not being paid by Flux or anything, but I really love their way of dealing with data exchange. It makes the whole process easy to set up and it is quite fast, especially up to medium-sized data sets. What I transfer back and forth in the example below is a mesh of about 500 faces and a point set of 7500 points.

Here is the script that I set up in Dynamo:
For showing the resulting WSA points in Revit I choose the Point.Analysis nodes as it quite clearly gets the message across. You could also import model curves and what not, but that would be #BadRevit all across the board. For getting a sense of depth, I have extracted the Z-value of each point to be used as an analysis value.

The Grasshopper script looks like this:
The VB-script is included in the files underneath. This particular script uses all the mesh vertices as startpoints for the algorithm

The Dynamo script, once you've run the Grasshopper script, writes an Point Analysis to the view you define and to show it in the Revit view you have to turn on an Analysis Display for that view:
The result in Revit:
And here is a quick example of how fast a change in the input data roundtrips through Flux, Grasshopper and back again as a finished analysis in Revit.

Link to Revit file
Link to Dynamo script
Link to Grasshopper script.