Create staggered slope from a selection of control points?


I have selected a number of control points as seen below. They are not supposed to be in a row, but like this.
I now want to create a slope from these points, by lowering the control points incrementally the further away they get (from the closest point in the picture). The lowest point (in the very back) should be 0,5m lower than the highest point (the closest one). I wonder if this is possible? Or is there another way to create slopes in surfaces?

Draw the slope as a curve and use the divide command to create points on that curve.
Bend an array of curves using the Bend tool or CageEdit.

Use grasshopper?

Thanks for the suggestion! If I understand you correctly, you are suggesting to to create new curves, and maybe then create a new surface from them?

My wish is rather to adjust the surface I am working on with new slopes. I am working on a 100x1000m area roughly and eqach of the squares in the grid you see are 2-3m wide.

As for Grasshopper, I am clueless about it, how to start it or what tools to use. Where does one begin? Is it easier to remodel a surface using it? Do you know any tutorial on it?

Didn’t realise they were actual surface control points. Maybe post the file…be easier to help.

Use a properly aligned CPlane and then use Shear command.

Here it is. You need to do PointsOn for the Drape-layer, thats the one that I want to create slopes in from multiple ControlPoints.
(4.6 MB)

Hi Elishah -You can make a little sloped surface and Project the points onto it (DeleteInput=Yes)


Thanks for the tip Pascal. The thing is, I think I need the control points to make a sloped surface with exact measures. Or is there another tool that can do the sloped surface with exact measures? Eg that the slope goes from 21 to 20.5 metres.

Hi Elishah - you can make the surface at any angle you like - for example, draw a line representing the slope and extrude the line to a surface.
Slope.3dm (165.8 KB)


Hey! I am not sure how to understand the file you sent me. I see two surfaces, and a slope in between them, the top of it touching the red surface. Did you somehow draw the red surface and then tell the program to create a slope up to it?

I already have an existing surface which I want to edit, so I do not understand how to adjust it by using lines and another surface layer. The only way I knew how to adjust the slope was with control points.

Note, I am new to Rhino so I don’t understand well how the programs work.

Hi Elishah - I’ll make you an example in a bit here and you can see if that is what you need.

Slope.3dm (598.4 KB)


That is amazing! This seem to be just what I need. Thank you for showing it!
What tools do you use to practically get there?

  1. Drawing a surface from lines
  2. Angling the surface according to a specific degree
  3. Projecting the control points

I will try to find the answers by googling as well.

Hi Elisah - I made an angled line, extruded it into a surface and projected the selection of points onto that. You can make the line horzontal in the relevant view and then Rotate it on one end point to the desired angle - probably the most straightforward if you are not familar with all of Rhino’s input trickery.

  1. Line
  2. Rotate
  3. ExtrudeCrv
  4. Project

Probably you should make your way through level1 and level2 training here,

plus any of the others on that page as well.


Thank you Pascal! I have almost made it. I am failing at 4. Project.

Below is the closed polyline I run ExtrudeCrv on. I choose a minimal extrusion distance (0.010001) since I just want a flat surface. It becomes a polysurface (upper right 2nd screenshot).

I tested using that polysurface to run Project. What happened was that only a single control point (seen selected) projected to the polysurface (upper right). On the left in Top view, I see that this control point seem to EXACTLY intersect an edge of the polysurface. Which probably means that the control points don’t project to the whole area of the polysurface for some reason. Why is that happening?

Also thanks for the advice to check out the introduction tutorials. I hope I can find the time to do it soon.

Hi Elishah - have a look at the file I posted above - the target surface in that example is made by extruding an angled line - the surface can be any size - just not too small to be a target for the projected points. I am not sure what you are up to extruding the shaped lines…- feel free to post a file with the inputs and a clear description of where you’d like the points to go and I’ll take a look.
Note you can use NamedSelections to select and save the points, so you don’t need to figure out which ones every time.


Hey Pascal, as I understand my test in screenshot #2, the problem is not that the surface I made from ExtrudeSrf is too small. Since one control point did project onto it. But maybe it is the problem. In that case, maybe I just need to create a smaller grid with more dense control points.

Here is the file. The surface I made from ExtrudeSrf is visible in Magenta color. The lines i used are visible in Cyan color. The surface whose control points I want to project onto the magenta surface is called Drape1Copy and is visible. The contours are turned on just for visual help.
ProjectAttempt.3dm (10.7 MB)

Hi Elishah - I am still a little confused about the polylines you have there - but, just in case it is on the right track - say you want a selection of points that falls inside your polyline in the top view- here’s a few - you can select these using SelBoundary in Top and using the polyline as the boundary -

to be on a plane that is angled at 1 degree.

You make the angled plane , select the points and in Top or Perspective (or any view that has the World Top CPlane active) and Project to the plane:

Is that anything like what you are after?

ProjectAttempt_Maybe.3dm (1.6 MB)


Hey Pascal, thank you for your patience. I understood now to finally use the Plane tool to create a surface. I thought to use ExtrudeCrv on the polylines in order to create a surface to project onto. But the Plane is much simpler, and simply using SelBoundary works great to select control points as you suggested. The only thing I wonder is why you suggested to use ExtrudeCrv at all, I am probably missing that part. However, generally this is a working solution!

The last problem I am encountering here is that once I have used Project, the new surface is placed in the same layer as the previous surface. Since the Rotation is quite small, it is very hard to distinguish the old from the new surface. Is there a way to simply place the result from Project into a new layer? or to know which is the new/old layer respectively?

Hi Elishah - in your original case, up at the top, it seemed a easy way to generate a plane at a particular angle but there are any number of ways to get there - I just picked one that seemed easy to explain.

To get hold of the new surface, when you are done, turn off the points (F11) and then SelLast. There are output options in Project but I am not sure how it works for control points, that might need some tune up.