Thursday, 28 March 2013

Doesn’t matter, had array.


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.

No comments:

Post a Comment