# Divided Surface of In Place Mass

Hi again!

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

I can’t do anything with the mass created.

Also, it seems that we cannot create Mass In Place with Dynamo.

Could there be something similar to this? Instead of making the floor/slab follow the subregion, it makes the Mass-in-place follow the topography

What are the possible workaround that I can do for this?
What are the nodes or packages that I can use for this?

There is no way to create an in place mass.

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.

1 Like

True that!

Here’s the Revit Project file with the Curtain Panel and Topography
See if you can try it out

1 Like

2020 format? Was planning on an uninstall for that build this afternoon, but I guess I’ll hold off a bit longer.

Will check it out shortly.

1 Like

It’s alright !
I have Revit 2023 as well
Just using 2020 because kf previous project

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

1. Select the topography you want to put the pattern onto.
2. Get the bounding box of the topography you want to apply the pattern to.
3. Find the maximum dimension of the bounding box by creating a vector from the min point to the max point
4. Scale the maximum dimension by 1/2, and negate the Z component.
5. Move the min point of the bounding box by the scaled vector to get the center of the bounding box.
6. Get the distance of the maximum vector and divide by `[-2,2]`.
7. Get the primary direction of your pattern by picking a line in the model and pulling it’s geometry.
8. Get the direction of the line picked, and normalize the vector (scale it to a length of 1)
9. Scale the normalized vector by the divided lengths from the maximum distance (step 6)
10. Move the middle point of the bounding box (step 4) by the scaled vectors (step 8).
11. Draw a line between the two points created - this is the curve showing how you your will apply.
12. 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.
13. Use a Curve.PointsAtSegmentLengthFromPoint to get all the series of points representing the corner of the tiles on each line.
14. 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).
15. 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.
16. Take every other point, and every other row to generate a series of ‘quads’
17. flip every second set of pairs, flattend the list, and use the point sequence to place your adaptive component with an AdapativeComponent.Bypoints node.