Joe K: Working with Rhino and Revit, Part 2

Welcome to Part 2/4 of our guest series of posts by the illustrious Joe Kendsersky. Find Part 1 here., Part 3 here, and Part 4 here.

Creating Building Forms

Before getting into some workflow examples, we should set some ground rules of what cannot be accomplished when creating building forms or components.

· You will not be able to manipulate imported geometry from either program. The forms / components are contextual references in which you are working with or off of.

· You will not be able to parameterize forms / components after importing and no metadata will be transferred.

· Tip: Refer to the document from McNeel’s site: Exporting Solid Geometry from Rhino to Revit which provides some great tips to make sure your geometry is optimized before importing.

Let’s imagine two team members are working on a design competition and want the ability to quickly iterate several schemes for a project. One member is Rhino / Grasshopper savvy, but does not know Revit and does not understand the components of assembling a building. The other member knows Revit Architecture and is a seasoned architect. How can they leverage both solutions and work together?

1. To start off, the Rhino team member should set units and determine a common origin point to begin modeling. I recommend starting at 0,0,0 for consistent base point and to make sure the object is not shifted – especially when linking and using Revit’s Mass / building Maker tools. It also makes it easier when passing data to other applications or to consultants.

2. In Rhino / Grasshopper, create a form, you will have to "bake" the form before exporting it and “join” if the form is made up of multiple surfaces - this will create a single object.


3. Once a form has been created, prepare object for export: Rhino > File > Exported Selected > select ACIS > ACIS Export Type > Default.

4. At this point, the Revit team member will link the form into a Revit project. The workflow: Rhino export .sat > create an in-place family mass and link .sat. The advantage of using a mass in-place family will allow you to overwrite existing .sat files in Revit to study several different iterations, if the Rhino model changes. However, you could export using default .sat option in Rhino and import directly into a loadable mass.rfa family file.

5. The Revit team member will start a new Revit project and create an in‐place family mass. Go to the Insert tab and select Link CAD. Select the .sat and make sure the correct units and positioning are set. Note: Link CAD is activated when in‐place mode, this little gem slipped its way into Revit Architecture 2010 and has many benefits.


7. After the .sat geometry is linked, the Revit team member has two different avenues to pursue to create buildable architectural components. They can either apply Revit’s Patterning tools and set curtain panel components to the surfaces, or use Mass/ Building Maker tools to apply default wall system families to the surfaces. Each method has its own strengths and weaknesses’ (For further resources / discussions’ on these workflows also Dave Fano’s Blog DesignReform). Note: A straight import will give you UV coordinate spacing, but this may not be what you want. Therefore, depending upon the layout of your wall system, you may want to use the new Intersects tool to divide the surface by using intersecting 3D levels, reference planes or model lines. The Intersects tool will allow you to create a cleaner relationship between the mass and other building elements, such as floor levels and surrounding context.


8. With the imported geometry, the Revit team member can create mass floors at each level defined by the mass and make a schedule to review floor areas - per floor. This looks good, but now they would like to study other forms for comparison – what can the team do?


9. The team members will follow the same routine from starting from point 2: In Rhino or Grasshopper re-edit the form and export to .sat > and finally in Revit Architecture reload the link and update the existing imported geometry – if the same .sat file name was used. Another option is to save the existing work and create a new Revit project, this way they can refer back to the different options. Note: Also, Revit’s Design Options feature could be explored, a team member could place several mass forms in their own option set / options, for more information on Revit Design Options see Help Documentation.

10. In Revit, the image on the left is the original shape before reloading the linked .sat file. Image on the right is the new form; you’ll notice the divided surface and curtain panel component have been remapped. Note: remapping of divided surface, floors and walls may not always update and you have to reapply - this is dependent on how much the linked geometry has changed.


Also, note that the mass floor schedule has updated to the changes made from the new linked geometry. In this workflow example, we have demonstrated how a team can leverage both solutions: Rhino & Revit Architecture, to quickly come up with several schemes at the conceptual / schematic level and utilize the tools in both applications for the exploration of several building forms and understanding the floor areas for each building form.


In the next post, we will discuss creating components in Rhino for use in Revit families.

