Tag Archives: Revit

Bad Monkey Stream in Porto

Marcello, Julien, Adam and me are going to give you a Dynamo show the world has never seen before. At 09:00 on Friday October 21 in Porto the four of us host a Dynamo Lab at Revit Technology Conference together, and you should consider being there.

Havard_Vasshaug_RTC16 Marcello_Sgambelluri_RTC16 Adam_Sheather_RTC16 Julien_Benoit_RTC16





Marcello Sgambelluri hardly requires any introduction if you have ever been attending a conference with any Revit in it the past decade. The american with the curly hair constantly keeps hammering top rated classes around the world, but to the best of my knowledge this is the first time he ever sets foot on European soil. I am plainly super exited to have him coming here, and that we are doing a class together.

Julien Benoit from Nantes has been my very good friend ever since we met at the first ever RTC held in Europe, in Delft back in 2013. Julien has been teaching Revit and Dynamo to French engineers and architects for a number of years, and the work that he and his colleagues are doing is simply amazing. We did a joint lab together with Andreas Dieckmann at RTC last year, and it was a no brainer to set up a similar session again.


Put Adam Sheather next to almost any normal building industry professional, and he will seem like a God. Literally. Put him next to me, and I will look like the biggest retard who ever put on two shoes. I call him The Prodigy. The man writes code like he never did anything else, but there is so much more to the bearded Australian. The creator of Dynaworks has great visions and thoughts about the future of building design and construction, has a great sense of humor and currently holds the world record for longest RTC lab – 300 minutes, all alone and hung over in Melbourne in 2014. Like Marcello, I don’t think Adam has shared many skills in Europe before, and it is fantastic that he is making the long trip from Brisbane to Porto to be a Bad Monkey on stage.

The four of us have got something special lined up for the hopefully many lucky souls who sign up for Session 2.1 Bad Monkey Stream: Learn Dynamo. We will each run one half session focusing on teaching participant different ways of creating their own scripts for various design problems. Be there! You will be a much better person after.



Number One

The presentation Building Design with Revit, Rhino, Dynamo & Grasshopper I did with Thomas Benedict Holth from Dark Architects at Revit Technology Conference Europe 2015 in Budapest in October was today announced the best rated session at the entire conference.

We presented work on combining Genetic Optimization and Environmental Analysis Tools in Grasshopper with Building Information Modeling (BIM) in Revit. The material was developed from the work we did together on an architectural competition at Dark last winter, and it apparently resonated with the people who attended the session. Thanks all who came and liked the session! I think we had a great time together in the Grand Ballroom at the Corinthia Hotel.

One of the things I have come to like about my job is working together with people who master and are passionate about computational and visual programming tools, have lots of ideas about technology, and are enthusiastic about learning BIM. Thomas was one of the first guys who made me realize this, and it was a great pleasure to work with him. We did not win the competition, but the technology we developed together still baffles me and makes me think we won anyway.

Me presenting Thomas

Me presenting Thomas

Together with Thomas and me, I was thrilled to find our previous coworkers and first time RTC speakers Margarida Jeronimo Barbosa (now at Beck) and Arne Folkestad Bjelland (now at Grape) on the Top 10 list. I was nowhere near an list after my first RTC presentation in Vancouver in 2013, and I’m brutally impressed with how they dealt with the preparations, nerves and execution. Awesome work, Margarida & Arne! I am also specially pleased to note that my friends and fellow European Dynamo enthusiasts Andreas Dieckmann and Peter Kompolschek were recognized for their awesome event sessions by also figuring in the final top 10 list. Check out the entire list on Jose Fandos’ blog post: RTC Europe Top 10 Speakers.

Julien, me, Margarida, Arne and Andreas at the Corinthia

Julien, me, Margarida, Arne and Andreas at the Corinthia

I plan to publish some content from the presentation in the future, but for now I conclude with thanking some of the people we worked with on the competition:

