## 20110226

### Parametric Patterns X.1: Recursion, encore

Ha, a little recursion joke there . . . sorry

I’ve been messing around more with Steven’s methods for creating recursion and finding some really simple, interesting and flexible methods that live within it.

#### Conceptually and Actually simple to set up

This is the most iconic example I can think of

And damn if it isn’t easy to make!

Simple Recursion

#### Performance: Simple and complex models

Complexity in these models doesn’t effect performance in a linear manner, but it seems exponential.  However, there seem to be 2 kinds of complexity, geometric and parametric.  On a relatively brief examination, geometric complexity, having more form elements and rigging, creates much less slowdown than additional parameters.  For instance, this model with only 2 parameters and a nested shared family with sweeps and blend regenerates in only a few seconds

but this one, with only model lines but with 8 parameters (some of which don’t even get used) takes over 2 minutes to regenerate.

#### Shared Families, using Placeholders

Key to the setup of the basic recursive structure is having 2 identical unshared families, each nested into each other.  There is a lot to discuss and understand about the difference between shared and unshared families, but for the purposes of this exercise, let’s just describe the difference for this application.  Unshared families act in relative isolation in nesting relationships.  That is, an unshared family can be operated on in the family that it is nested into, but is virtually undistinguishable from regular geometry once the host family is loaded into yet another family.  Shared families however keep percolating back up to the top in successive nesting operations, and retain their own “identity” if you will.

Recursion with Placeholders

This persistent rising to the top is interesting for recursion, as it creates an opportunity to plant a parametric seed at the root of a recursive system.  This allows you to nest and intelligent placeholder inside a simple skeleton of recursion, and later come back to make changes to that placeholder.

#### Triggering Events during recursion

When I showed  my friend Lira the basic tree she asked: “can you put leaves on it?”

The answer is a resounding “YES!”  In this example, there is a shared family that has a reporting parameter that detects when the family has gotten shorter than a given threshold.  At that point, a piece of geometry that has a visibility parameter is triggered.  The logic is “if  the stem length is less than 4 times the size of the leaf, make the leaf visible”

## 20110223

### Parametric Patterns X: Recursion

We at Buildz are very happy to welcome Steven Register for today’s lesson in recursion. I had given up on this pattern thinking that it was unattainable without the API. However, Steven opened my eyes and hopefully now he can open yours too. -Zach