Joe Kendsersky is an Autodesk Green Beret who gets parachuted into customer offices to smooth over the bumps on their road to BIM victory. This job is also referred to as “Customer Success Engineer for Revit Architecture”. One of his major roles is to insure the success of new and existing customers as they move from pilot to production and provide Autodesk with deep insight into product usage and customer experience. Joe is trained as an architect and joined Revit Technology in 2000, and subsequently Autodesk in 2002. Since switching into the software industry, he has continually worked to aide in the development of Revit and enjoys sharing new knowledge with all users.

Back to Part 1, Forward to Part 3, Part 4

Joe K: Working with Rhino and Revit, Part 1


Buildz is very pleased to welcome back Joe Kendsersky for more posts full of tips and best practices in Revit.  This will be a series of four posts dealing with importing and managing geometry from Rhinoceros, McNeel and Associate’s popular nurbs modeling platform.   Joe works at Autodesk as a Customer Success Engineer for Revit Architecture.  He is trained as an architect and joined Revit Technology in 2000, and subsequently Autodesk in 2002. Joe is a wealth of information about what it going on in offices as well as what is being developed in the factory.


The purpose of this series of posts is to cover some of the different workflow options between Autodesk Revit Architecture & Rhino and discuss topics that we should take into consideration when using both applications.

First, let’s make a general differentiation between both programs:

Rhino is a tool that specializes in free-form, non-uniform rational B-spline (NURBS) modeling and has gained a lot of popularity in the architectural community because of the Grasshopper plug-in for computational design – allowing designers to analyze and quickly iterate several building form options.

Autodesk Revit Architecture is a tool designed to integrate BIM, were building elements (walls, floors, roofs) have relationships between with other. In Revit we are assembling an entire project as it were going to be built, documenting it, leveraging the ability to quantify components and, most importantly, making real time design changes.

Choices you have to make:

Which tool is best to use and when? Can both tools work together? What should someone start off with when beginning a project? It comes down to what the users’ design goals are and what they are trying to accomplish. You could imagine several different scenarios such as creating specific family components (furniture, curtain wall elements) in Rhino to be scheduled in Revit or making a building form in Rhino to host and associate building elements (wall, floors) in Revit or even exporting the context of a Revit project to model specific elements like a complex roof in Rhino to then be re-imported into Revit. Both of these applications can work well together side by side as long as the team knows what they are trying to accomplish.

Here is a brief example of using Revit and Rhino together. The image below represents a free form exterior building envelope created in Rhino.


The geometry from Rhino can be used in Revit Architecture – the image below is a exported .sat file from Rhino inserted into a Revit Mass family template.


Finally, in Revit Architecture we can load the Mass Family geometry into a project and associate building elements (walls, floors) to the Rhino geometry, document the design and quantify components.


In the next post, we’ll discuss some different workflow scenarios between Autodesk Revit Architecture & Rhino and how we can leverage the power of both tools.

Forward to Part 2, Part3, and Part 4


Or is it a Flail?


Milo:  Papa, can we make some weapons?

Papa:  Sure, Honey.  What kind?

Milo:  What’s that spikey ball on a string called?

Papa: A “mace”?

Milo: Yeah! Let’s make one of those!

Parametric Mace ala Vasari

Barbarians Beware.  Download the item from here


Parametric Design Patterns: Index


Revit is generally thought of as a documentation tool, a medium for expressing a complete design ready for construction. At its core, however, it’s a change engine, a relational database with a 3d front end. Its entire structure is around relationships and the constant reassessment of those relationships based on ongoing alterations of design intention and constraints. Forms are (or can be) a result of associations, not the cause. Generally this engine is used to allow for ongoing or last minute alterations of designs to directly percolate to construction documents without the need for costly and imprecise revisions. The same technology can be used throughout a project to create models that reflect fairly abstract relationships and ideas.

In Robert Woodbury, Onur Yuce Gun, Brady Peters, and Roham Skeikholeslami’s book Elements of Parametric Design, the authors explore what it means to work/design/model/transform in a medium that is about CHANGE. Their thesis is that parametric thinking is an old method of designing and that computers simply enable this methodology. In typical CAD packages it is easy to create lots of geometry, but it is very difficult to change geometry. It is this shifting and changing of data structures as a response to intentions and performance requirements that makes for great design tools, and is the backbone of parametric design.