Caroline Stokkebokjær Hjelseth who didn’t sleep for 48 hours straight; Jeanette Norin who always laughed and totally owned the Revit model; Kaja Kittang Kvande who kept pushing us with her determination and never-give-up attitude; Rene Damborg Jensen, the trend expert who kept producing when we were all high on no sleep and couldn’t concentrate; Olaf Kon (mr. K) who contributed so much to the entire project with great ideas from day one; Franziska Meizel who flew in from the sideline and nailed the main concept at the end; Marcin Kitala who started working at Dark just before deadline and made huge contributions to the modeling of the final concept – life saver!; Tommi Haferbier Nielsen and his team at Steensen & Varming in Copenhagen – always in a good mood and contributing to the creative process; Ambrogio Agnozi at ARUP who gave us so much insight and knowledge about different structural solutions and ways to communicate a design with hand sketches; Daniel Nielsen in Copenhagen for all the help developing the Grasshopper scripts after Thomas went to Africa – we owe you big time; and finally Christine Grape who was our mentor, leader and anchor until two weeks before deadline. Thanks all!



“The only way to discover the limits of the possible is to go beyond them into the impossible.” – Arthur C. Clarke

Three months ago I started working at Snøhetta. On day one I was introduced to a project that a team of architects were already working on. The facade team on the project needed some assistance, and I started working on the outer skin.

I have never been this consumed by a project before. I have not done a single training session at my new company; not even a short presentation. I have done some external work, but at Snøhetta I have only worked on this project. It’s the coolest thing I have ever done. Here’s why:

The entire outer skin is a first class exercise in amazing visual programming and scripting for building information modeling and interoperability. Below follows a step-by-step recap of how the final result was produced. The summary excludes many of the mistakes I made, not out of pride but simply because the blog post would be too long.

When I started looking at how to model this facade in Revit, I didn’t know how to do it. It seemed impossible. I had some ideas, and fantastic people to help me, but the amount of components and data, rigorous placement and orientation rules, types and geometries, in addition to an insane amount of custom cut elements along multiple curved edges overwhelmed me with fear of failure. Today, looking back, I realize I had no reason to be afraid. Now I know what you can do with remarkable people around you, access to awesome customization and scripting tools and a little Revit skills.


The facade team line-up was composed of Peter French the dancing New Zealander; Luca Bargagli a tall and dark Italian facade engineer with a history in Paris and a perfect name for chanting; Rikard Jaucis who left just after I started, only to return for the post delivery party; and me. Peter had already worked with Rikard on the concept, and after a few short discussions we decided it would be beneficial to develop the entire facade in Revit, together with the rest of the building. Peter was the mastermind, Luca made it work, Rikard had been on the project since we started working on the competition, and I modeled the bastard. I am proud to say that apart from modeling family geometry in Revit, I did not manually place or manipulate a single family instance in the entire outer skin. It is also with great satisfaction I can state that neither Peter nor Luca had ever been in a Revit model before, and as the deadline approached both were making changes and synchronizing them in a large and complex worksharing environment. I’m impressed!


Base Geometry

The out skin geometry was developed in Rhino before I arrived, possibly by Rikard. The building shape deserves a blog post on it’s own, but in essence it’s a collection of 8 open surfaces. Two are vertical, three are straight but tilted, one is spherical and hence double curved, and the last bastard is a conical nightmare from the underworld.

Rhino Surface Facade Model

Rhino Surface Facade Model

Having the base geometry in Rhino was perfect. I loved working with the surfaces in a true 3D CAD program, while creating relationships between geometries in Grasshopper. We could have done a better job at synchronizing coordinate systems at an early stage. For some reason, this is always a problem on projects. I don’t understand why; it’s really simple to set up Revit and Rhino projects to follow the same basic coordinate system rules, while maintaining different settings for export (with Survey Points in Revit and Export with Origin in Rhino, for instance). What I always do: use the same model rotation and keep all that shit as close to the same local origin as I possibly can.

Facade Design

