Array. Kind of.
I’m
taking a break from profiles – yes, already. In particular, that parametric rig
took a lot of work, and there was a lot of failing. So much failing. I’m not
quite ready to talk about it. But to business - if you’re anything like me,
you’re upset that there is no array within the massing environment for Revit or
Vasari. Sure, there’s that wee little ‘p’ that allows you to repeat an adaptive
component over a divided surface – it’s everyone’s darling right now, but
seriously Autodesk come on. Frustratingly (or Tantalizingly, I can’t decide)
Revit2012’s array icon in particular remains selectable until you get within arm’s length of
any model geometry. All behold the terror:
However,
not all is lost, there’s still a way! Ish. By nesting a rectangular (or
other-wise) curtain panel, we can create an array-able family that can be
hosted onto a divided surface. Then all that is required is the adjustment of
the surface in terms of U or V divisions (whatever you like) and the
curtain-array will repeat itself. Let’s go through this process using the
example that led me to this: an adjustable sine wave.
The
premise is simple, and really the most difficult bit is constraining the nested
component within the curtain-panel family. I didn’t even use an adaptive
component to nest with – it is a generic mass that contains model lines and
quite simple parameters. To constrain it, all you need to decide on is
which way you want the nested component to point, and then give the curtain
panel some basic flexibility so that it can be read and adjusted adequately
when applied to the divided surface.
So,
after having decided which direction your nested component/family is going to
point, you need to provide a reference plane to place it on. Using a curtain panel
family (rectangle - just to keep it simple at this stage), you can place points
at the midlines of the system reference frames and link via spline by points.
It’s important to remember that these panel families are adaptive components,
so your parameters and variables will need to always come back to the adaptive
points, otherwise you’re going to have issues with things not constraining
properly and blowing out.
You
then need to provide an adaptable dimension, so that the length of your panel,
and the length of your nested component/family can flex with a divided surface.
You’ll need to build this parameter into your nested component/family. In the
curtain panel, it’s simply a case of providing a reporting length/width
parameter that you can link to the nested parameter. Constrain it to the
reference plane, and one end to a desirable end (you can use the strong system
plane for this).
Make
sure you flex this one, it’ll most likely take a couple of go’s to get it
functioning properly, but it seemed to work well for this simple sine wave rig.
You can also rotate the divided surface by 90deg (in this example anyway) to
get things pointing in the right direction.
Cons:
Unfortunately,
due to the nature of this nest-host family relationship (and the fact that no
elements can be part of a group), you can’t have ‘instance’ parameters to
control everything placed on the divided surface. Your length/width (the
reporting parameter) can be, but this is ultimately driven by the surface
anyway. The nested family/component needs to be selected while on the divided
surface, and variables adjusted with ‘type’ parameters. This is slightly
frustrating, but in all honesty this is a hack and is imperfect in any case.