Creating an Editable Surface with Points – Example 4.3

In the Example 4.1 we looked at creating a surface with a Grid of Points in Grasshopper, and in Example 4.2 we looked at creating a Patch surface in Rhino. The problem with using the Grid surface component in Grasshopper is you need exactly a grid of points of this to work, but what if you have spot elevations on a survey plan and these aren’t a perfect grid. Also, creating a patch surface in Rhino is handy, but it is not easily editable.

To solve both of these problems, using a patch surface component in Grasshopper is perhaps the easiest way to work with 3D terrain in Rhino/Grasshopper. It uses the basic concept of Example 4.2, creating a patch surface, but if you move the points in Rhino, the surface that Grasshopper creates and anything associated with it (e.g. contour lines, runoff script, etc) will also update automatically.

To do this, you use the patch surface component.


Step One – Prepare Base data – In this example I have a series of spot elevations that were taken across a site. While it may not seem as “accurate” as the contour line example, this is technically more correct. Contour Lines are just an abstraction created for drawing legibility. A survey is originally composed, however, through spot elevations, and these are typically made using poles that are orderly placed across the site. So the spot elevations are what really matters, not the contours. Also in this example I have a polyline curve at the edge of the property.


Step Two – Plug the points in.  Gather all the points and put them all into one point container, using “select multiple points” Plug this into the “Patch” component and your surface should start constructing already. You will probably want to change some of the settings. Increasing the Spans (S) is the equivalent of changing the U and V in the Rhino patch command. Increasing the Flexibility (F) will make the surface bend better through the points.

You can also add a “Curve” to the component to define the edge, but this is not the same as Triming the surface in Rhino. The curve here also defines elevations, so If you use a 2D curve (property line, for example) it will try and bend the surface down through this.

So If you want a trim curve for your patch, you will need to come up with another solution. One solution would be to create two patch surfaces… one where you project the curve to a version of the surface created only with points (will explain this in Example 4.7) and then use this projected curve in the second “real” patch surface to serve as your boundary.


That’s basically it. If you draw the contours you will have something looking like this. Note some of the contours go beyond the edges. These are extrapolated contours. To get rid of them you can use a “Trim Region” component using your same boundary curve to get rid of these, or more precisely, to turn them off by only showing geometry inside the curve.


The real power of this is you can use the points (spot elevations) to manipulate your surface and regrade your site. In the first image, I moved two points vertically in the Z direction and the updates to the contours are show in the second image. You can also add new spot elevations. In the second image I drew construction lines between the highpoints so I could se some new spot elevations. I then added these new points that I drew to the point collections and the surface updated per the third image.


Here is a final image with the edge contours trimmed.


And here is a screenshot of the Grasshopper script.