Step 2 · Framing Geometry

Drive framing lines from a controller point on the grid, then place points along each line to host adaptive components.


Overview

Create framing geometry — lines hosted on the point grid — that defines the location points for the adaptive components in Revit. By the end of this step you will have:

  • Created a point controller to dynamically modify the lines.
  • Created the framing lines.
  • Created points on each line to host adaptive components.

Objective 2.1: Create a point controller

Continuing from the previous step, place a Point.ByCartesianCoordinates node. Add two sliders and connect them to the x and y inputs, adjusting each slider's Max so you can move the point near the middle of your point grid. For the cs input, connect the CoordinateSystem.Rotate from Step 1.2 so the controller shares the same coordinate space.

The controller point's node setup, sharing the Step 1 coordinate system.

A controller point you can move around the grid.

Group these nodes and add a meaningful title.

Objective 2.2: Create the framing lines

Now create the framing lines, using the distance between the controller point and each grid point to drive each line's length.

Place a Geometry.DistanceTo node. Connect the Point.ByCartesianCoordinates point grid from Step 1.3 into the geometry input, and the new controller point into the other input. This returns a list of doubles (decimal numbers) — one distance per grid point — which will define the length of each line.

Geometry.DistanceTo returns one distance per grid point — the length of each line.

To create the lines, use the Line.ByStartPointDirectionLength node:

  • startPoint — the Point.ByCartesianCoordinates point grid from Step 1.3, so the lines depend on the grid.
  • direction — a Vector.ZAxis, so the lines rise vertically.
  • length — the output of Geometry.DistanceTo.

Adding a value to the z input of the controller point ensures every line has at least that minimum height.

Each line's length is driven by its distance to the controller point.

A dynamic array of lines is generated, the length of each determined by the proximity of the controller point. Because each length depends on each grid point, the list structure is preserved, so every length maps effortlessly to its line.

The framing lines rise from each grid point, growing longer with distance from the controller.

Group the nodes when you're done.

Objective 2.3: Place points along each line

Finally, place points dynamically along each framing line — these will host the adaptive components in Revit.

Place the Curve.PointAtParameter node. Into its curve input, connect the Line.ByStartPointDirectionLength node. For the parameter input, supply a double between 0.0 and 1.0.

A point placed at the same parameter on every line.

Each line carries a point at the same proportional height, forming a new elevated grid.

Group these nodes to complete this part of the exercise.