Sunday, July 28, 2013


I have to admit that my first reaction to Marcello's scaling methods was to raise objections.  "How practical are they really?"  "Aren't you overstating your case a bit"  "Yes, very clever ... but ..."  Seemed a bit mean spirited though, so I had a go at the "Tuscan Column by Spline" challenge.  (see this post)  Not a big success ... but it jolted me into a much better understanding of basic Revit splines.  What once seemed a somewhat clumsy tool has become a little gem.  Actually this applies to many features of Revit's standard drawing toolkit.  Full of hidden gems.

But back to Marcello's scaling tricks.  I'm beginning to think he's a bit like Autodesk: very prolific, good at marketing, always up to something new ... :-)  So what should we do when the tools we get from Autodesk disappoint ?  Complain ?  Whinge ?  Write insulting remarks on an internet forum ?  Marcello himself would say something like "thanks for the gift, now I'm going to bend it to my will"  In other words, he's thrown out some interesting ideas.  Some of them will fly, some of them may bomb.  Doesn't matter.  Grab a hold of one and see where you can run with it.

So following on from my curtain wall screens, I started to think about linear repeating details. You know the kind of thing.  Egg and dart mouldings, classical balustrades, dentils, faience string courses, cast-iron facade panels. Lots of applications.

These things take a little while to model, and invariably you change your mind about the scaling of the design somewhere along the line.  Also you might want to re-use that detail elsewhere, but in a different context.  The edge detail for a table is scaled differently from the eaves of a Greek temple, but they could both contain egg & dart.

No I am NOT a big fan of fake classical, or whimsical period charm.  Some of our clients insist on lots of decorative detail, usually islamic, but I grew up with the modernist tradition really.  However, I am deeply interested in our built past, and I love to use Revit as a research tool for better understanding buildings of architectural note around the world.  That would be my main motivation for developing better ways of modelling this stuff.

So I set out to use the line-based Generic Model template and embed a double-nested planting family in it, similar to the curtain wall technique.  This turns out to be fairly easy.  You need to get your head around the fact that scaling of planting objects is based on height, whereas a line based repeating module will rely on a Length parameter to control spacing.

I dealt with this by having a factor which captures the ratio between "Module" and "Height".  Once again there is a lot of linking of parameters right down the nesting chain to the original planting family where the geometry is modelled.  It's a bit of a brain-teaser first time around, but once you have it working then you can repurpose the family as many times as you like with relatively little effort.

My first attempt was a balustrade.  Previously I have made these with the railings tool, which is fine, but rescaling is a bit of a mission.  You need to open up a baluster family and edit each of the revolves and extrusions, one by one.  Then adjust the spacings in the railing family, separately for horizontal and vertical.  This all gives you much finer control than simply scaling the whole thing up, but it's not the fast, responsive tool that you might want during early design explorations.

My line based family is very easy to use.  Two parameters control spacing and height, all the rest is automatic.  You might say that balustrades don't vary much in height, so why all the effort to make them scale automatically ?  Well actually this kind of classical detail is used in various contexts.  It might be a capping detail to a low wall  (400mm high ?) , or it could be a small detail on top of a wooden screen (150mm high ?) or it could be the roof line to a prominent public building (2m high ?)  I think scalable is useful.  Getting the top rail to scale up is easy enough.  Take advantage of the inbuilt scaling of splines.  All good.

In a new situation I can use one I made before and scale it up or down to suit.  Later on I might revisit the geometry of the embedded component, but at least this technique gets me up and running in a jiffy.  Quick, responsive early design with smooth continuity of workflow as we progress to detailed design and fabrication. Once again, after you've set one of these up the rest are straightforward.   So I had to do an egg & dart.  The modelling itself is a little bit tricky: solids & voids, swept blends, a revolve, couple of extrusions.  Not bad for a first try.  Scales a treat.

You just have to drill down to the original planting family.  Replace the 3d geometry.  Load back, load back, load back.  Give the line-based family a new name, you already have types with different sizes.  Just adjust & rename these to suit the new geometry.  Second attempt is a running freize, Greek style interlocking key pattern.  Piece of cake.

