We recently put together a Dynamo dataset to test out some of its newer functionality. For this project (inspired by UNStudio’s Bologna Masterplan & Train Station), we were working with a structural system spanning from a level floor to an undulating roof, and we looked for ways to keep this system as one element in the Revit project:
This design creates a diamond lattice on the roof with one point of contact on the ground for each component. Since the form of the roof is separate from that of the floor, we looked to an 8-point adaptive component to define the shape of each element:
But here’s the problem with the above image: the geometry is not linked to the adaptive points. How do we get every control point of every surface to update within the domains of the box created by these 8 points? This would be time prohibitive with manual modeling, but with Dynamo we were able to automate the process.
In this demo, we’re using reference points and their normalized position along a reference curve. If we create an 8-point adaptive component, we can locate a point contained anywhere within a bounding box with 3 parameters representing tx, ty, and tz:
Using Grasshopper for Rhino, we selected the geometry and created a bounding box. Then, for each of the control points of the form, we found the tx,ty, and tz parameters within the box. These values are then written to Excel, with a row representing a polyline defining the form for Revit. On the Dynamo end, we’re instantiating these values as normalized parameters along a curve (3D diagram above), and creating identical reference curves for the form, linked to the 8 original adaptive points. Here’s the result:
There’s a lot going on up there, but minimizing adaptive points in favor of reference points has proven to be a lot faster when instantiating the family in a project. In this case, we can scale and morph geometry in Revit. The adaptive family can also be updated by incoming data from a more flexible 3D modeling program. Here’s a look at the family applied between two faces of a Revit mass:
And another example on a conceptual mass in context:
Adaptive components, in summary, can be characterized by adaptive points, offsets from planes, and normalized parameters on curves or surfaces. Creating normalized parameters in boxes would be a great addition to Revit (and would eliminate the need for all the extra reference lines and curves above).
There have also been some really creative workarounds within the constraints of the family editor (check out Marcello Sgambelluri’s presentation at AU 2013 or the Parametric Pumpkin Carving Contest on Buildz). But let’s face it, manually creating an adaptive component can be an exercise in tedium and confusion. Dynamo has a major value proposition here, allowing the generative creation of adaptive families. We’re looking forward to using Dynamo more in the family editor as well as the project environment.