Parametric Pattterns XI: GoalSeeker



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

The Goalseeker  begins by stating where you want the design to end, not how you want it to get there.  This is the one pattern that is pretty much impossible in Revit or Vasari (or Grasshopper, for that matter) without some additional coding.  Revit’s engine likes to string a bunch of elements and relationships together and accumulate the pieces into an integrated whole.  This is essentially a bottom up process, where the result is determined by accumulated relationships. Goalseeker is the reverse, where the result is determined and we need to sift through multiple paths to figure out how to get there. Or how to get close.

This is not an easy operation for most platforms, partly because the end result is usually an approximation of an ideal.  Finding the highest point on a hill, for instance, can be an eternal loop of finding points NEAR an ideal “top”, points that are infinitely ever-so-slightly higher than the last measured highest point.  To make sure that the process stops, you need to build in the concept of “good enough”, a fuzzy area that satisfies the human sense of “top” but not a computer’s impossibly precise definition of “top” .  Computers don’t usually like “good enough”.


In this example, there is a core Goalseeking engine, a python script authored by Aki Hogge, which simply manages an input, an output, a goal, and the differences between them.  What is done with these numbers is defined by good old fashioned family parameters. This allows the heavy lifting to be done by the specialized script, and Revit allows the user to generalize it’s application.

Enough talk, let’s take a look ( I recommend full screen).

Demonstrating a Vasari/Python Goalseeker

Woodbury writes that “Key to writing a working Goal Seeker is understanding how to build the desired measure into the system. Understand how the result will change with changes to the driver”

The interesting part for me is that the same script can be reused for many different applications. While it certainly will not satisfy every application (it’s pretty limited, in fact), it is remarkably generic and portable. That is, it can be used for all sorts of different measurement needs, so long as you just need an input, an output, and a set quantity to measure the output against.

The core of this pattern involves the discovery of base conditions that are now known, but an end state that is known. Usually in parametric modeling the reverse is true: you set up the relationships of pieces and welcome the surprise of a resulting condition. But with the goalseeker, you define what you want the outcome to be and let the algorithm figure out how to get there.

Download Goalseeker python script and sample files from here 

Read how to get started with python scripting in Vasari and Revit here.


Python Scripting in Vasari 2.1 and Revit 2012


It’s here! Daren Thomas has posted installers for RevitPythonShell for BOTH Revit 2012 and Vasari 2.1.

What does this mean?  You, dear reader, can now script live in a Vasari session using Python.  Behold!

Python in Vasari: Getting Started

The samples I’m showing are things that I am not capable of cobbling together on my own . . . I’m NOT AT ALL a coding person.   It’s actually my desperate hope that you will understand these concepts much better than I and do something cool with the tools. Keep an eye on Nathan Miller’s site, I’m sure he will have good stuff.   My Create Surface script is a simplification of his supershapes script posted here. Thanks to Aki Hogge for everything else.

I have tried a bunch of times to get through “Hello World” in both full Visual Studio and VSTA for Revit and each time just failed miserably. I’ve had much more success with this tool and can see a way to actually progressing in my API education.  So if you have tried and failed with the Revit API in the past, give this a shot.  Here’s the text version of how to get started:

RevitPythonShell for Vasari in 5 minutes:

All the samples run in Mass.rfa files, GoalSeeker uses the Goalseeker example files.  It all works in either Vasari or Revit.

To monkey with the scripts live, just open them in an editor (notepad works, I’m sure there are way better ones) make changes, save and then run again in Vasari.

There’s no official SDK or documentation for the Vasari API, but it is essentially a slimmed down version of the Revit API, with detail model elements and such removed. 


3rd Annual Parametric Pumpkin Carving


It’s the most wonderful time of the year!  Air is getting dry, I get to wear my old-guy cardigan, and the grape arbor in the back yard makes my house smell like the Manischewitz-pocalypse.  And of course the king of vegetables, the venerable Cucurbita mixta, or common American Pumpkin, begins its turgid climb to seasonal culture dominance!