At this point I started to wonder about "Sectioning".  Planting families don't section (likewise Furniture, Plumbing Fixtures etc)  Generic Models do.  So what happens with the double-nested planting geometry inside a Generic Model.  Works fine.

So what about VG ?   Hide the planting category.  The planting geometry nested inside a Generic Model is still visible. Great.   Applying a material to the planting category in Object styles does affect the nested geometry but that is easily over-ridden with a material parameter.  All in all these line-based families have enormous potential.  Much more so than the Curtain Wall method IMHO.  Curtain Walls with double nested panels have to be an exact multiple of the module in both directions.  You need to disallow wall joins, otherwise you can get some unintended strange effects, overlapping panels, rows of little baby panels along the top,  Still potentially useful, but not as robust as these line-based items.

I set about attaching my egg & dart planting object to an inclined ref plane (within the planting host) and adding a running moulding ( a sweep within the line-based family)  Required a few equalised ref planes to get the sweep profile to scale up proportionately.

I added a bead & reel running ornament below the egg & dart, not universal, but very common.  Just a series of revolves.  It's worth thinking about all the parameter linking you would need to make an assembly like this scale up with the module of a line-based family if we didn't use the double-nested planting technique.  I'm sure it could be done, but not without some sweat and tears.

Here it is, all rigged up and ready to go.  This is a front elevation of the line-based family.

I think it's time to do a bit of rendering, and of course to put the scaling through its paces properly.

There are many versions of the egg & dart.  It's easy to imagine that Classical Architecture works to a formula, just because there are many recognisable themes and it all seems to "belong together".  But as I have remarked before, if you look closely, you soon realised just how much room for interpretation there is.  If you want to stay within the spirit of the Renaissance, then "cut & paste" should have no place in your thinking.  So after browsing through my collection of photo references I set about another version of egg and dart.  This time I stayed more faithful to real-world methodology.  To make an egg & dart moulding in wood, you start by running an ovolo (quarter round)  So I took a quarter-round sweep (actually quarter ellipse)  and cut the edges off with a void extrusion.

Next came a half-elipse void to cut out the hollow where the egg will sit.  The egg is also a part-elipse revolve.  And the dart is made by taking a second sweep, similar to the first but smaller.  Once again use a cookie-cutter void to trim away the edges.

The result is a repeating element which has a more horizontal proportion than my first version.  The dart is more elaborate, with an arrowhead below a circle.

Load this up, make a few types, use the material parameters and we're ready for another render.

Weekend wasn't quite over, so I thought I would try a row of dentils.  Now these can be just simple rectangular solids.  No need for the DNP trick in that case.  Probably better to use X,Y,Z parameters and retain the ability to vary the proportions.  But quite often there is some elaboration of the shape.  I chose one from the Opera House in Graz.  ( I was there last christmas visiting my Grandson)  This time the sweep is a separate element, a wall sweep in fact.  One of the drawbacks of the line-based families is that they don't mitre at the corners.  Wall sweeps handle mitres with ease.

So there is my basic dentil.  Double-Nest it and put it in a line-based family.  You can vary the size and the spacing independently using the scaling factor that previously allowed me to accomodate differently proportioned egg & dart modules.  And one final render to take us home.  I'm not quite happy with the window-head detail.  It would probably look better with a little bracked at either end framing the dentils, but I ran out of time.  At least it illustrates the ease with which these families can be re-sized.  And once again I found that my ability to manipulate splines is becoming more fluent every time I set up a new moulding profile.  Using scale, stretch, rotate and nudge to vary the proportions of the different segments in a complex moulding.  The hidden joys in Revit's 2d drafting tools never cease to amaze me.

Thursday, July 25, 2013


Smile.  Some quick images following on from yesterday.

The topic is curtain panels that scale automatically.  The restrictions are you have to keep to the original proportions and the curtain wall must be a whole number of panels in both directions.

