I’m trying to create a walkway with Herringbone surface.
I’ve created a Curtain Panel family for the Mass-in-Place rectangular divided surface, it looks just right.
Now, I want to make it so that the Mass in place follows the shape of a topography.

I tried creating DirectShapes to make Conceptual mass, but this doesn’t give me the flexibility to divide surface in the project, which is the crucial part of creating the pattern

Also Topography in Revit is always triangulated, which means that your pattern would have to map over all the triangles produced.

Civil 3D is a better solution for this task as it’s entirely designed to do such work with surfaces. Barring that you could try and build a mass family using a sweep or swept blend or loft. I can try and look into that this afternoon if you have a data set to share.

I would look into doing this in a very different way to remove the difficulties which you’re facing around topo.

Select the topography you want to put the pattern onto.

Get the bounding box of the topography you want to apply the pattern to.

Find the maximum dimension of the bounding box by creating a vector from the min point to the max point

Scale the maximum dimension by 1/2, and negate the Z component.

Move the min point of the bounding box by the scaled vector to get the center of the bounding box.

Get the distance of the maximum vector and divide by [-2,2].

Get the primary direction of your pattern by picking a line in the model and pulling it’s geometry.

Get the direction of the line picked, and normalize the vector (scale it to a length of 1)

Scale the normalized vector by the divided lengths from the maximum distance (step 6)

Move the middle point of the bounding box (step 4) by the scaled vectors (step 8).

Draw a line between the two points created - this is the curve showing how you your will apply.

Offset the line from one less than -halfMaxDistance to one more than halfMaxDistance (step 5), stepping by the tile distance (in design script, -n-tileSize..n+tileSize..tileSize;). These are the lines between each set of tiles.

Use a Curve.PointsAtSegmentLengthFromPoint to get all the series of points representing the corner of the tiles on each line.

Take the topography you want to put the pattern on, pull the geometry (topography.Mesh) and convert it to a polysurface (Mesh.ToPolysurface from springs).

Project the points on the Z axis onto the polysurface using a Point.Project node, or by drawing lines from the points to on the Z axis and intersecting the lines with the polysurface. The points should still be in a ‘rows’ format at this point.

Take every other point, and every other row to generate a series of ‘quads’

flip every second set of pairs, flattend the list, and use the point sequence to place your adaptive component with an AdapativeComponent.Bypoints node.