Reproduce Umbilic Torus in grasshopper

Hi All,

My first post to the group. I would like to reproduce an Umbilic Torus based on Farley2076’s Blog (

I mistakenly posted the question to his blog so I have reproduced it here.

I tried the following

1)replaced the legacy components

2)changed the range -Pi<(u,v)<pi to 0<(u,v)<2Pi.

  1. increased the number of interpolation points

However, I still get “insufficient interpolation points”… Any ideas? I have uploaded the file.

Thanks! (11.5 KB)

If you look at the original definition, the Variable Expression has 2 inputs each with 25 values and is outputting 625 values.

You can get this result with the current Expression component by grafting one of the inputs and flattening the output.

The results differ depending on if you graft the u input or the v input.

If you graft the v input and delete one of the profile curves (as suggested in the forum post you linked above) you get the same result as the original definition.

If you graft the u input and unselect the Closed loft option on the Loft component it works as well.

I’ve included both versions in this definition. (16.6 KB)


1 Like

Hi Kevin,

Many thanks for your reply. The concept of flatten/graft is new to me and will need to explore it more.

Why do we use series components model?

Ultimately I would like to thicken the surface in Rhino and export as stl however somehow I cannot select the objects in the Rhino window for thickening…

Best Regards

I dont know if you are familiar to the “bake” i GH (right click on the component that holds the srf and select “bake”)? But you could also thicken the srf in GH and then bake the result…

1 Like

These are data tree operations

You can find descriptions here:

Data trees are a topic you’ll need to understand to get beyond the basics of grasshopper.


1 Like

Thanks for this.
I have noticed that the “list item” before the “Interploate Curve” has the same output as that of the “series” element.
Why do we not connect the “series” element directly to “Interpolate Curve”

you certainly must read a tutorial on the basics of Grasshopper. Series makes a series a number, 0,1,2 … and it is used here to convert a long list of values a list of list of values (datatree). The other way to do that is by using

Or more simple not flattening at the output of the expression component

1 Like

Thanks for the alternative methods. It should help me see the bigger picture.
Yes, I am currently going through the Modelab primer.