The advantages are : changing sizes on the fly even with complex geometry.  Take the following "swiss cheese" example.

You could make this without the double-nested planting families.  And you could edit the extrusion sketch manually, scale it down, save as a different name, reload into project.  It would only take a few minutes, but it's a less fluent way of working.  I'm backing the double-nested technique for situations where you want to play around with the size on the fly, experiment with design ideas quickly.

The next one is similar.

I guess you could even make this one parametric, but it would hardly be worth the effort.  Double-nesting is easy once you've set up the first panel and linked up the parameters the way you want them.  This is more of a tool for designers than documenters IMHO.

The speed advantage becomes much greater once you progress beyond a single extrusion.  The next example would be a real pain to resize multiple times by conventional methods.

Using double-nesting I created all three examples from scratch, including rendering and image processing in a couple of hours last night.  I only set up 3 different sizes for each panel design, because that's what I reckoned would show up clearly in a single image.  I could easily have created 10 different sizes for each though in a matter of minutes.

I have more on this.  Some egg & dart mouldings for Paul to salivate over :-) but that will have to be on Sunday.  Right now it's way past home time on a thursday afternoon, it being Ramadan and all.  So time to hit the weekend here in the Gulf.  Enjoy the cheesy designs everyone.

Wednesday, July 24, 2013


Lots of people to credit here, but I'll point the finger at my good friend David Light and this recent post.      EMPIRE BIM

Each to his own, and as it happens I'm not particularly addicted to Star Wars. Maybe it's a generational thing.  But if you've followed this blog for any length of time, you'll know that I do have a thing for Musharabiya screens.

Make a new family, starting from a "Planting" template.  Go to the front elevation, use reference planes to mark out a square.  Mine is 1m x 1m. Make an extrusion within this square.  I started with something pretty boring, impatient to see results.  Nest this into another planting family & position at the origin (centre).

Nest the host planting family into a curtain panel family.  Again place at the centre.  Place a height dimension and make it a reporting parameter.  Mine reported 4m.  In type properties, set the height of the planting family to match this measurement.  It will scale, as all good double-nested planting families do.

Load into a project and make a curtain wall type with square panels and no mullions.  You need to size the wall so that there are no part panels at the edges.  I used an 800x800 panel and made the wall exactly 4 modules high by 7 modules long.

Set the panel type for this CW family to the panel family you have just made. Bingo.

Now try halving the module.  Just change the height & width parameters in the curtain wall definition.  All the panels resize like a charm.

Once you get the idea, it is easy to do some recursion.  Select a panel and unpin it.  Use the type selector to replace the panel with a wall type.  Choose a curtain wall with half the module size.  One panel becomes four.  Repeat this procedure to make ever smaller cells.

One of the drawbacks of this kind of blanket scaling is now revealed.  The panels get thinner.  We are back to CAD-style dumb scaling.  The whole idea of parametric modelling was that you had separate control over different aspects of a component.  Change the size of a door without scaling down the door frame or ending up with a non-standard thickness for the door leaf.  In our enthusiasm for clever new tricks we tend to forget these fundamentals.

So what if I wanted all the panels to have the same thickness ?  There is a way, and it's not too hard.  Go back to your original "nested planting" family.  Add a thickness parameter to control the thickness of the extrusion.  Define that thickness as "Height / Thickness Ratio".  Load back into the "host planting" family.

Link the "Thickness Ratio" parameter of "nested planting" to a matching parameter in "host planting".  Load into the curtain panel.  Link parameters again.  Now you can create different types with different "Thickness Ratios"   Basically if you know that the panels is half the size, just halve the thickness factor and the thickness will match the larger panel.

You can achieve subtle variations of thickness now, it is no longer totally dependent on panel height.

I went on to make a few more panels.  This is very easy once you've set everything up.  Just change the name, edit the original extrusion, load back, load back, load back.  Set a curtain wall to use the new panel.

This is the fastest method I have yet found for making a variety of screen designs with a module size that is easily adjusted.

