An Improved Transformer

As I suspected! A simpler, more robust solution to the scissor arm transformer is achievable with a little trig.  Thanks to Aristide Little-Lex for the insight, you da man!

Pythagorean scissor arm by Aristide Lex

Download the family from here.


Sine Wave with 2 Points


In preparation to do a little more on sine waves in a later post, here’s a quick demonstration of how to make an equation visible using 2 points and 2 parameters.

SineWave with 2 points
Download the file from here

For more things to do with this family, like making formula driven curves, check out this post.


Parametric Patterns V: Transformer


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

Square Shutter

“Use polygons with right angles as a shutter.”



Square Shutter
Scissor Arm

“Model a scissor mechanism, that is, an arm whose horizontal extension is controlled by its handle's vertical movement along a line.”


There is probably an easier way, and I think it could just involve using regular family lines and parameters with some trig, but I‘ve shown it here with a bunch of nested adaptive components using a drafting mentality. 

How to make the scissor
Scissor flexing. Soundtrack by Cimota God.

Download the rfa files from here

[Edit:  Here’s is an alternate/improved method supplied by Aristide Little-Lex]


Make your own tools: Parametric Arc by 3 points


There are aspects of all software that will fall short of what you want to do. So the question often comes up about how to make your own tools?  Revit does not have a point hosted arc, which can make for aggravation when trying to make complex geometry.  This tutorial shows how to roll your own.

Constrained Arc by center

Download the adaptive component from here


Parametric Patterns IV: Projection


The Ramones changed rock with recombinations of 3 or 4 cords and we have arrived at Pattern 4.  Therefore, even the beginning Vasari/Revit user should now be equipped to make a parametric “Now I Wanna Sniff Some Glue”, although you might have to sniff some glue first.  [Note, neither Mr. Kron, Buildz or its subsidiaries endorse the sniffing of glue.]

The ideas I’m translating here are kind of raw, they aren’t in themselves projects, but they can be the underpinning drivers for real projects or sets of relationships that you might take on in a project.  One of the fun things that happened a couple days ago was seeing an opportunity to recombine some of these patterns into something new.  (You can combine the Post Shadow pattern shown below with the Altitude/Azimuth Controller pattern to create your own geometric Sun Path, I’ll do a separate post on this.)


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

Shadow Casting


“Simulate a row of posts casting shadows on the ground as a light moves by.”

Shadow Casting
Surface Sampler/Spotlight


“Project a collection of points onto a surface.” & “Model a metaphorical spotlight projecting a circle shape onto several surfaces.”  For this example I combine a couple of the exercises.

Surface Sampler
Pinhole Camera


“Model a pinhole camera.”  A pinhole camera uses a very small hole in a surface to create a projection of an object.  This projection alters the scale and inverts the target.

Model a Pinhole Camera, with apologies to the Ramones

Download the datasets from here.


Parametric Patterns III: Reactor



The continuing saga of translating Parametric Design Patterns to Revit


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

Some of this functionality has been covered in the posting on Jigs.  The functionality as accessed through the UI really only became possible in Revit 2011, with the creation of Reporting Parameters.  This special kind of instance parameter allows a family to react to the specific context in which it was hosted.

Vector Field

“Rotate a bound vector as a controlling point moves, so that it always has the same angle to the point. Replicate to define a vector field.”

Vector Field


Circle Radii and Point Interactor

“Control the size of a set of circles by proximity to a point.”

Here is a quick video showing the same kind of operation, but instead of using the out-of-the-box functionality in the UI, I have a small plugin that detects the distance between a target element and a curtain panel instance and writes that distance to the panel.  This allows for scaling the operation to a larger field.

Circle Radii and Point Interactor


Vector Field.rfa

Circle Radii and Point Interactor.rfa

Distance to Panel Plugin and instructions

Further Reading:

Using the distance to panel plugin


Parametric Patterns II: Jigs


One thing that is becoming clear to me in doing these comparisons with Grasshopper and Generative Component examples in Revit is that you need to spend more time EXPLAINING how to make them.  The advantage in GC is that there is code to refer to, and if you know code, you can read the results.  In Grasshopper, the process of making elements is so thoroughly abstract and hierarchical, that you can basically read the diagram as a flow chart. 

The examples in Revit are like reading a series of drafted plans.  If you see the finished product, it is not entirely clear how it was arrived at.  The best way to examine such a document is to watch as it is made.   


“Build simple abstract frameworks to isolate structure and location from geometric detail.”  I have plenty of examples of this sort of work, and a full tutorial on one of the versions the Woodbury demonstrates that I will repost here along with a new one.



“Use the local properties of a curve to determine the local radius and orientation of circular Jigs. Use the circles to define a tube. In turn use a curve as another Jig to apply a global form to the tube as a whole.”

Tube Jig



“Use a moving point to smoothly move each of a collection of points, which, in turn, define a surface.”

I did this exercise several months ago, and I’m reposting the video.  I love this family, it’s really fun to play with.

Download the files from here:

Lift Pincushion Jig

Tube Jig


Parametric Patterns I: ClearNames, PlaceHolders, and Controllers


Welcome to the first post where I sink my teeth into Robert Woodbury’s Parametric Design Patterns. As I mentioned in the previous post, I’ll try and address all 14 topics, and I’m going to start with the easy ones. I’m going to use Project Vasari and Revit pretty interchangeably, as the same things can be accomplished in either.


This is really more of a friendly suggestion than anything and doesn’t really need an example. The basic idea in ClearNames is that you should name your parameters, controls, familys, elements, anything that you have an option to name, with something that is meaningful. For instance, don’t name an offset parameter on a point something like “point”. You will likely add lots of points, and this is far too generic. Also, don’t name it “the point parameter that creates an offset to the big purple dinosaur” as this cumbersome. ‘Nuff said.


“Use Proxy objects to organize complex inputs when making collections.” This concept is also wonderfully trivial to illustrate in Revit or Vasari, because just about anything is already a placeholder for other things by default. One family can be swapped for another family, forms can be edited to swap lines for curves. We will touch on this a little more as a background to dealing with jigs, but the essence is to represent your complex details of a larger project with minimalist elements to keep your model light and understandable. I might try and revisit this idea, but for now, let’s move on to juicier stuff.


“Control (a part of) a model through a simple separate model”. This is where Vasari can really have some fun. Most of the time folks who are trying to flex models are going back and forth to properties pallets and dialogs to create transformations in the model, but it doesn’t have to be like this. If you take a few minutes to set up simplified geometry in your 3d working environment, you can have a lot of fun, make lots of decision and test many alternatives with the swish of a mouse. Watch the videos (only the first has narration, double click to watch on youtube at full screen) and download the control examples from here:

Equalizer Controller

With the Altitude/Azimuth controller, look at hosting conditions. Ref lines are hosted on top of ref lines to create very stable angular relationships.

Altitude/Azimuth Controller

The Multiple Circles example uses 2 divided surfaces with only one set of gridlines. A trick: the surface itself is ever so slightly non-planar to make the UV coordinates behave properly. If it was planar, you would get a very unsatisfying grid.

Multiple Circles Controller