Super-ish Shapes


Andrew Marsh did a post recently on supershapes, these wonderfully complex parametric shapes that vary wildly depending on 8 inputs.   Nathan Miller did a Grasshopper definition a couple years ago to create supershapes in Rhino.  I’ve been kind of distracted by these since I started to understand the math behind them and have some experimental first stabs in Vasari/Revit.  I don’t entirely understand the true mathematical definition of supershapes, but I do get the essence:   if you have an ellipse and you wiggle the perimeter, then you make a bunch of these wiggly ellipses and loft a form through them, you get some whacky stuff.


Try out the families if you are feeling masochistic (c’mon, admit it, you kind of like it).  They are super-unfriendly both in terms of understanding what levers to pull to get new result and regeneration times.  I haven’t broken out the 8 parameters into easy manipulators, hopefully I’ll get to it.  Basic idea is that the supershapesBuildz.rfa family has 600 loaded instances of incrementFam.rfa.  All the brains of the operation are in this family.  Each one of these families is simply a line that has 3 parameters that place it in 3 dimensional space.  The 600 instances are linked together into 10 profiles of 60 families each.  Each group of 60 is incremented 0-9 for parameter incrementZ, which places the family vertically.  Within each group of 60, each family is numbered 0-59 to describe a profile.  The 0-30 and 30-0 are connected by a spline through points. The profiles are then lofted together to either make 2 surface or one continuous solid, depending on what you want to do or how whacked out the shapes you make are.

By messing with the formulas in incrementFam.rfa, then reloading into supershapesBuildz  you can produce a pretty considerable range or shapes.  Many fail due to self intersecting forms, which Revit does not like (having 2 things occupying the same time and space is not very buildable) so you may have lots of blown up forms.  But don’t worry about that, as you can simply re-loft the profiles later or undo the load operation and try again with different numbers.

Download the base family from here.

For those who have been wondering, this turns out to be the mathematical definition of the Venus of Willendorf





back to basics: making a parametric cube

A quick demonstration of how to hook up geometry to dimensional parameters.

This is a basic exercise for folks new to Revit and Vasari.  I was explaining this to someone the other day and decided to just encapsulate the mini lesson here.

making a parametric cube


Rejected Software Concepts: Splash Screens

Not every platform gets to market.  Here are some of my favorites.


While there was clearly a demand in the Bimbro* and Laddie magazine consuming population, the product couldn’t legally be sold in the 7-17 year old emerging user market.  The Principle Software Developer left with the code in his head and built the in-house design platform for a large adult film set design and production company in Southern California.



A character animation package catering to the emerging hipster craze for lo-fidelity, paper-and scissor-cut-out style animations.  Preliminary test marketing revealed that potential consumers preferred paper and scissors.



An early attempt to capture the significant quantity of disposable income present in the goth-chic and tech savvy alternateen market.  The beta release was extremely popular on torrent sites where the source code was hacked and distributed.  The code eventually inspired an underground startup company somewhere in rural South Carolina and is reported to be making money by the truckload.

* A Revit user who will dis CAD to anyone within earshot.


Placing and numbering lots of stuff


What do all these forms have in common?







These are all multiple instances of single Vasari/Revit families with a parameter called “increment” changed.

In a previous post on Incrementing, I noted that the real hassle in creating these forms comes from the manual process of placing and numbering each instance.  However, I have 2 workarounds for folks who are interested in playing around with this method of form creation.

The first is a family named 100increments.rfa, which has 100 instances of a family placed and numbered from 0 to 99. 


The placed family is currently named incrementFam, type incrementFam, with a parameter called “increment”.  But if you have your own incremented family, you can simply change the name and type inside of incrementFamily inside of 100increments.rfa to your family’s name and, as long as your own increment parameter is named “increment”, you can load and overwrite the existing one with your own and, whammo!, you have 100 neatly placed and instanced versions of your own design.  If you only need 50 instances, delete some.  If you need more, use the second option.

100 placed instances

The second option is a script for Vasari 2.0 users.  This is a journal file that has a tiny vb script that will loop through placing a family of your specification n-number of times.  To use it, you need:

  1. to place the included increment_generic.txt files in the same folder with your family to be incremented.
  2. the last saved state of you family must be in the default 3d view.
  3. make sure your family is saved with its increment set at 1 or 0.
  4. edit increment_generic.txt in the text editor of your choice and set the family name, family type, how many placements you desire, and the name of the parameter that is to be incremented.2011-05-30_0816
  5. Drag and drop the increment_generic.txt onto your Vasari2.exe

Some things to think about with incremented forms:

  • Not just for twisty towers!  With the right math you can make spirals, grids, trees, etc.   Just about anything is possible, formulas are your friend.
  • Make larger forms first  and add detail later by editing the base family.  Start simple and add geometry or nested families once you start getting the general results you want.
  • BIM-up:  load your results into a Vasari .rvt environment to schedule, do energy analysis, or render your stuff.  Open it in Revit to add more detailed architectural elements like Walls, Doors, and Windows

Download the 100increments example files

Download the incrementing script