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.


fredag 7. april 2017

Ammo: Excavations with Revit and Dynamo



First of all: Dynamo 1.3 is out! Information found here: http://dynamobim.org/dynamo-1-3-release/

So to the subject of the day: Revit and topographical volumes is no good, right? Well, I can tend to agree on that point..
Sure Revit does calculate net fill/cut etc etc, sure you have possibilities in Site Designer and other addins and sure - you really should use Civil 3D.. Right tool for the right job and so on.
If you however are as me you will need from time to time to accomodate these things in Revit.

A typical workflow we find ourselves in as a structural engineer on small to medium sized projects is that the contractor or our customer wants us to produce an excavation plan something along the lines of this:
Now this is quite often manual labour and we really want to accomodate this in a much better manner.
I've spent some time investegating the possibilities in Dynamo regarding creating solids of these volumes. What we want is a more efficient way to produce the drawings and in addition we want to extract the total volume excavated.

Now why haven't we been able to do this? The reason is sloped excavations. How do we create a solid that are "correct" when presented on a drawing or that calculate the volume we want it? It really has to do with how the internal offsetting of curves are done in Dynamo. You see the offsetting in Dynamo is not that good, unfortunately, but recently I found a little and hidden package called DynamoClipper. See here for a little comparison on how the two methods for offsetting works differently: https://twitter.com/Jos_ols/status/841266065061621760

Now, suddenly, it works the way we expect it to, so here is a little example:

The Revit model (before any scriptrunning)
The script:


Part 1:

Part 2:

Part 3:

Running the script:

And of course, the results:

A solid with correct levels, slopes, corner cuts. All ready to place spot elevations, do dimensions etc.
Not all together finished, but we've gotten a long way.

Packages needed:
- Clockwork
- Springs
- DynamoClipper

Revit test file: https://www.dropbox.com/s/x8j9124irsnh7sq/ExcavationTest.rvt?dl=0

Dynamo script: https://www.dropbox.com/s/vtpvzbepb66nhvd/ExcavationVolume.dyn?dl=0

fredag 6. januar 2017

Ammo: Shortest Path on Topography

I got inspired by three guys this week on Twitter.

First up was Dieter Vermeulen which tweeted this: https://twitter.com/BIM4Struc/status/816283589969068032

Then Zach Kron followed up with this: https://twitter.com/ZachKron/status/817088565570129921

And lastly, but not least, the man responsible for the crucial part in both of the above examples, Mr Nathan Miller over at Proving Ground for bringing over a port to Dynamo from Giulio Piacentino work over at Mcneel and Associates.

And so I will add yet another example to using the Shortest Walk node in the Lunchbox library:

How to get down from a mountain. Fast..


So what I've done is just placing two site components and using them to find the shortest path between them.

The script in its entirety:


As I stated, "Lunchbox" is needed and the almighty "spring nodes" of course.