Step 4 · Adaptive Components

Restructure the point sets into sub-lists of four and place dynamic adaptive components in Revit.


Overview

Create a new data structure — a list of lists where each sub-list holds the four points for one adaptive component, sequenced to match the component's adaptive points — then use Dynamo's Revit node library to place the components. By the end of this step you will have:

  • Created the data structure of points required for the adaptive components.
  • Placed the adaptive components using Dynamo's Revit node library.

Objective 4.1: Build the data structure

You need a 2D list (a list of lists) where each sub-list contains four points in the same order as the component's adaptive points. Most of the work was done in Step 3; here you restructure those point sets into the required arrangement.

First, flatten the pointA, pointB, pointC and pointD sets with the List.Flatten node. Flattening collapses a list of any rank higher than 1 down to a single 1D list, which simplifies combining the points. Place four List.Flatten nodes and connect each point set's List.DropItems output into one.

Four List.Flatten nodes, one per point set Flatten each of the four point sets to a 1D list.

To build the sub-lists of four points, use the List.Combine node. Place it and use its + button to add input ports to match the number of List.Flatten nodes, then connect the flattened outputs into those ports. Order matters — lists are ordered collections, so the inputs determine the order of points in each sub-list.

List.Combine taking the four flattened point sets

The comb input takes a combinator — a function telling Dynamo which node to apply to each set of items. Because we need to build new lists of points, use List.Create as the combinator.

Place List.Create and connect it into the comb input of List.Combine. Dynamo maps the combine inputs to the function, producing the required data structure: a list of lists, each with four ordered points aligned to the component's four adaptive points.

List.Create wired into the comb input of List.Combine The combinator builds sub-lists of four ordered points.

Objective 4.2: Place the adaptive components

With the family loaded into your project, add the Family Types and AdaptiveComponent.ByPoints nodes from the Revit node library. In the Family Types node, select the Bimorph adaptive component from the list, and connect it to the familyType input of AdaptiveComponent.ByPoints.

Next, connect the List.Combine output into the points input of AdaptiveComponent.ByPoints, and group the nodes.

If every step has been completed successfully, Revit now shows a double-curved roof structure built from adaptive components — one you can control dynamically from Dynamo. Try moving the controller point or rotating the coordinate system and watch the whole roof respond.

The completed adaptive components forming a double-curved roof in Revit The finished parametric roof, driven live from Dynamo.