Rhino to Revit with Rhynamo and Dynamo

Passing Rhino data to Revit can be a challenge.  I hear lots of stories from folks who have started a project in Rhino and need to migrate the design into a Revit for a more developed building description, and find a number of problems including, but not limited to:  clunky giant SAT imports, cumbersome model rebuild, difficulty with late changes, etc.   There is a four part series that the most excellent Joe Kendsersky wrote here a few years ago that has been pretty effective for engaging in that process.  Today I want to show a more evolved way of passing information from the .3dm file format to .rvt using a great Dynamo package called Rhynamo, developed by Nate Miller and the folks at Case.

Files available here.


Random Numbers to Family Parameters

There are simple ways of looking at random numbers, and then there are awesome ways at looking at random numbers. We shall explore both (and write them to family parameters in Revit).

Download sample files here.


Get Mass Floor Data

Revit Massing studies + Dynamo = Love.

There is an interesting quirk in extracting data from Revit Mass Floors with Dynamo (probably any Revit API tool).  Levels that are assigned to masses that don't hit the floor come up as blank data (not zero, not null), so there is a little cleaning up you need to do.

Datasets can be downloaded from here.


Happy Halloween VI

It’s time to announce the winners for the 6th Annual Parametric Pumpkin Carving Contest.  Usually, we have the Baddest, the Goodest, and the Mostest Parametric.  There may be a need to make some adjustments this year . . . I think Andy Milburn broke the system.  Imagine that instead of a Parametric Pumpkin Carving we were having a Biggest Pumpkin competition, and we had a nice little scale to weigh each pumpkin.  Imagine someone showed up with a 5000 lbs pumpkin and dropped it on the scale . . . all the spring go shooting out in all directions as the device crumbles to dust.  

But I'm getting ahead of myself. 

The Baddest
by Neil86
“Bad” in this case is regarded as high praise for an uncanny scariness, a serious and terrifying aspect.  

This year's winner for Baddest comes in with Neil86's punk rock classic.  It ain't slick, it ain't pretty, but it sure looks mean and I wouldn't want it in my room after the lights went out.  Like the Ramones or Dead Boys, this nasty little beast is the equivalent of 3 chord manifestos like Sonic Reducer. The 3d print pushes the medium into elegantly broken and drippy spasms that at once seem on the point of collapse, while expertly evoking pumpkin slime.
Well done Neil86.  Please don't hurt me.

The Goodest

by Scott Crichton, Architectus, Brisbane Australia
The pumpkin that gets to the wholesome essence of both Jack O' Lanterns and the design platform on which it was built.  Free of workarounds and hacks, this winner is a model of both creativity and good citizenship.

Scott must have fried his poor hard drive, with this magnificent collection of 22752 Lego block Revit Families.

Wait . . . whut?

Ya, 4212 Big blocks and 18540 Actual size.  In his own words:
"The concept was rather simple, create a Lego family that can be applied to Mass forms to give the effect that it is made out of Lego. From this simple concept began a very long journey of experimentation and refinement.

First things first, getting the Lego block modelled properly….. so the family now has some formulas that control the buttons on the top and the circular modelling underneath all controlled by the length of the block. I made the Lego size correspond with a typical concrete block module size (standard in Australia), 200mm wide 200mm high and 400mm long (with the length being flexible). An added little bonus is that if we want an actual real life Lego block size I put in a scale factor parameter that would scale everything down to an actual Lego block size, 16mm wide 9.6mm high and 24mm long. The last step was probably a bit of overkill but I wanted to push the family. (I thought I would even put the word Lego on the top of the buttons but that would be going too far......it was already going to take ages to populate the mass!!!)