The facade was a double facade, with the inner skin a simple climate curtain wall. The outer skin was set up with two 6 mm thick glass plates (Motherplanks), 1.34 m wide and 305 mm high, glued together and fastened to the inner facade with steel T sections spanning between the floors. On 50 % of the Motherplanks we glued glass C channel profiles (Reglits) with 4 different surface treatments, 4 different lengths, placed at different sides of the Motherplanks and flipped. On 33 % of the non-flipped panels we sandblasted the backside of the Motherplanks where the Reglits were placed.

All beautifully randomized.

Because of the location of the inner facade mullions and T-sections, and the fact that all floors were perfectly horizontal (they usually are, aren’t they?), the panels needed to be placed at exact locations. That meant no standard UV Grid Tool could be used, and we had to create the facade grid ourselves. The only way we could do this was creating intersections between the facade surfaces, an array of horizontal Planes and vertical surfaces extruded from the vertical Mullion Grids. This only became apparent after we had failed with Surface Split for a few days. I was getting help for both Dimitar Venkov and Konrad Sobon to split the facade surfaces to multiple small surfaces, planarize all the surfaces and then extract the vertices for Adaptive Components placement. We had to discard that workflow for two reasons: Surface Split in both Dynamo (thanks Dimitar!) and Grasshopper (thanks Konrad!) is extremely slow. So is Adaptive Component placement and modification in Revit. Hence we decided to go a different way, and that turned out to be a wise choice.

Peter took charge one morning and called our Innsbruck office. Patrick Lüth and his colleague Andreas Glatzl answered the phone and we immediately began discussing working with panel center points instead. Panel center points naturally work well with one-point Generic Model Revit families. These families are also faster than other Revit elements (like Adaptive Components for instance) and easy to standardize with Type Parameters.

Andreas Glatzl (smart guy)

Andreas Glatzl (smart guy)

Andreas is pretty comfortable with geometry and lists in Grasshopper (heavy understatement there). With his scripting skills we were able to extract all panel center points and vectors, while also differentiating between the different facades and also edge and interior panels. We calculated the horizontal and vertical panel rotation angles between each panel normals and the Unit Y and Z Axis vectors in Grasshopper, and linked all these numbers along with the X, Y and Z coordinates of each panel’s center point to Dynamo with Mantis Shrimp.

Andreas Glatzl's Grasshopper Script for extracting all panel center points and vectors

Andreas Glatzl’s Grasshopper Script for extracting all panel center points and vectors

Panel Center Points and Vectors live linked to Dynamo with Mantis Shrimp

Panel Center Points and Vectors live linked to Dynamo with Mantis Shrimp

I suspect Konrad is getting tired of my praise, as it seems every time I present any work on Dynamo these days I hail his Mantis Shrimp Package. I don’t care. It’s pure awesome.

Revit Families

To be able to control the amount of panel types, we had to create a system of nesting families. The Motherplanks were created as simple Face Based Extrusions with Shared Length, Width, Height and Material Parameters. The Reglits were also Face Based, but Sweeps based on predefined Profile families, also with Width, Height, Length and Material Parameters. In addition we needed an empty family for panel instances with no Reglit. All families were constrained to the tilting Reference Line, and in addition the Reglits were constrained to an offset Reference Line for changing the placement sides with integers.

Panel Angle Parameter Changes animated with Dynanimator and GIMP 2

Panel Angle Parameter Changes animated with Dynanimator and GIMP 2

Both the Reglit and Motherplank families had a Flip Parameter (yes/no) that changed the panel facing orientation from convex to concave.

Last, the Sandblasting was added as a separate Face Based Family with a 0.8 mm thick sweep, inheriting the Length Parameters of the Reglits and the Height Parameters of the Motherplanks, with it’s own Material. We also linked it with a Visibility Parameter (yes/no) so that we could turn it on and off with Dynamo.

All 29 Types animated with Dynanimator for Dynamo and GIMP 2

All 29 Types animated with Dynanimator for Dynamo and GIMP 2