And YES!  The 3rd Annual Parametric Pumpkin Carving!  Break out the napkins, start sketching your concepts.  It’s time to understand the inner soul of pumpkins.

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

We at B.U.I.L.D.Z. LLC, pDq are platform agnostic.  Submit entries from whatever platform you are comfortable in:  Blender, Catia, Revit, GC, Sketchup, Rhino, 123d, sumi-brush, spirograph, whatever. Our factory judges will look into your pumpkin’s soul and decide if IT is worthy, not your tools.

Along with receiving bragging rights, the winners will have their work showcased on these pages to TENS of readers 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 brew yourself a steaming mug of Kopi Luwak, turn on your high-performance NeXTcube, and make a performance based, LEED certified, direct-to-fabrication, cloud computed, optimized, and/or object-oriented 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 file, please send a link or let me know and we can work out some kind of upload.  Show how flexible and open-ended a carved vegetable can be.

Make good stuff!


Vasari 2.1 Wind Tunnel: 3D Analysis


The Wind Tunnel analysis available in Vasari 2.1 is mesmerizing. 


. . . I think my building is going to suck pedestrians off the sidewalk.  Mwah-hahahaha!

For basics on how to use the functionality, check out this link.

Now, a couple other things I like to consider when jumping in on this tool: 

  • Use 3d analysis for more robust results:  2d is fast, but only takes a small area of your model into consideration


  • Let the analysis run for a while before really looking at it: crunching voxels is hard work, and  you wanted to get some coffee anyway.


  • Pause your analysis before exploring it:  Moving around the data slice and using other methods of visualizing the analysis is where the fun comes in.  This takes computing power, so you’ll want to stop analyzing and start visualizing.


The default behavior is to use “2d analysis”, which is very fast to calculate, but only takes into consideration the winds and geometry of a flat plane. 

This is what I get after only a few seconds using the default settings on my model.


Now, this is fine, it gives you a good starting point to understanding your model.  But with my corkscrewing geometry, I’m pretty sure that I’m getting a vigorous 3 dimensional churn, probably a big rush of wind coming up from the innocent victim trap plaza.  To take this into account, you need to check the 3D Analysis button.


This is where you will jump from “real time” to something more intensive.  For instance, on my 8 core machine, I popped on 3d analysis, waited 4 minutes, and had this


Notice how most of the area around the model is not very differentiated? This is because my computer is just beginning to process all the voxels.  With that one button push I go from 15,626 2d cells to 1,515,625 3d cells being analyzed.  But you can also see the spiraling death vortex turbulence area that I suspected would form in the recessed area of the tower.  Mwa-hahahaha!

8 minutes after start:


20 minutes:


After about 40 or 50 minutes my simulation started wavering back and forth between this


and this.  


At which point I say “good enough” and pause the Real-Time Analysis:


Which allows my processors to go from this:


to this:



So with the analysis paused, I’m freed up to explore the model.  If I left it still processing the data, it wouldn’t leave much of my poor machine’s brain power to manipulate the views, like scrubbing the XY slice up and down, or better yet, playing with the 3D Volumetric controls (more on that in another post).

One quick thing I can do is look at various slices of the data.  If you go to the 2D Grid slice tab, changing the 3d Axis will give you this:


Now compare that with my nearly immediate results from the 2d analysis’ vertical slice


You can see that there is certainly a relationship between the 2d and 3d analysis in terms of directionality and relative intensity of the wind velocity. But you can also see some significant differences.  For instance, let’s adjust the Data Display to have the same Minimum/Maximum range displayed:


Going from an initial range of 0 - 102 m/s, I change the 2D analysis to match my 3d analysis of  0 - 32 m/s


So this is more of an apple to apples comparison of 2d to 3d:


Lots more to say on this functionality, we haven’t even looked at this stuff:


. . .  stay tuned.

Animated Slices


Sign up for AU 2011 Classes

I’m co-teaching 2 classes this year, a Lab with Robert Manna from Stantec (recently Burt Hill) and a Lecture with William Lopez Campo from HOK.  Registration is open . . . what are you waiting for!