The next step was the colours......this I found to be much more of a challenge....I have a randomiser add-in so I though great, use that.....but it only works in a project file and it will not work on the individual blocks in the Curtain panel....We also use BIMLink, I created some individual materials for the Lego colours and then I created a schedule, exported it out and using excel to randomise the materials imported it back in to my model.....same result, you can't individually control the materials of a curtain pattern family. I then had a look at creating a filter to change the colours of the Lego blocks based on their length, this worked great but I thought it was sort of the easy way out and it created bands of colours in my model, not really the random result I was after. So back to the drawing board....then I decided that I needed to look at using a different family type. So I hosted the Lego block into a 2 point adaptive family and then loaded it into the mass on the nodes of the divided surface. Then using the repeat tool, I created my logo blocks. Worked great (almost), unfortunately I had the same problem with randomising the colours as I did before. This is when I thought about a reactive component. So placing a control point in the adaptive family I created a sin wave formula and used family types to create the randomness. This was the answer and when it was loaded into the mass family with a control point I got my random blocks, plus you can change the randomness by moving the control point. Hooray!!!

Creating the pumpkin form was relatively easy in comparison, creating a profile from a couple of reference circles and hosted points (using the measurement type and specifying an angle), some splines for the segments, overall radius parameter controls it all. This then gets loaded into my pumpkin mass hosted to a few reference planes and then created the form and dragged the top reference plane down to create the shape. Same process for the little stalk at the top. Parametric Pumpkin Done!

The pumpkin was ready to be Lego'ed......

The surfaces were divided up and nodes activated, the U and V grids were adjusted to allow the blocks to stack nicely for the heights, and an ok length for the grids set. Then I started placing the Lego into the individual segments. Each segment took Revit about 15 minutes to repeat the component pattern, a bit of a side effect from having such a detailed Lego family. To add a little bit of a bonus I created the stalk of the pumpkin using my actual real life Lego blocks, 9.6mm high!!! In total there are a total of 22752 Lego blocks in the pumpkin (4212 Big blocks and 18540 Actual size), probably a good reason why it took hours to transform it into Lego. The mass family file size is now over 100Mb!!!"

We would offer the file for download . . . but it's 100mb!  
Check out the rest of Scott's stuff on his blog: http://www.whilesyncing.blogspot.com.au/

Mostest Parametric

The pumpkin that is shaped by rules and variables, that is definite yet infinitely flexible.  It not only defines a particular look and feel, but conveys the possibility of endless variation.

It's difficult for me to talk about Andy's latest work.  If you've seen the movie Groundhogs Day, think of the final speech made by Bill Murray, where he takes the occasion of a throw-away event (the announcement of Punxsutawney Phil's prediction of how many more days of Winter there will be), and uses it as the poetic vehicle to encapsulate the depth of experience of an immortal life.  This is Andy's pumpkin.

If you have not seen Groundhogs Day, just know that Andy Milburn's work is moving and absurd and virtuoso and inspirational and goofy.  For those that already know him, you have probably been following his activities on his blog Grevity, where he has been building and exploring desert ecosystems, human settlement patterns, trends in the evolution in world art, proportion, monumentality . . . and more.
Then a couple days ago I look in the mail and I see Andy's full submission . . . a thesis really.  A 90+ page competition entry on "The Desert Pumpkin.  The ongoing effort to improve the way that information is used in the construction industry.  Digital tools to enable effective decision making". Beginning with precedent studies of the monumental architectural proposals of Ledou, and Boulee, Andy searches for connections between the intimacy of ancient domesticity that emerged out of the Fertile Crescent and the overwhelming vastness of the desert landscape.  Along the way he finds a formal language to connect the small and tangible with the limitless. 

So what does all this have to do with parametric design and BIM?  