Panel Facing Orientation animated with Dynanimator for Dynamo and GIMP 2

Panel Facing Orientation animated with Dynanimator for Dynamo and GIMP 2

Panel Sandblasting animated with Dynanimator for Dynamo and GIMP 2

Panel Sandblasting animated with Dynanimator for Dynamo and GIMP 2

It’s a beautiful thing, and you can download a copy here: _panel (I often use underscore in the file names of the Revit Families I use in Dynamo. It makes them easier to locate.)


Once all the points and numbers (angles) found their way into Dynamo it was only a matter of copying and changing file paths to extract all the data we needed to place panels on all 8 facades. There is a Dynamo node that will horizontally rotate a family instance, and we used that to align all the panels in plan. The vertical rotation had to be done with an Instance Parameter, changing the tilt of a set of Reference Lines in the panel family, and thus tilting the Nested Families.

Mantis Shrimp linked 22576 points between Grasshopper and Dynamo, and eventually the latter placed and rotated an equal number of Revit families. That works when you do everything right the first time. I never do, and quickly found that I worked much more efficient when I built isolated facade surfaces, one at a time. That way the script ran much quicker, and I could do modifications to the scripts after generating each facade. Doing this with Dynamo 0.8.2 presented one huge problem: Element binding. When Dynamo creates a Revit Element (with a Revit Element ID), the node that performs that interaction will remember the ID of the element it created. This means that when we de-wire that node, Dynamo will delete the same element. This is designed for obvious reasons. The Dynamo Development Team wants Revit as synchronized with Dynamo as possible. So, when placing families on Facade 2 after using the same node for facade 1, we had to select all the generated families, Cut them to Clipboard (Ctrl+X), de-wire the placement node, Run Dynamo and finally using Paste to Same Place. When Dynamo runs and finds no Element ID’s (because they are deleted and copied to clipboard), the program will forget the elements. I have hopes that Dynamo comes with a Bake functionality on nodes that creates Revit Elements in the future.

Dynamo writing rotation and ID parameters to Revit Panel families

Dynamo writing rotation and ID parameters to Revit Panel families

Dynamo Nodes for panel placement on one facade

Dynamo Nodes for panel placement on one facade

Entire Dynamo panel placement definition

Entire Dynamo panel placement definition

When placing the panel families, we placed a simple panel with no Reglits. After all panels were placed, we developed 4 Dynamo Scripts that in turn:

  • Randomized 50 % of all panels to 28 different panel types. As mentioned above, these types varied between 4 glass treatments, 4 sizes, where 3 sizes had 2 different placements. The math goes like this: 4 materials * ((3 sizes * 2 sides) + 1 size) = 28 types.


  • Flipped the orientation (from concave to convex) of a randomized 50 % of the panels with Reglits.


  • Added Sandblasting on the backside of the Motherplanks where there were Reglits, on 33 % of the concave (flipped) panels. All the randomization scripts used versions of Nathan Miller’s Lunchbox nodes.


  • Cut (with Cut Geometry) all the Nested Families in all the Edge Panels with giant Closed Polysurfaces from Rhino, exported to SAT, imported and exploded in Generic Model families, Voided and loaded. This workflow used Julien Benoit’s Dynamo Package SteamNodes for cutting, and Jason Andersen’s BlackBox for collecting and organizing Nested Families.


That last procedure was dirty. Adding thousands of Cut Geometry relationships between Nested Families and imported and exploded SAT voids smells like trouble. It did work on this delivery, but it also did bloat the Revit Project file from about 30 to about 100 MB. It was awesome when we made it work, but I would not uncritically recommend the workflow on every design case.

Close up of one of the crazy corners

Close up of one of the crazy corners

Complete Outer Skin Model in Revit

Complete Outer Skin Model in Revit

Facade Section

Facade Section

Complete Revit Model

Complete Revit Model

