Category Archives: Tips

Using Dynamo to manipulate building data in BIM part 3: Random Parameter Values

A while back I got into a conversation with Daniel Hurtubise at Renzo Piano Building Workshop about possible Dynamo use cases. It turned out we had aligned ideas: Trying out different randomizing techniques with Revit Planting (and other) Families.

Today I recorded a short video demonstrating how you can do this in Dynamo. For the method to work you need parametric planting families. I got mine from Revit legend Andy Milburn. Read about (and download) my revised families in my blog post Flat People. Planting Families are a bit weird in Revit, but Andy made them flexible by using Family Nesting and Number Parameters for width and height scaling, in addition to an Angle Parameter for rotation.

Random Planting Shadows

This is a generic workflow that can be used on any number of Revit Families and Parameters. For instance, I have randomized facade modules with the same methods previously.


Using Dynamo to manipulate building data in BIM part 2: Selection

Our fantastically talented and in many ways awesome Ph.D. candidate Margarida Jeronimo Barbosa asked me if she could delete some Levels in a Revit project file. After I had elaborated for a good 10 minutes about the possible implications of doing so, she gave me the “I’m going to walk away from you, crazy person” look. Trying to prevent that, I introduced the idea of using Dynamo instead. She lingered, hesitantly.

In short, stuff gets deleted if you delete a Level that hosts stuff. What stuff, you ask. Dunno, I respond. At least Views (and their view specific stuff), Floors and Roofs. More than that? Possibly. Not very reliable consultancy, that.

So, how does Dynamo enter the equation? With Dynamo you can select all elements on a Level! Yay! How? Watch:

Like I noted in the video, you’ll need Andreas Dieckmann’s Dynamo Package, called “Clockwork”. That package will help you with a lot of other stuff too., and has a GitHub Repository at ClockworkForDynamo.


Using Dynamo to manipulate building data in BIM part 1: Shared Elevation

A simple way to try out Dynamo on building projects is to use it to extract, compute and move building data. One example that I love to show uses the problem of tagging and scheduling building component elevations in Revit. Last week my buddy Hannes (svensken) at Dark asked about this for Ceilings. I decided to make a short (and fast) video recording of one way to do it:

This example uses an already existing parameter (Height Offset From Level), and adds it’s value to a (manually entered) number. If the objects your are manipulating do not have this parameter, you can extract their geometries, find vertices and their respective Z-coordinates. I believe you also can extract the global elevation automatically from Revit’s Site Location, but that may require Python/API work. The definition produced in the video only works for Ceilings hosted on Level 1. To make it work on multiple Levels, install Andreas Dieckmann’s Clockwork Package, use Element.Level and add the Level Elevations to each Ceiling.


It is a common misconception that Dynamo is a geometry engine for Revit. William Wong at CASE recently wrote about that in his blog post Dynamo: More Than Grasshopper Lite. Dynamo can build advanced, mathematically defined geometry. So can Grasshopper. But Dynamo can also compute building data. And that makes it a unique product.

Using examples like these can be a good way to learn visual programming, test Dynamo on projects and teach your colleagues about data manipulation. Let me know if you come up with other ideas!

Animate design iterations in Revit with Dynamo

I want to animate design iterations in Revit with Dynamo.

Now I can. Thanks to the first ever Annual Dynamo Hackathon, which took place in Las Vegas during this year’s Autodesk University, I am now able to create animations of a whole set of various parameter calculations and variations. Eventually I want to include analytical data, quantities and optimization techniques in this workflow, but for now I have more than enough to learn about the current set of tools.


The idea came to me during breakfast the day after Matt Jezyck announced the Hackathon. I asked my friends Andreas Dieckmann and Julien Benoit what they thought about it, and they immediately got on board. When Andreas and I arrived in Vegas, we hooked up with Ian Siegel, and got to work. In short, we have produced 5 Dynamo Custom Nodes that can animate;

  • Number and Length Parameter iterations
  • Element Transparency
  • Camera movement
  • Element Color Ranges

Check out the very cool showcase video Andreas put together between AU sessions:

There are some limitations to what you can animate currently. Depending on our progress on these limitations, and more specifically Dynamo development, the plan is to release these nodes in the Package Manager early in 2015.

Check out the Dynamo 2014 Hackathon site for more information on the various projects at Autodesk University 2014 Dynamo Hackathon, and the Dynamo Blog Post for final results and voting at 1st Annual Dynamo Hackathon.

Above and below are some use cases that I have tested after AU. Both models are Dark Architects projects, with the above using Ian’s facade alternative on Origo, and the example below changing Adaptive Component parameters on the facade of Lørenfaret Grønn Portal.

LGP_take1(It may take a while for these GIF’s to load. They are rather large.)

Animated Tilted Surface Patterns in Revit

I’m afraid I’m starting to bore my readers with this repeated going on and on about Image-O-Matic and animated Mass families. For that I’m sorry, but I have yet another example of it’s potential use.

Some time back I saw a link on Twitter followed by some exchange of ideas between some people I follow. The link was to artist Ned Kahn’s webpage and work, and the discussion basically evaluated different possibilities for this kind of thing to be modeled and visualized in Revit. As I remember, one of the proposals during the discussion that followed was: *Surprise* Image-O-Matic!

Take a look:

Of course I immediately had to scrape the idea of making identical stuff in Revit, with multiple waves and large surfaces, and confine it to mere inspiration.

I produced two models, one vertical facade and one horizontal ceiling above a pool “sort of thing”. The first video was a prototype and the second is the finished product of the vertical surface.

Details from the Adaptive Component family:

Tilted pattern horizontal AC

This is basically a simple disc, hosted on a Reference Line that tilts according to an angle that in turn increases when the Adaptive Placement Point number 2 gets closer. This is done with a simple tan-function.

2013-06-10 20-24-19

The second Reference Point gets hosted on a Reference Line, and the position of the point on that line is associated with a Number Parameter that is used for animation.

2013-06-11 08-31-43

Here is the Mass family and parameters:
Tilted pattern horizontal rotation2013-06-10 20-22-31

The point that controls the displacement in the Mass family is hosted to the end of a Reference Line, that is in turn rotated around the Mass center.

2013-06-11 08-40-17

The last animation of the vertical facade took about a day to make, with approximately 200 HD images being generated and assembled. And yet it is too short, as the Reference Point moves far too fast because of the long hosting Reference Line. Also I’m not totally loving the robotic presence the symmetrical layout and movement makes.

Tilted pattern horizontal pool 1

The “surface above pool” model is nice, although also very robotic. Here, the Reference Point moves on a circular path around the pattern’s center. I’ve also put in a variable that uses a sine function to control the amount of angular displacement.

I could probably make this easier by just tilting the disc towards the second Reference Point, and do more work on the Reference Line defining the path (give it a height for instance), but that would ruin my math and hence my day.

Ironically I like the first (prototype) animation best. That’s probably because the Reference Point moves slow, and on a fairly organic path. Too bad I didn’t make it HD or save a backup. And what do we learn from this? Never neglect your first work.

Tilted pattern horizontal pool 2

Download the Mass family used above the pool: Tilted pattern horizontal rotation

Space Frame with Spherical Layout in Revit using Divided Surface, Adaptive Component and Pythagoras

Nordea glasstak 7

One of the joys of working in an architectural practice like Dark is there’s a slight chance I actually get asked to design something one day.

I was recently challenged to produce a proposal for a glass ceiling on a project I work on. After some playing around with different surfaces I decided to try out a few methods for working with patterns and repeaters in Revit. Inspiration came over time through Zach Kron’s posts Space Frame Quickie, Pattern Deformation and Adaptive Components: From Data to taDa!. I love it when digital exercises give me ideas to combine different modeling approaches. With this truss system I wanted the bottom form to lay out as a sphere, I wanted to be able to control the placement and size of the sphere and of course have a Parameter for use in Image-O-Matic. Capture

The layout of the Adaptive Component family is more or less identical to Mr. Kron’s examples, only (again) with slightly more sophisticated math. This time, however, I was prevented to arrive at the best solution on my own and had to seek help elsewhere.

Luckily, I’ve got some really smart colleagues, and the very clever Lars Ribbum at Dark Architects was able to provide creative advice. The math is strong with this one, and some Pythagoras made everything simpler than I initially thought would be necessary. Pythagoras

These equations basically make the four corner points form a round sphere in conjunction with their neighboring components. The parameter Hmin defines the narrowest distance between the glass surface and the “sphere”. I also added a parameter (Constant) to be able to scale the whole movement and sphere size, just in case.

The entire model is made up from a Mass with a Divided Surface, a Reference Point, and an Adaptive Component with beautiful math. The Reference Point and Adaptive Component is built up so that the point continually defines the “top of the sphere”. Like in Zach’s exercices, this one “loose” Reference Point can be moved around in different ways. It can be moved manually, like I’ve done in the image below.Nordea glasstak 6

Or it can be hosted on different reference geometry, and in turn given new math.

In these animated examples, I put an angular constraint to the position of the Reference Point, and used Image-O-Matic to illustrate it’s movement around.

And with the virtual sphere visualized.

The glass ceiling proposal was never used, and I guess my design career is taking it’s time to hit of, but I do enjoy playing around with these tools. And I love animating math!

Download Mass family (with virtual sphere): Space Frame the Vasshaug Way

Computational Design in Revit: Work Inspired by Sang Hoon Kim

Sang Hoon Kim 6

Some time ago I stumbled upon the work of designer Sang Hoon Kim while surfing the Internet. Bam! Revit model.

Sang Hoon Kim 3

Well, “Bam! Revit model” is slightly exaggerating. It took me about a month of tweaking before I was satisfied enough to write a post. I’m still not 100 % happy, but sometimes you just need to get shit out the door.

Sang Hoon Kim 8Sang Hoon Kim 8 hidden

My version of Mr. Kim’s design is obviously different from the original concept, but the inspiration is still apparent.

Sang Hoon Kim 1 hidden

This turned out to be an exercise in computational design studies in Revit. I originally wanted the entire model to iterate from one parameter (Universal Ratio), but that turned out to counteract the aesthetics. I tried to connect everything to the ratio parameter, but whether I used the golden ratio, 8:5, 4:3, 16:9 or Phi the model just would not look good. Or, as good as I expected.

Now, the total width and height are independent of the ratio, as are the angle parameters that control the radial placement of the vertical paths. The Universal Ratio is resigned to “just” control the horizontal relationships between the circles and the wood panel cross sections.

Sang Hoon Kim plan family2013-04-15 13-14-09

It is impossible to automatically align path nodes vertically and horizontally. The only way of doing this is using Reference Planes and Path Intersects, and that limits your ability to change the number of divisions. Room for improvement, Autodesk!

Sang Hoon Kim perspective family

The formulas used to control the geometry is inverted exponential. That is very easily shown with Image-O-Matic:

For more videos, please visit my YouTube channel.

For more images see Gallery.

Download Mass family: Sang Hoon Kim 🙂

Sang Hoon Kim 2