"BIM is habitually referred to as a technology, a documentation tool, a means for increasing productivity and revenue flow. What then of art ? Why do I insist on probing the intersection between BIM and the artist inside each of us ?
In the late nineteenth century as the classic phase of the industrial revolution reached its peak, the world of fine art was thrown into turmoil. Photography had undermined many of the artist’s traditional areas of expertise and authority. The impressionists looked beyond photo-realism to explore fleeting effects of light and mood. Some sought to capture emotions directly, others to simplify and abstract in search of pure form.
Cubism was a short-live movement based on the concept of capturing multiple viewpoints in a single image. We do not experience the world from a static position.
Our memories are not discreet entities, but blurred and subtle composites.
Art is many things: a search for truth; an exploration of beauty, horror, simplicity, ennui; an expression of status; a challenge to authority.
Architecture is more than just a business. Our lives are more than a series of workflows. We crave meaning and purpose. Enter the artist within our soul.
It is not yet clear what “BIM art” would be. Photography was not considered art when first developed. It took time to learn how this new medium could be used to explore meaning, to balance form and content as all art forms must. As an engraver I could be a technician, just doing my job, efficient but sterile. Or I could seek to combine skill and meaning into a seamless whole. I could use my mastery of technique to express ideas, try to capture the essence of engraving and convey emotions. An artist like Escher was able to weld form and content in the most magnificent manner.
The inscription on a Ledoux drawing reads “Le Doux, Architecte du Roi” and “Grave par Van Maelle” Here we have a partnership between Architect and Engraver. The combination of technique and vision may not be as seamless as an Escher, but it is evocative none the less. In some ways the mechanical methods of the professional print-maker are better suited to the utopian messages purveyed by Boullee and Ledoux."

We at Buildz can only stand back and gape at what Andy has given us.  Please please please download his competition entry and read it.  And don't forget to visit his blog at http://grevity.blogspot.com/

Thanks to everyone who submitted entries. As always, we at Buildz are humbled by the efforts of our readers.  All our finalists will receive a choice piece of Buildz schwag, and our heartfelt thanks for participating.  



Time is running out!

From Vintage Ephemera

Pumpkin deadline is looming, Oct 28 is nigh!

We've had a pretty good track record over the 1/2 decade of pumpkins . . . the form never fails to yield up new variations on the theme.

Getting a little nostagic and looking back at Year One, with finalists using Revit, Rhino/Grasshopper, and Inventor, submitted by the Greats: David Light, William Lopez Campo, and Rob Cohee.
Interesting that, while at the time only Rob was working for Autodesk, now William and David are too . . .
Check out the whole catalog, look for MEP, video games, early Dynamo prototypes, and other inventive oddities.


Galactic Pumpkraft

3 best things I saw this weekend:

  • Marvel Comics Dazzler issue #11, featuring this image of Galactus, godlike cosmic traveler, devourer of planets:

Loungin' like a boss in his fine post modern laz-e-boy.  A lesson to all you would be world dominators to occasionally kick back and take it easy.

  • 11 year old Green-Octopus-Spider-man's Minecraft stuff made real via jMc2Obj to Meshmixer to Repetier to Printrbot.
  • Revit Structural Framing and Floor pumpkin sketches via Dynamo (git yer red-hot pumpkin maker component on the Package Manager now)
15 days to Pumpkin!  What better way to celebrate Invasion Day than with digital pumpkin carving?


6th Annual Parametric Pumpkin Carving

(Four months later . . .)
Sometimes the bottom falls out . . . the buildz-mobile catches a flat, the water heater explodes, some joker hides a bunch of fresh bananas in your cape just before you unleash the flying monkeys on disloyal minions . . . what have you.

Well, that isn't what happened.  We at Buildz International Inc, LLC, have just been real damn busy.  And neglectful.  Sorry about that, and thank you for your concerned letters. (BTW, "riddance" has 2 d's, you illiterate cretin).  We pledge to do better starting today.

And so, to kickstart the old beast back into production, we happily announce the 6th Annual Parametric Pumpkin Carving! Lubricate your fuse deposition modelers, fuse your model lubricants, and start making hierarchically engraved vegetables!

Prizes, as always, will be awarded for The Goodest, The Baddest, and The Mostest Parametric.

Remember that we at Buildz Open Sores Software and Vegetable Perforations LLP are platform agnostic. Submit entries from whatever tools you are comfortable with: Flood, Lego, LittleBits, abacus, Abaqus, all are welcome. Our factory judges are not judgy (well, we are, but we do it behind your back).

Along with receiving bragging rights, the winners will have their work showcased on these pages to the tens of readers of Buildz, and receive a valuable piece of Buildz schwag. Entries must be received by 12 noon EST Oct 28. Winners will be announced at midnight on Halloween.

