Monday, 9 June 2014

Zero Length Lines in Revit Are Possible

I always learn something new about Revit at RTC - and RTC Australasia 2014 in Melbourne was no exception.
This time I learnt two new Revit Repeater tricks - both from Helen Gorina from the NY office of Perkins+Will, in her Lab "Applying Math and Logic to Facade Design".  These tricks have led me to understand more about adaptive components and repeaters.

Schedule Panels on a Facade

The first trick I picked up during a description of how to automatically schedule facade panel column and row numbers.  This was done using Repeaters on a divided surface - using adaptive component "Jigs" as a series of locators placed on the divided surface nodes.  Each of these jigs had several adaptive points linked with model lines and reporting parameters used to track the X and Y locations of the components on the grid.

Last year I posted a similar technique for scheduling column/row numbers that involved a lot of trigonometry - this was done with a single repeater across a rectangular panel.  Helen's technique is a lot simpler and more elegant, and involves far less maths - it requires creating separate repeaters for each row (so it is perhaps less flexible if the grid changes).  In order to direct Revit to create a repeater in one direction along a row of divided surface nodes, you need to place two adaptive components in a series - as I have described previously (see diagram below).


When you have multiple point adaptive components, Revit will only place repeater elements  where it has a suitable series of adjacent nodes.  This often means that you get missing edge conditions on the repeaters.
Sample 2 point repeaters from my previous blog posts
If you want the series of components to be of different lengths, as this technique requires, you need to place the two initial adaptive components appropriately to indicate the relative change required
For the scheduling technique, you actually need the first adaptive component in the series to have a zero X value so that it knows it is in the first column.  So, what Helen did is to place the reporting "Jig" component with two of its adaptive points (measuring X distance) placed on the same node;  the second adaptive component was placed on adjacent nodes, so that its X distance measured one column width.  I am not describing Helen's technique in full here - you'd need to attend RTC for that.  What I am interested in here, is that in learning this new trick of coincident adaptive points to generate a zero length reporting parameter, it became apparent that Revit is doing something I thought impossible . . . . .

Zero Length Lines

If an adaptive component has multiple adaptive points, and those points are joined by model lines or reference lines, you would think that when you use the adaptive component, Revit would not let you place the adaptive points in the same location because that would mean zero length lines.   You would think wrong!  Revit allows this without a squeak of complaint.
Revit most assuredly does not allow zero length lines in traditional families - they break when you try to place them such that line length gets too small.

If you have solid forms attached to the lines or adaptive components, then Revit will not allow zero length lines where that would mean zero length edges - it breaks as you would expect.

This is an interesting Revit inconsistency that you can use to your advantage when you want to be able to report zero lengths (and base calculations on them).

I'll talk about the second trick I learnt in the next blog post on Repeater Instance Parameters