Woodbury discusses 14 patterns as significant conceptual tools in the execution of parametric designs. Each of the patterns is a discrete illustration of a set of associations that result in geometry. Woodbury’s examples are drawn from Bentley’s Generative Components, and they have been reproduced in McNeel & Associates Grasshopper plugin for Rhinoceros by Tsung-Hsien Wang. I am re-presenting Woodbury’s patterns in Revit (and its smaller cousin, Project Vasari) to demonstrate the power of the platform as a DESIGN tool in addition to being a DOCUMENTATION tool.

Below is a list of links to the patterns, with images next to the ones that have Revit/Vasari examples. I haven’t attacked them all yet, and so far I’m only addressing the ones that can be managed without coding. I will be updating the list, but for the ones I have not yet addressed, there are links to Woodbury’s site.


“Use clear, meaningful, short and memorable names for objects.”


“Control (a part of) a model through a simple separate model.”


“Drive change through a series of closely related values.”


“Build simple abstract frameworks to isolate structure and location from geometric detail.”


“Use proxy objects to organize complex inputs when making collections.”


“Produce a transformation of an object in another geometric context.”


“Make an object respond to the proximity of another object.”


“Change an object's form by translating and/or rotating its rigid components. “


“Organize collections of point-like objects to locate repeating elements.”


“Use a function in a new domain and range.”

2011-02-23_2252_002Recursion 1, Recursion 2

“Create a pattern by recursively replicating a motif.”


“Re-present (abstract or transform) information from a model.”


“Change an input until a chosen output meets a threshold.”


“Select members of a collection that have specified properties.”


Parametric Patterns IX: Mapping



“Use a function in a new domain and range.”

I’ve done some previous posts on this sort of work in the past, and it bears repeating.  Revit/Vasari handles equations quite handily, after you get the hang of unit conversion ( something like casting for you computer science types).  Generally the problem for users is figuring out how to get the math the translate into geometry. While there are both abstract (surface, line plane based) methods and more concrete (say, laying out a variable height grid of columns), I’m going to demonstrate the more abstract.

Sine and Cosine



“Use sine and cosine functions in complete periodic cycles.”

In this example I am going to build on the sine curve that was built in this tutorial first posted Dec 26, 2010Open the file from here to start this tutorial.

Making A SIne Wave

The above tutorial shows the basics for hooking up a sine wave, or really any formula, to drive down into the most basic Revit/Vasari geometry, the point.  The result is a family that is “smart” in a very particular way, it can translate an x coordinate into a resulting y coordinate for a particular equation.  Then you can uses this tool inside an adaptive component that will, through 3 pick points, define the start of a wave form (origin), the end (or range) of the wave, and the height of each wave (amplitude).  Numerical controls are created that allow for control of how close together each wave is (frequency), and where along the wave you begin your calculation (translation).

The following rather lengthy video doesn’t really reproduce the examples shown in Woodbury’s samples, but it does address the spirit.  The idea is to flexibly create variations of a formula driven piece of geometry.  The family that is created in this video allows for users to move around a sine wave in various ways.  If my math was a little better I could have better fidelity to the GC examples.

Mapping a Sine Wave

And a little more video footage, this one is just playing with the resulting family to create a roof form.

Wave Based Roof

Download the sample files from here.


Parametric Patterns VIII: Point Collections


Point Collections

“Organize collections of point-like objects to locate repeating elements.”

Revit and Vasari’s  handling of point collections is a little uneven.  For regular 2d collections (points arrayed along a plane or surface), the Divided Surface functionality makes collecting and organizing points almost trivial.  Non-regular distributions require a little more work, using Intersects.  1d collections (points arrayed along a line or curve) get a little hacky, the best way I have is to use the Divided Surface functionality on an extrusion made from a line.  3d collections (points arrayed in a volume) are pretty much the domain of API plugins or fairly manual processes. 