[I've added another post on Recursion here.]

#### Recursion

“Create a pattern by recursively replicating a motif.”

The original intent of this series was to address the parametric patterns Revit could accomplish without coding. Recursion is one of those patterns, though, that I initially thought could only be done through Revit’s API. Though the API is probably the best route to take to do recursion, I still wondered if it could be done without it.
So my thoughts were like this:
· From my coding side I know that recursion means to have a piece of code call itself a certain number of times.
· Could a piece of Revit geometry “call” itself?
· Hmmm…
· From the old AutoCAD days I remember having problems with circular xrefs “calling” themselves.
· Eureka! Nesting!
· Recursion has depth and so does nesting! They are basically the same concept. Yes!
· Wait… will Revit have the same kinds of circular reference issues? Let me test.

Well, through my testing, I found a way to get Revit to do circular referencing without errors (although regeneration can be slow, so the API route is probably better).
So below is a video based on the dendritic/tree example from Woodbury’s site, but doing it in 3D in Revit (and without the coding from that example). The basic idea is to have 2 identical families with different names that get loaded into each other over and over again. The family in this video does require a small bit of trigonometry and Revit formulas to get the geometry the way I want, but you can do simpler geometry with no formulas for your own families and still use the nesting method that is demonstrated.

Recursion Part 1: Creating the Family

Recursion Part 2: Nesting the Family

So the summarized family recipe from the video is:
· Make one family (make sure it is not Shared) with some parameters, and then save as to make another (with a different name) with the same parameters.
· Then load the 2nd into the 1st, position it, and map the parameters of the nested family to the host.
· Save then load the 1st into the 2nd, position it, and map the parameters of the nested family to the host.
· Then just keep alternately saving and loading them into each other to get the recursion depth you want.

Steven Register is an unusual mix of Landscape Architect and Revit/BIM Manager. His training and practice in both Landscape Architecture and Architecture and his knack for all things IS has given him that strange brew. Since 2000, he has been titled a CAD\BIM Manager, but temporarily left that role in 2005 to begin using Revit for his own Landscape Architectural practice providing residential design services as well as 3D as-built and surveying services. In 2006 RTKL enticed him back into the BIM Management thing as the Applications Administrator for their Baltimore office where he currently provides Revit training and support for AE staff as well as Revit and AutoCAD API development for the firm.

## 20110221

### Mmm . . . tasty Nucleus form finding

[Edit: Nucleus is no longer available in Vasari since it went to Beta]
Vasari 1.1 has the Nucleus cloth simulation add-in natively available in the mass family environment.  This is a first pass at incorporating a really powerful physics engine developed by the folks at Maya into Revit/Vasari via the API.  It takes advantage of only a portion of what can done with this tool, but it’s pretty interesting to see these sorts of shapes and interactions live in your BIM.
Basic Nucleus Workflow
[Since recording that video, meltedwellyface helpfully pointed out that the default 9.8  “gravity” value “is 9.8m/second, the rate at which a body falls due to gravity at the surface of the earth.”  Which makes my cranked up simulations more applicable to something like Jupiter, I suppose.]
Now that you have the basics, lets do something that stresses the system a little.  This video shows how to add a collider, and then some hacky ways to detach your resulting geometry from the plugin and do other operations on it.
Nucleus Frosted Donut
One other caveat: There’s an unfortunate bug that Nucleus constraints don’t work with the metric template that shipped with Vasari 1.1.  The workaround and replacement metric template that can be download from here.  As always, proceed with caution with the labs previews.  Wear your hardhat, this a construction zone.

## 20110215

### Vasari 1.1

A freshly baked update to Project Vasari is available now for download.
What’s new? [Edit: Nucleus is no longer available in Vasari since it went to Beta]
• Metric Templates
• Text Notes
• Work Sharing File Protection
• Export to STL for 3D printing
• Ecotect Wind Rose
• Ecotect Planar Solar Radiation
• Nucleus physical phenomena form finding
I’ll do some posts in the coming days about how to abuse these new features and make them do things they weren’t designed to do.  Stay tuned!

## 20110213

### Sister Ray-trace

“I couldn't hit it sideways
Ah, just like Sister Ray said” –Velvet Underground, Sister Ray

“Don’t know what I want but I know how to get it” -Sex Pistols, Anarchy in the UK

I saw this image the other day in Jane and Mark Burry’s  excellent book The New Mathematics of Architecture and thought: “I can do that.  I don’t really know what it means, but let’s figure out a good story.”  Something about acoustic optimization, reverberation time, blah blah blah.

With this solid methodology in place, and unencumbered by any real knowledge, I put together this little tool that works as a generalized one bounce raytracer.  Key to the construction of this family is this assumption of an ideal reflection of a ray.  That is, an incoming ray is perfectly reflected off a surface relative to a normal line from the surface.

Sister Raytrace

Hammer in hand, I went looking for a nail.

Acoustics: Auditorium seating

Start

Glare:  The Vdara “Death Ray” Hotel, by Vinoly Architects

Sports:  The Alley-Oop

Download the 2 pick raytracer and example files from here.

## 20110211

### Joe K: Working with Rhino and Revit, Part 4

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

Revit to Rhino and back to Revit:

So far we have gone through two specific examples on how to leverage the power of both tools. In the next example we’ll explore a case where a new Revit Architecture project was started but a team member hit a road block trying to model a free form building skin.

For this case, in Revit, we’ll export the entire 3d context of a project and import it into Rhino as a reference to model geometry and then later re-import back into Revit.

1. In Revit Architecture, open a 3d view and prepare for export by turning off categories that we do not need to export in the Visibility / Graphic Overrides. Now, from the application menu go to Export > CAD Formats > .dwg Files the Export CAD Format - Views / Settings dialogue will appear, if needed adjust export options. Note: make sure to use a common origin point before modeling

2. In Rhino, create a new project to import the .dwg reference data from Revit. In Rhino, we can use either Insert or Import options. File > Insert > select the .dwg.

Now, make sure to check the units under Tools > Options. Note: be mindful of origin placement when exporting / importing, to make it easier to realign the geometry afterwards.

3. In Rhino create your geometry using the referenced .dwg exported from Revit Architecture as the context. In this case we created a solid paraboloid and used a few boolean operations to carve away from the solid and rounded out the edges – as illustrated in red. The imported Revit geometry is highlighted in yellow.

4. Once the geometry is completed in Rhino, prepare object for export to be re-imported into Revit Architecture: Rhino > File > Exported Selected > select ACIS > ACIS Export Type > Default. The geometry being exported is highlighted in yellow.

5. In Revit, create a new family. For this case we’ll select the Mass.rfa family file. The Mass family can be loaded directly into the project or create in-place Mass family. One advantage of In-Place Mass method is that we can use a workflow as outlined in the first scenario - in the beginning of this document.

6. In the Mass.rfa family, go to the Insert tab and select Import CAD and pick the .sat file.

5. In the Mass .rfa family, you can select faces of the .sat to divide surfaces and apply curtain panel pattern components. Using the new intersect tool we can divide the surface by using intersecting 3D levels, reference planes or model lines. For this case, we turned off V grids (vertical lines) and sketched some model lines on a ref plane and intersected the surface. This allows us to create our own pattern layout that may have a unique spacing. We could also add parameters to the dimensions to explore the results of different grid positions without having to re-sketch model lines.

Note: when using the intersect tool your gridlines need to create cells that have four sides.

7. We can now load the mass family in a project and use Massing tools to select Wall by Face from the imported geometry and add additional building elements to document the project.

In this example, we have demonstrated how you can export the context of Revit Architecture project to be used as a reference in Rhino to create geometry - to then be loaded back into Revit to complete a project.

In conclusion, we have discussed some different workflow scenarios and ways to leverage the power of Revit Architecture with Rhino & Grasshopper. The goal of this document is not to show case one solution over the other, but to demonstrate how they can work together for the benefit of the project. At the end of the day the priority is getting the client’s work out the door without compromising design intent by using the correct tool(s) in the process to make this happen.

I would like to thank my colleagues; Emmanuel Di Giacomo and Zach Kron for their input in creating this document.

Thanks,

Joe Kendsersky

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, Part 2, and Part3.

## 20110209

### Joe K: Working with Rhino and Revit, Part 3

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

Creating Components in Rhino for Revit Families:

In Rhino we can quickly create components that can be used as Revit families. We can import geometry into a Revit family .rfa that could be used in a project. Why would we do this? There could be several reasons:

· The makeup of the project team - a team member could be skilled Rhino user and can produce several components faster.

· It’s the first design iteration and the components do not need to be parametric.

· The component could have unique geometry and it’s easier to create.

· The design of the component is complete and will not be iterated anymore.

Some notes before we create an example. Be aware of the insertion point being used when importing geometry from Rhino to Revit, given there may be the need to swap out components and we would want to prevent shifting when reloaded into a project. The imported geometry behaves according to the Revit Family Category that is used. The graphic appearance of the component (projection / cut values) can be controlled in Settings > Object Styles > Imported Objects.

1. In Rhino set the units and determine a common origin point to begin modeling, I recommend starting at 0,0,0. Now, create your component, for this example I created table using extrusions.

2. Once the component is complete, prepare object for export: Rhino > File > Exported Selected > select ACIS > ACIS Export Type > Default.

3. In Revit create a new family, for this case we’ll select the Furniture family .rfa because we’ll want to be able to quantify the number of furniture components in the project.

4. Go to the Insert tab and select Import CAD and pick the .sat file exported.

6. We can now load the table .rfa family to use in a project. In this example, we have demonstrated how you can create components in Rhino to be used as Revit Family components.

Next we will discuss moving data from Revit to Rhino and back into Revit.

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, Back to Part 2, Forward to Part 4