So pour yourself a Dynamo (actually, don't), boot up your AKAT 1, and make a web-gl viewable, json based, gluten-free, smart-watch compatible Jack O'Lantern. Post entries to zachkron@gmail.com, at least a screenshot, but feel free to send models, journals, parameters, videos, scripts, whatever, modeled in whatever you like. If you have some huge-ass file, please send a link or let us know and we can work out some kind of upload.

A parting allegory/quiz:
A freshly poured cold beer is put on the counter just before the phone rings. When the pourer comes back and it's warm, (BTW, this is known as Alchohol Neglect) the pourer must decide whether to drink this flat, warm beer or pour it out and start a new one.
What is the proper course of action?


I love me a Parametric Bridge

I have a crap-ton of other stuff to do, and it's sunny outside, but I know that you, dear reader, really really need  a slightly impractical bridge to get you into the weekend.  So here is my triumphant (and somewhat muttering) return to screencasting: setting out geometry for a fancy pedestrian bridge, from scratch, in Dynamo.

Download the .dyn file from here.

I will follow this up with clothing this in Revit structural framing, and flexing.


Dynamo 0.6.3 Release and 0.7.0 Alpha

New Stuff!  New Website!  New Awesome!

It's been a while since the Dynamo team did a new official release, and there are plenty of new toys for everyone to use. The first bag of tricks is Dynamo 0.6.3, an incremental improvement to the 0.6.2 tools you know and love. There are, of course, a number of stability improvements, new nodes, access to more Revit functionalities and a richer computation environment. There's also a fresh, cutting edge release, 0.7.0, which takes a giant step into the future of Dynamo. This alpha release represents a significant refactor of the underlying code, a vast expansion of the geometric capabilities of Dynamo, and a rich new set of tools for scripting. 0.6 and 0.7 can each be installed side by side, so feel free to continue to use 0.6.3 in your more production oriented work, and install 0.7 to understand where Dynamo is headed.  Both releases also feature a stand alone application, allowing you to experience Dynamo without running Vasari or Revit.  0.6.3 Stand-alone has access to all the logic, list, and general computing aspects of Dynamo, and 0.7.0 Stand-Alone also features a powerful and versatile geometric engine.

And there is also a new website and home base!  This site is both a distribution point for free/open software as well as a hub for information and discussion around Design Computation, Architecture, Analysis, Fabrication, Construction, and Building Information Modeling.  The Dynamo team prides itself on being able to directly talk to designers about issues and interests that affect their work on a day to day level, and hopes that this site can nurture this kind of discussion.  The site itself is still new and relatively untested, so please be patient while the kinks get worked out of the system. There will be many more details and descriptions to follow. Please bookmark this page and visit frequently, as Dynamo is evolving rapidly.

Release notes:

0.6.3 Some noteworthy aspects, but please check the installer ReadMe for a more full rundown.
  • Dynamo Sandbox: Explore Dynamo without running Revit or Vasari (see your Start Menu)
  • Application level settings for Imperial and Metric Units:  We hear that most of the world does not use Imperial Units, and we'd like to accommodate this.  Please check out this post for a more in-depth look at our Units tools.  http://dynamobim.org/units-in-0-6-3/
  • Daylighting with cloud Rendering service sample files:  New analysis workflows available.  You will need an Autodesk ID to use these services, but you can get access to this when you sign up for membership on this website.
  • Set Parameters Node - set writable parameters for any Revit Element, (not restricted to loaded Families anymore)
  • Add name to reference plane node.
  • Convert to Unitized measures (Length, Area, Volume)
  • Explode Node (Solids to Faces, Faces to Edges)
  • Solids from Elements handles lists
  • Select All Elements of Type and Category Nodes
  • Wall Nodes element IDs persist after changes
  • Area Node
  • Volume Measure node
  • Length from Curve Node
  • Topography from Points and Points from Topography Nodes
  • Last of List Node
  • Filter by Boolean Mask
  • Group by Key Node
  • Is Null node (for filtering out null values)
  • Explode Node (replaces Explode Solid)
  • Python nodes now can take node inputs as functions
  • Shuffle List Node
  • Select All Elements of Category Nodes
  • Divided Path Node updates
  • XYZs from Divided path
  • Treat curves and edges the same for intersection operations
  • Preserve Wall Elements on change
  • Improvements to node Help descriptions
  • Toolbar shortcuts
  • Improvements to Preview bubble display (fades, compact error messages, etc)
0.7.0 This is an alpha quality release which represents a significant refactoring of the underlying code. There are some notable (temporary) restrictions to the functionality that is available in 0.6.3, and major enhancements to others. To allow users to continue work with 0.6.3 while exploring 0.7.0, this release can be installed side by side with older releases. Please jump in and try it out.  Let us know what you like and what you hate.  The Dynamo team is counting on your feedback. New
  • Geometry tools: Dynamo now has a much more extensive collection of geometric operations that are available in stand alone mode as well as when running in Revit.  Stay tuned for more posts about these tools and how to enjoy them
  • Scripting interface: Dynamo now allows for direct input of DesignScript code into CodeBlock nodes. Please see this document for learning DesignScript syntax and capabilities: http://designscript.org/manual.pdf and watch for more blog posts and forum commentary on how to make the most to these tools.
Temporarily Unavailable Functionality from 0.6.3 (coming back soon!)
  • Upgrade: 0.6 Dynamo files cannot be opened in 0.7.0. We are actively working on the upgrade mechanism
  • Package Manager: currently disabled until migration is working
  • Recursion in custom nodes
  • Revit Element explosion to geometry. Currently users cannot generically extract geometric information from Revit elements. However, there are different tools that, on a per element basis, can extract geometric data. For instance, After selecting a curve from Revit, a user can look in Revit>Element>CurveElement>Query>Curve to extract the geometry. Similarly, a Family Instance can be queried for such items as faces, curves, location, etc.
  • Revit Elements created in a Dynamo session are not remembered in subsequent sessions. New elements will be created when files are re-opened.
Known Problem Areas
  • To have both 0.7.0 and 0.6.3 installed, you must install 0.7.0 AFTER 0.6.3
  • You can only load 0.7.0 OR 0.6.3 in a single Revit session. You must close Revit before changing from one to the other.
  • Visualization can be slow with lots of curvy stuff
  • Manually Deleting and recreating Revit elements created by Dynamo can cause element duplication or failure to be re-created when the graph is re-run,
  • Search tags are in progress. If you don't find what you are looking for via search, try browsing.


Happy Valentine's Day

Solid Geometry Valentines, now available on the Package Manager:

Now get out of the office!


Dynamo Stadium

We've done a few Dynamo demo's using a Stadium dataset that Nate Miller started back this past fall and we have been tinkering with it ever since.  It's a work in progress, and I'm sure we will keep refining it, but there are a number of nice things going on that folks can learn from now.  You can see the file in action during the first few minutes of this presentation.

Download the Datasets.

Riser layout:  there are some well tested methods for laying out stadium seating, a recursive method that starts with the person sitting in the front row, with each successive riser placed such that the next person can see over the head of the person in front. In this Dynamo file, it is handled with a tiny Python node.

Placing families:  There is a boolean toggle to turn Revit family creation on and off.  This is helpful if you are looking to experiment with the general structure of the Stadium while not having to commit to the performance hit of Revit family creation.

Visualization of downstream effects:  There are a number of input parameters that are nice to see the isolated effects of.  We placed a few watch 3d  nodes so that you can monkey with the basic layout parameters and see the effects further downstream on specific structures:  Risers, Trusses, Enclosure.

You can run the definition in either a mass.rfa, or in a regular .rvt environment, but you need to have the Truss, Riser, and Panel families loaded, as well as specify a sun setting for the file.  Color Overrides will only work in the rvt environment. There is also a "custom node" in this definition that you need to download from the Package Manager. Is the menu bar at the top of the application go to Packages>search for a package> and search for "Quads from Rectangular Grid", then re-open Stadium.dyn

There will surely be updates to this in the future, but this can get folks going.
Download the Datasets.


Dynamo: Writing data to text files

There's been some recent discussion about how to write geometric data out to external data sources.  Here is the most basic on both ends:  xyz coordinates written to a .txt file.

Of course, you may want to do some fine tuning of this kind of thing.  Here is a version that cleans up the data, reducing significant digits and other formating.

You might also add some information about these points to each line of data.  Adding a couple nodes tells how far each point in from the origin, and labels what this data is:

Resulting in this .txt file.

There are surely a number of ways to do similar things.
A couple things to note here:
1. XYZ's are Containers, that is, they are a specific kind of chunk of computational stuff that is not automatically recognized as a series of numerical element or strings.  They need to be decomposed to something consumable by a text file if that is what you are writing to.  "To String" is the simplest way to do this, but there are other methods to create more fine tuned data.
2.  You need to format your data for your consuming file format.  Writing to a text file, you need to add commas, carriage returns, or other pertinent delimiters.  In the "Joing Strings" node, the "del" or delimeter that is being added is a carriage return, this basically says "return" after every line of x,y,z that comes across
3.  you can add all sorts of other data to this.  For String processessing, just enter "string" in the search bar and take a look at some of the tools that are available.

Don't forget to also take a look at a couple other examples in the Help>Samples>23 Data Import and Export, for tips on how to write to Excel.  There are also explanations in the pdf tutorial.

Thanks to the folks who participated in this discussion over on the Vasari Forum.


Dynamo Webinar, 2 parts, European time

Andrzej Samsonowicz, Autodesk Applications Engineer, is presenting a 2 part Dynamo webinar, free and open to the public.  Register now, as there are a limited number of seats (and PLEASE only register if you think you are really going to make it!)

Dynamo on Revit. The super addin. Part I. General overview.
Join us for a Webinar on January 28
Space is limited.
Reserve your Webinar seat now at:
1. What is Dynamo.
2. What can you do with Dynamo:
- Create new complex geometries in mass environment. Reuse existing one.
- Create new structural complex framings, walls, slabs, adaptive components, and any family instances.
- Manipulate BIM data.
- Solar analysis
- Export data to Excel or CSV file.

Tuesday, January 28, 2014
9:00 AM - 1:00 PM CET

Dynamo on Revit. The super addin. Part II. Hands-on.

Join us for a Webinar on January 29
Space is limited.
Reserve your Webinar seat now at:
During the second part of the webinar you'll learn some basic operations on Dynamo. This will be a good start for you to learn some more advanced stuff on your own.

Wednesday, January 29, 2014
9:00 AM - 1:00 PM CET


NCalc and Dynamo's Formula node

You WILL love the formula node in Dynamo.  Resistance is useless.

The Formula node is a beautiful thing.  Once you get the hang of how it works, it will replace a number of other nodes.  Lots of folks think that you use it for doing fancy calculations with fancy names like "logarithm" or "law curve", but it's got all sorts of other banal uses.  Driving the Formula node's excellent operations is NCalc, "a mathematical expressions evaluator in .NET. NCalc can parse any expression and evaluate the result, including static or dynamic parameters and custom functions".  The full description of the project can be found here.

As a non-text based programmer, the Formula node is my gateway drug to "real programming" (oooh, scary) because it's like dipping your toes in the deep and churning waters of traditional coding without having to plunge in up to your naughty bits.

For instance, let's say you were going to add 3 numbers, 1+2+3.  You COULD do this with the big friendly looking Add nodes:

But, my goodness that looks clumsy.  How about this instead?

Ah, much tidier, and the math syntax is recognizable to any 2nd grader.

OK, something a little more involved.

Or stuff that isn't necessarily an equation, like an IF/THEN statement that makes sure an output does not fall below a threshold:

Here the formula node is not only more legible, it actually becomes more powerful than the dedicated nodes, because it can handle lists of numbers much more easily.
(for more on how that sequence of numbers is made, go here)

Once you get into the logic and syntax (and visit the NCalc site to understand all the built in functions) you can go hog-wild.

(You know, "hog-wild" in the way that only someone sitting alone at a computer talking about math on a Sunday night with a shot of bourbon can . . .)

Examples of some other things you can do with the formula node can be found here:
- Page 28 of Dynamo Visual Programming for Design
and here
and most importantly, http://ncalc.codeplex.com/

You WILL love the formula node in Dynamo.  Resistance is useless.