Another note on Divided Surface, and one that is often confusing to folks: surfaces are only broken up into rectangular grids.  Now, this does not mean that you are only able to create rectangular distributions, there are pre-baked templates for triangles, octagons, arrows, etc.. The requirement is that the distribution of elements along the surface need some underlying rational that finds 4 sided cells at it’s base.  For example: a hexagon can be expressed from a collection of 6 rectangles, as with this pre-baked template


or 2, with this  math driven version


or even 1


All depending on your needs.  Heck, you can do a Celtic Knot or Gothic tracery with a rectangle (for all your Renaissance Fair clients and bad powerpoint templates)



But I digress.

Most of the examples shown by Woodbury are very achievable with basic divided surface functionality.  Volumes, as I mentioned, are difficult to achieve, and I won’t show any examples for these.  Volumes either need API or some cumbersome manual manipulation which make for dull videos.  Another difficult, but not impossible, affect to achieve through existing functionality is creating complex relationships between points such as identifying a set of points and connecting each one to another set of points.




“Simulate a whorl of water or air.”

Point Whorl



“Place a sequence of points along a spiral.”

This example builds on spiral formations covered in a couple other posts, primarily a tutorial on creating a spiral path, but information on Incrementing helps too.


Points on a spiral

Download example files from here


Parametric Pattern VII: Placeholder


“Use proxy objects to organize complex inputs when making collections.”

I bypassed this pattern at first, as it is mechanically quite simple in Revit and Vasari to achieve, but there are some good reasons to get into when and why you might want to use it.

Individual loaded family instances can be pretty cumbersome to manage, and when flexing large models it can be time consuming with even moderately complex families if you have many instances.  It can also help to simplify your larger assemblies of complex geometry for the purposes of diagraming, or export to external fabricators of consultants.

Revit and Vasari families, while potentially vessels for all sorts of information, can be useful by their absence of information.  Sometimes you just want a family to give information about origin and direction, or be the outline of a space that you will think about later.


This example only shows placeholders for divided surfaces, but the same process can be used with any loaded family.  This method can be used placing complex Adaptive Components, where a light weight skeleton is first used, or setting up incremented geometry like the ones shown here.  You can see another example of this kind of lightweight placeholder and substitution method in this frantic video, where I use a line based 10 point adaptive component to lay out a large form before replacing the whole assembly with more complex solid geometry.

Download the example file from here.


Parametric Patterns VI: Increment



“Drive change through a series of closely related values.”

This is a technique that has been employed in various forms in Revit for a number of years.  The basic idea is that you have a loaded family that contains 2 things:

  • a piece or pieces of math that describe a shape or geometric change (ex, 15 degree rotation, sin(x))
  • an integer value that places the family somewhere within the shape or change described by the math.

The classic Revit incarnation of this is the twisty tower, this one by Vincent Poon:


Each horizontal slice is  a single loaded family with an integer instance parameter.  The integer tells the family where it should be in the order of slices, and formulas within the family tell each slice where it should be and how it should be configured.  For instance, the family might have an offset from the ground plane and a rotation.  Instance #3 would be 3 times a 10’ offset and 3 times a 15 degree rotation, which would put it 30’ off the ground and at a 45 degree rotation.  Instance #4 would be 40’ and 60 degrees, etc, etc.  If you haven’t seen this presentation by Vincent Poon, Phil Read, and Matt Jezyk from Autodesk University 2007, you should do so right now.  Many secrets, including this one, will be revealed, at high speed.

More recently, William Lopez Campo wowed spectators conjuring up this piece of geometry in 20 minutes using the same technique and some crazy formulas.


In all these instances, the drudgery comes in the placing and numbering of many instances of a family.  This is pretty manageable with 20 or 30 instances, but kind of a hassle for larger numbers.  Once the instances are placed, there is a huge amount of flexibility in what you can do with the families.

[Edit:  I have made a couple of tools to help with placement and numbering of many instances.  Read this.]

Snail Curve
Snail Curve


Circular and Conical Helix

Create various spiral forms:  This video dissects a more complex family that relies on the basic incrementation principles shown in the Snail Curve video, but used in the context of a more generalized tool.


Download sample files from here