algorithmic modeling for Rhino

Hi All -

I'm new to the forum, new to grasshopper, and new to rhino... so I'm trying to learn a lot all at once.  Anyway.  I'm trying to model a plane or surface with two "ridges" that go the length of the surface.  The "ridges" will be the high-point, if you will, and the surface will gradually taper down to the edge from that point.  So the taper or curve will be different for both the top edge and bottom edge, depending on how far the ridge is from each edge.  The same is true for the valley between the ridges.  If the edge of the surface is 0, and the ridge is 10, the valley will fall somewhere between 1-9.

I do not know how to model this.. i've tried many different ways, but can't seem to get anything to follow a curve or line and extrude like I want it.  Anything close would be great at this point.  Worst part... I don't even know what to Google... what kind of action is this called?

Anyway, I've attached an image to help explain what I'm trying to do.  Though crude, hopefully to makes sense of what I'm trying to do/say.

Thank you!


Red = Ridge

Cyan = Surface Edge

Green = Section Cut

Black = Surface Section Profile

Views: 1190


Replies to This Discussion

Hi Baker,

Try this:


Hi Baker,

there's several ways to approach this. If you want to create a single nurbs surface or quad-mesh that approxiates the shape, you'll have trouble getting the creases really sharp, as they are probably at angles to the underlying surface topology (i.e. the grid of control-points). You can create shapes with sharp creases using Breps, but then you'll no longer have a single surface.

Another rather important detail is the exact shape of the valleys. Are they supposed to be catenary sections? Parabolas? Circular arcs? Elliptical arcs? Bezier curves? 6th order curves? ...?

If this shape is supposed to represent a physically deformed object, perhaps the best approach is to use Kangaroo with a custom mesh and fix some of the vertices. This will allow for creases, but gives less control over the exact shape of the cross sections.

I attached a file that creates the cross section curves. It doesn't create a surface or mesh (or brep), that's probably quite a lot harder. But it shows how to parse a list of curves and connect them with -in this case- catenaries.


Little embarrassed to put my monstrosity up after David's predictably elegant one.  This problem caused me much soul searching in the ways of trees and I think I understand them better, but probably could have made a much nicer solution that this one - still, it makes curves approximately how you liked and lofts them.  As David said, hard to make "creases" though I think you can come pretty close if you wanted to really bunch control points closely at the tops of the "ridges".  You could do that with my solution but it would just take more time.  I probably should have generalized it so you could more easily pick the points on the curve but I'm too lazy.


All -

Thank you, Thank you!  These are great solutions and as I expected... there are multiple ways to do this.  I really appreciate all the feedback and solutions that you guys came up with and took the time to illustrate.  I hope in the future I can start contributing and helping others as you have done here.

I think it is ok if I do not form the perfect "ridge", I plan on generating these profile/section cuts and putting them into autocad or something similar to refine the linework.  I may also create this by hand, which would mean I only need a guide and can form the point myself.

So, thank you all again!  This is great, very excited to be part of this community!

Hi BBaker,
here is my attempt at creating surfaces from the curves in David's file.
There's some editing needed if you have more than one intersection in the ridges, but I've added also something to make it work when there are two intersections. Needs some more work but I hope you can edit the definition to fit your needs.


Ehm, I just noticed my intersection counting was wrong (another Doh!-moment) ~ I had 1 or 3 intersections in the file, sorry.
Still, I hope you understood my train/chain of thoughts in the file anyway.

Pieter -

Thank you for your input... I've been playing with your .gh file and I think this is my best route.  What issue that I'm having is, I believe, how you are defining the edge and the ridges.  When I create my own edge or bounding box and then create my ridges and apply your grasshopper script, everything is ok except for the upper "Network Surface" that connects to the "join"... I get an error on this that reads "At least Two Curves are needed in the U direction"

I'm not sure what the U direction is or how to implement this.  Would you mind sharing with me the Rhino file that you used with the grasshopper script?  I think that would help me understand how you pieced this all together.

Thank you!


I can't believe noone has said anything about the nasty surface I created there (zoom in on a ridge intersection... ~ D#h). I was going to report back here with a valid polysurface, but didn't get around to fix the issue(s) yet. But I wasn't going to leave it at that. ;)

I think it looks amazing... pretty much exactly what I was trying to make!






  • Add Photos
  • View All

© 2021   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service