One big drawback though.  You can only have whole panels.  No cutting and shaping at the edges.  Forget it.  Best I can think of is to make all the cut panels separately as Generic Models and place them one by one.  If there are part panels in a horizontal row, Revit will give you baby panels centred, with gaps between, as in the image below.

So it's an interesting technique but time alone will tell whether it will be useful on real projects.  Maybe for early studies where you are experimenting with module sizes.  Then once the module is fixed make families similar to the ones in my second ever post


We are still using these.  Done solid service on several projects.  But changing the module size is a bit of a pain. Not too bad, but can't be done in a matter of seconds like you can with the planting version.  So once again, the best method for early design may not be the best method for construction documents.  No surprise there.  Always been the case.  6B pencil versus 4H.  Work smart, be flexible.

Sunday, July 21, 2013


Studying hard & hoping to pass.  Story of my life, kudos to Chuck.  I was lucky enough to see him twice during the 70s. Three times if you count sitting through  the whole show twice in Sheffield.

Back to the "Scalable Rectangular Rig" which I still regard as one of my best ideas ever.  A couple of months ago I realised that I could use it to generate curves based on a formula.  In short: graphing with X & Y axes.

It's just another feature of the "normalised curve parameters" that report the position of points along the line that hosts them.  The horizontal rungs slide up and down driven by the values Y1, Y2. Y3.  Previously I have always placed the points that define the curved spline by eye: nudging them around until I get the curve I want.  But it is very easy to label them as X1, X2, X3 and link them to their Y equivalents by way of a formula.

Of course you still have the ability to scale the rectangle up and down, plus vary its proportions with a "width factor" variable.  And by adjusting the formula you can also vary the shape of the curve.

One obvious application would be to revolve the curve around an axis.  Then you have a nice form-finding rig capable of generating a wide variety of forms.  In a way it's similar to the glass onion I posted about recently, but this time it's more controlled.

Not quite up to Zach's current Dynamo "hobby" but a small nod in the "computational" direction none the less.  And easier to set up, ... for me at least.

The original motivation for this was my recent paper on 3 buildings, prepared for RTC Auckland.  I was trying to simulate form-finding explorations for the Gherkin.  A series of systematic variations on the basic concept

As usual it all boils down to isolating a few key variables which control different aspects of a shape.  It helps to vary them one at a time.  It's a mass family of course with instance parameters, so you can make lots of copies, insert mass floors and explore different ways of achieving the same GFA.

For the  RTC session I also explored the spiral floorplates of the Gherkin in a bit more detail.  I;ve said it before & I'll say it again.  If (like me) you are interested in History of Architecture, Theory of Design or just How things Work ... then a BIM authoring tool like Revit is an amazing aid to research

Thursday, July 18, 2013


More circular rigs, or at least " use of circles in rigs".  Most of my rigs to date have featured planar paths (splines in a flat plane) used to host profiles.  I have favoured this approach because of it's simplicity (as in the old adage "keep it simple stupid")  Parametric form finding is only going to be useful if it's user friendly.  Too much complexity and people will revert to direct free-form modelling.

One approach is to hide some of the complexity under the hood.  Display three or four main controls up at the top & bury the rest deeper down.

So how do we escape from the flat plane ?  How to make a spline that twists around in 3d space ?  One approach would be to make a box and divide it up with a 3 dimensional grid.  I may well try that later, but it struck me that circles might reduce the clutter.  Let's say we want 5 points arrayed in 3d space to define the path of our spline.  The length of our object can be considered as a straight line & each point defined by an angle and a distance from this line.  Hence the circles.

So:  New Mass family, 2 ref planes equalised & with a Length parameter.  Place points where these new planes cross the existing axis (centre front/back)  Spline through points, & flex to check that the points move when the length is changed.  Change the line to a ref line & place 5 points along it.  Make their planes "always visible" & draw a circle on each.  Give the 5 circles Radius parameters.

Place a point on each circle. select these 5 new points and "spline through points"  Hey presto a twisty 3d spline.  For "total control" we need 3 parameters for each point.  These will define the following:

Position   (of the circle along the original staight line)    P1, P2, P3 etc
Angle   (of the point on the circumference of the circle)   A1, A2, A3 etc
Radius   (of the circle, already done)  R1, R2. R3 etc

The positions are values between 0 & 1 (Normalised Curve Parameter)  Select each point that hosts a circle & associate its NCP with an instance parameter.  For the Angles, select the points on the circumference of each circle, change the "Measurement Type" from NCP to Angle & associate parameters.

The rest is a matter of rigging up "Master Parameters" in order to "Keep it Simple".  Length is fine as it is but I would like the circles to scale up automatically when I increase the length.  Then I would also like to have a "Straightness" control.

How can I make "Length" automatically generate a scale factor ?  First of all add a number parameter called "Scale", then make it equal to "Length / 500mm".  I chose 500mm because this gives me a scale factor of 100 for the family as originally drawn.  Remember this scale factor will vary depending on the length I type in for each instance in the project.  I won't be setting the Radii directly.  They will be set by input values * scale.  I'm going to use F1, F2 etc for the input values & I want these to be easy read, let's say values in the range of 1 to 150.  With a scale factor of 100 that will generate circles of 100mm to 15m  which is about right.

Now I can add a "Straightness" parameter.  (originally called slenderness, but I changed it later on)  This will reduce all the circles at the same time.  Bigger numbers mean "more straight" so I want to add "divide by Straightness" to my formulae.  Just set the initial value of "Straightness" to 1 so that your initial spline is the default.  Radius formula now reads:

R1 = F1 * Scale / Straightness

Flex a few parameters to make sure it's all working properly.  Then it's time to load a profile and thread a few onto the spline.  I chose the one from my Brasilia Cathedral form-finding experiment.  It's just a triangle with 2 flattened edges.  Add 5 points. hosted on the curve "backbone" spline.  Make the workplanes "Visible : Always"  Place a profile on each.  I had to rotate my points 90 deg.  and adjust the profile sizes.  Then select the 5 profiles plus the backbone & create form.

Now you can play around with the Angles & Radii to see how this affects the form.  Later on I decided to add a "Slenderness" parameter.  This works just like Straightness, but this time it controls the width of the profiles.  Set up 5 parameters (W1 to W5) linked to the width of each profile.  Then control these by formulae.  For example, if a profile 5 has an existing width of 9m the formula will be:

W5 = 90mm * Scale / Slenderness

I visualised this form as a sinuous roof to an open air exhibition space / cafe.  Loaded into a project it was easy to make a roof-by-face & choose "Sloped Glazing" in the Type Selector.  Adjust the settings for mullions etc.  Along one edge I made a wall-by-face to represent an edge beam.  On the other side a made some walls using the Tangent-End-Arc tool which makes it easy to a draw sequence of smooth curves.  Placed a few round columns to support the beam, some topo & paving, a few flat people & off we go.

Now I could have made this roof using an in-place mass and "3 freehand" splines.  But the whole point of this is to explore "Form Finding"  This implies a controlled exploration of variations on a theme.  So I made a few copies and played around with the parameters.  The first row of 4 demonstrate the 3 main controls (Length, Straightness, Slenderness)

It's child's play to scale the whole roof up by say 5% without distorting the shape, just type in a new length.  Using the freehand method, it can be frustrating.  You have a form that you like, but when you lay out the cafe tables it's not big enough.  Not so easy to scale it up without distorting the shape.  Similary if you decide half-way through that the curves are too sharp (maybe there's too much twist on the glazing) it's a chore to adjust the freehand version.  You have to adjust the 3 splines separately and try to maintain the smooth flow of the shape.

I'm not saying my method is "always better".  Sometimes "quick & dirty" is the right approach.  But it's worthwhile learning how to make parametric forms & thinking hard about how to set up master controls.  The "Inner Logic" that you define may well show up in the resultant form.  And if you want to make 3 or 4 elements that read as variations on a single idea, the advantages are obvious.