AB4391-L Twice Baked: Creating Your Own Adaptive Components and Panels with Autodesk® Revit®

Class Audience

Designers, modelers, and staff who work with Revit and Revit users who are familiar with adaptive components who want to achieve a higher level of mastery.

Class Description

This hands-on lab builds on the topics covered in last year's "Au Bon Panel: Baking Your Own Adaptive Components and Panels with Autodesk Revit Architecture." Revit 2012 has introduced the ability to place adaptive components directly into projects, which opens up even more possibilities of what you can do with this powerful family modeling tool. We will address more complex topics, including using hosted points and shape handles, and will provide tips on how to make use of nested components. Our examples will include both the practical and perhaps not-so-practical, including how to use Adaptive Components as “design aids” (“computational” design on the fly). You will learn how to build “stuff” that behaves how you want it to and not how Revit thinks it should. So, come prepared, review the classes from 2010, and get ready for a whirlwind lab!

Key Learning
  • Understand the concept of “computational design on the fly"
  • Control the orientation and alignment of components
  • Understand how to use adaptive components and panels to create well-quantified designs, not just sculptural elements
  • Use nesting families to create complex adaptive components and panels

No guarantees, but here are some emerging thoughts on what we’ll talk about:

Image (16)

Image (17)


AB4700 You Want to Model a WHAT? Converting Real Projects into Parametric Relationships

Class Audience

Advanced users of Revit or users of other parametric design software who want to understand the same concepts in Revit; designers who want to create ideas that will drive BIM models; BIM support people who need to make designers' ideas buildable

Class Description

Designers are constantly faced with two related challenges: how to rationalize a form into buildable elements, and how to create geometric frameworks to represent design requirements. These problems are two sides of the same coin. In this class, attendees will see examples of how Autodesk® Revit® conceptual design tools have been used to transform ideas into reality by either “pre-rationalizing” a design based on requirements or “post-rationalizing” an existing design into manageable elements. Speakers will draw upon real-world examples and recognizable precedents. Case studies will demonstrate how very complex buildings can be addressed quickly and with standard architectural tools.

Key Learning
  • Recognize connections between computational ideas and architectural projects
  • Apply parametric design strategies to real projects
  • Rationalize a building form into a parametric framework
  • Create a parametric framework based on requirements

Again, no guarantees, but more thoughts on some of what we’ll talk about:

Image (15)

Image (18)

And you thought you were sooo original . . .


An interesting discussion is going on concerning Evolute’s patent on freeform surfaces in buildings consisting of planar quadrilateral or hexagonal faces. This isn’t a patent on the process to create them . . . it’s for the whole category of resulting built forms. Check out the summary of the patents here (and don’t be afraid to read the full patents too).

Also see these links:

What do you think? Look at the forms below, do they count? If there is math underlying the form, is it freeform? Have you made something that qualifies?

J. Gribl’s Hippo House, Berlin, with Schlaich Bergermann and Partner, 1996. While it looks organic, is this “freeform” ? It’s actually a “translational surface”, so I’m not sure if it qualifies.


Some Gehry . . . surely freeform, but not planar, just expensive.


Eladio Dieste, Church circa 1960. Nice and wiggly with many many flat quad faces. But actually they’re ruled surfaces, and there isn’t a support structure.


A patio in Massachusetts, circa 2005. Probably the closest example of freeform with planar quads, but again no support structure.


In the end it isn’t so much about proving pre-existing art (are there examples between 2000 and 2007 at least?) but is it CONCEPTUALY o.k. to patent built forms? Isn’t it more appropriate to patent the process that attains the geometry? But what if the inventor of the Television patented the process of creating the TV, rather than the outcome? And what is “freeform”? Are there any precedents for this specific kind of building pre-2000? 1990? 1900? Are we able to separate “CAN you patent that?” (which is a legal question) from “SHOULD you patent that?” (which is a philosophical question).

I don’t have the answers to this, my gut tells me something isn’t right with patent law . . . but I also don’t think the implications are obvious. What do you think?