Terrain Approximating Flat zones

Hi Guys,
I am dealing with mountains again.
Is there a way to outline / with curve more or less flat zones of the terrain. With max slope control.

Say from 5 degrees to 10 degrees make flat zones.

See attached sketch.
If I can get a closed curve I can then just make a flat surface to form a base for design.

Thank you,

Site_Flat_Areas.gh (255.0 KB)

I can extract points of the mesh which have a small difference in slope angle. Meaning the areas are almost flat.
But how to connect them into islands of flat surfaces following contours?

So basically blue zones should be flat but on different heights.

Site_Flat_Areas_LD.gh (227.7 KB) If I understand well it is quite easy with Mesh Iso Splitting

1 Like

Thank you LD
It is what I need. Is it your custom C sharp component ? Is there a way to do it with native Grasshopper tools?

It is my custom C#, as it is a standard C# component, don’t whory there are no limitations.
It could be doable to make something similar but just for faces.
So you have to measure the angle of each face and then keep just the faces that have a normal less than X°. Then join the mesh. Then disjoin the mesh.

Site_Flat_Areas_LD.gh (228.4 KB)


Cool thank you it is what I need.
I can then select all points of naked edges and create smooth contour lines of flat zones.

Hi LD,
How would you go about creating a simple curved (in plan) shapes. Almost like terraces from the contours. So it looks like simplified stepping areas with stripes about 50m wide?

I think what I have to do is to find a way to create a new contours projected on a terrain surface but so the contour line are spaced 50m between each other in plan.

Then I will be able to select them , offset and create stepping like platforms .

Maybe I have to Use surfaces and not a mesh?

Here is what I need to do.

  1. Exclude hilly parts from surface
  2. Create new contours - 50m apart
  3. Offset contours by 50m to create steps/terraces in less hilly areas

here is the sketch

Site_Flat_Areas_03.gh (247.6 KB) Site_Flat_Areas.3dm (19.4 MB)

this kinda thing

I almost managed to split an existing surface / topography based on slope angle.
For this I was using LD custom C#. But I definitely doing it wrong as to create sections of different slope ranges I have to create a new mesh every time.

Need a little help …

Also surface split is terrible as there is almost no way to sort a list and cull required items ? Is there a better way?

Site_Flat_Areas_03.gh (267.1 KB)

Searching for the reference of the image you provided I found theses videos.
Could be useful for your problem

Cheers LD. Useful link. He basically use Rhino to split his surface ))
Which looks much easier then trying to do it in Grasshopper.

btw does your component can work with multiple values as a tree ? one branch is a collection of 10 degree angles , second 20 and so on . So I can get split lines for multiple angles ?

The component in this discussion is for multiple iso splitting

Thank you. I think I found an easy way to do it.

  1. I create an analytical mesh where Z value equals to angle between normal and vector Z
  2. I then slice this mesh to get contours for different slopes degrees
  3. I project these curves back onto original NURBS surface and split it

The only question I have how to sort these surfaces relative to the original angles I have specified when created contours , and give them different colours?

Site_Flat_Areas_03re.gh (228.9 KB)

Not sure I didn’t make a mistake. But the logic is there.

Site_Flat_Areas_03reLD.gh (235.3 KB)

1 Like

Cool thank you.
I have another idea how to make it with Galapagos :)) will try tomorrow

Yep, logic looks correct, and I tried to follow it. I am training to separate spited surfaced in different branches of one tree by angle ranges.

No luck so far :woozy_face:
Site_Flat_Areas_03reLD.gh (232.0 KB)

I think it similar to this… but I believe I have to find a way group my points relative to angles as angles taken from surfaces are not exact .
I think it is more like

  1. sorting points
  2. grouping them with angle ranges. For example all points which fall between 0-10 degrees one branch
    10-20 second and so on
  3. Sort list of my split surfaces using these groups and BANG !!!


Still not sure I am doing it right, but It looks like found a way to group vertexes by their angles…