I have done several presentations on visual scripting with Dynamo over the past years, and every time I do one, I talk about the existential pleasure of watching a computer work while you drink coffee and watch with a moist grin. The exercise above is the purest version of this phenomenon I have ever had. It was pure joy.

Sometimes we forget how lucky we are. When you get to overcome the seemingly impossible, with edge cutting technology that makes your heart beat on a complex, challenging and beautiful building project together with fantastic people, you should smile. Now, I do.


Learn Dynamo


There are hundreds of ways you can learn Dynamo. My good friend and mentor Julien Benoit at Groupe Legendre teaches his colleagues every day. Dynamo is so integrated in his team’s project that they have to. For many of us this is more a case of playing around until we find relevant problems to solve. I have three main categories of ways to learn Dynamo.

First, use the resources on dynamobim.org and dynamoprimer.com. They include video and written tutorials that cover basic and advanced procedures of computing and automating data. Simple exercises like form creation, parameter manipulation and Excel interoperability are perfect introductions to understand what kind of magic you can pull on your colleagues and clients.

Second, interact with the community. Like many new, free open source programs Dynamo has conjured a fantastic community of people who help each other every day. Guys like Dimitar Venkov and Andreas Dieckmann have done miracles teaching people how to solve their own design problems. Actually Dimitar has two live Code Blocks in critical workflows on my current project at Snøhetta, and I would have gotten nowhere without Andreas’ Clockwork Package. The same goes for Konrad Sobon who created Mantis Shrimp that allows me to move data between Grasshopper and Dynamo, something I do on a daily basis at Snøhetta. Adam Sheather made Dynaworks, a Package that Julien uses to move clashes between Navisworks and Revit in his own workflow. All of these were developed for free under open source licensing. That’s the result of a community of people who like to help others.

Last, arrange courses. When I worked at Dark we asked Nathan Miller to fly from Omaha to Oslo to direct a three day training session. Nate came, and I invited BIM specialists from other companies in Oslo to split the cost. I personally made leaps in understanding computation during those three days. Let me know if you want to set something similar up for you and your colleagues. I can deliver introductory curriculum and pretty advanced architectural design with Dynamo. I can also get you in touch with people like Julien, Andreas and Nate who are on a completely different planet when it comes to advanced topics. As a sidenote to that, Andreas’ topic for his Dynamo class at Revit Technology Conference Europe 2015 in Budapest this fall is Automate Automation. No? He basically has Dynamo run multiple Dynamo definitions in multiple Revit sessions at any time. It blows my mind so hard that I need alcohol and nicotine to not pass out.


“I am too busy. I have no time. All the deadlines. Bu-hu.” We all have time, we just use it differently. I make Dynamo-time when I’m alone at nights (yes it does sound a bit dirty), or sometimes when my wife is working. I also make Dynamo-time at work, and constantly try out stuff that often breaks. When it works, I make awesome. And catch up all time spent. Usually.


Because then you decide what happens.

30 years ago design professionals started drawing lines, text and hatched areas on computers instead of paper. Then 10 years ago we began modeling information in 3D databases. But the operations were not vastly different. Draw, move, rotate, copy. From now on we will start programming information. For coding n00bs like myself visual programming software like Dynamo and Grasshopper are perfect introductions. Building designers need to start making our own software to understand how our components interact, how they perform and to feel greater ownership to our own processes as designers.

To finalize, some images of our latest work at Snøhetta. Facade components beautifully placed according to inner facade mullion and framing placement, and randomized with 4 different sizes, 4 materials, approximately 50 % flipped and “some” of the flipped panels sandblasted. Totally 64 different types. Plus the cut corners, of course. All Dynamo and Adaptive Components.

Fully Clothed

Fully Clothed

Half Naked

Half Naked



Close Up

Close Up


Dynamo in Oslo and Copenhagen

“What is the coolest possible thing we can do?”

Lars Robertsen at Autodesk asked me that question two months ago. I responded “Well that would be having Julien Benoit, Andreas Dieckmann, Matt Jezyk and Dieter Vermeulen come to Norway to show of amazing Dynamo material.” I have to admit that Zach Kron was on that list as well, but I´m sure Matt will do just fine without the Barry White of BIM at his side.

My friends are coming to meet you. Seats are limited, so hurry up. If you are using Revit, you need to learn Dynamo. It´s as simple as that. And you will struggle to find a better lineup of people to teach you. This is the A Team. (Sorry for the lack of humbleness. I have decided to stop using that for a while.)

The events are all free, and are the results of a collaborative effort between Dark Architects, Snøhetta, Autodesk, C.F. Møller and Multiconsult. It´s a beautiful thing when people just get together and teach each other stuff.


Copenhagen August 26 Event

Oslo August 27 Event

Thanks to Julien, Andy, Matt and Dieter for coming, Cathrine Mørch for hosting, Jill Nilsson for organizing and Lars for asking an awesome question. See you all there!

Learn Revit


“Can you make a basic Revit video tutorial series for me”, Rodrigo asked.

“Of course.”

I did. It’s out. You can listen to my ranting at thinkparametric.com/courses/revit-architecture-101

Margarida Jeronimo Barbosa at Dark helped me so much making this course that I’m embarrassed to admit it. Great work. Thank you<3

I also owe big thanks to the team at Dark and Zinc who I worked with on this project: Jeanette Norin, Caroline Stokkebokjær Hjelseth, Kaja Kittang Kvande, Christine Grape and Ida Stople. I wrote about the project in the blog post A White Sheet.

The main reason I wanted to help Rodrigo and his friends at Think Parametric is I really like their Rhino and Grasshopper courses. I’ve also come to find many interesting design workflows integrating the four programs Revit, Dynamo, Rhino and Grasshopper. I believe Think Parametric’s computational exercises combined with building information modeling knowledge offers many interesting building design solutions.

At RTCAUS I used several examples of moving data between these four programs and letting each of them use their own strengths. I plan on doing more of the same at RTCEUR. And who knows; maybe one day you’ll find a video tutorial on the same topic at Think Parametric?

RTCAUS 2015 Top Ten and Material


One Saturday not long ago I woke up with a punch in the gut. I had snoozed the alarm and overslept. In a few minutes I would stand on a podium on Australia’s Gold Coast, in front of a large audience giving a 75 minute talk on visual programming and building information modeling. With no shower or breakfast, only a short chat with Steve Stafford (that’s nutritious mental breakfast, but still no shower), I went on stage and delivered what was later announced the single best presentation at the entire conference. An hour later I presented the third best session.

Check out the entire list of Top Ten Speakers.

I was also thrilled to read Jonathon Dutton’s feedback earlier today: Post RTCAUS Feedback. Jonathon writes:

“The first Dynamo script I wrote after RTC used our excel project planning file to populate a Revit project with all the proposed drawing sheets – even selecting the appropriate title block and naming conventions. Following this, I wrote a script which placed all my precast panel elevation views on sheets. This saves my company enormous amount of time, which allows our team to focus on more challenging problems rather than work on boring and repetitive tasks.”

If you want to download and study the handout material that helped Jonathon overcome Death By Repetition, please do so from my Workshop page RTC AUS 2015.

Thanks to Margarida Jeronimo Barbosa for help with the content, my company Dark Architects for freedom and inspiration, Stephen Melville for optimized truss sample file, Konrad K. Sobon & Andreas Dieckmann for awesome software, my buddy Arnfinn Aas Eielsen for mental build-up and Adam Sheather (who also had two top ten sessions!) for hanging out with a guy who hadn’t showered.

Adam and me paying attention during the Construction Stream Wrap-Up Forum

Adam and me paying attention during the Construction Stream Wrap-Up Forum. That’s what no-shower hair looks like.

Here’s Stephen’s truss optimization linked to Revit. I showed this at the end of one of my presentations. Rhino, Grasshopper, Kangaroo, Galapagos, Mantis Shrimp, Dynamo and Revit in beautiful symphony: