Variable offset / thickness

Hello All,

I would like to have a parametric offsetted surface with different values, starting from a given one (please check the file attached).
It will be great to have a good control all over the surface, adjusting the values in certain areas (for example 15mm of thickness in the border / red area, 20mm in the yellow one and 10mm in the blue area).

I’ve found this topic, which is a good example, but I woul like to have more control.

Any suggestion?
Thank you

1 Like

Sure, simple. But you didn’t post a GH file. :frowning:

3. Attach minimal versions of all the relevant files

Sorry Joseph, You’re right.
Here’s the file
Test1.3dm (123.8 KB)

Your Rhino file doesn’t contain the red, blue and yellow curves. Is the red curve really necessary? How far is the transition between offset values?

You can use Weaverbird to thicken the mesh.

Hovering the input shows the relevant info: One distance / vertex (10.4 KB)

PS: I thought this looks like a SubD, hence the mesh workflow.


Yes, I need to keep an even offset on the boundary of the surface.
This curves can be fine, I cannot share my current file, so I made a rough surface as an example.
Test1b.3dm (164.9 KB)

Yes, it was a SubD since it’s usually easier for me to adjust the basic surfaces in Rhino, but when I start working in GH i transform the SubD into Nurbs (the final output would be a iges/stp).
WB seems to be powerful for my needs, is it possible to work with nurbs too?

I’m not convinced that the red curve is necessary since it isn’t clear what difference it makes?

But your SubD is not a surface (it’s a polysurface) so the method I had in mind won’t work.

Instead of converting the SubD to Nurbs in Grasshopper, convert it to a mesh and then after all the manipulation back to SubD and then to Nurbs so you can export it as *.step (10.1 KB)

1 Like

I can convert the SubD into a Surface with this Flexibility plugin command, so your idea can be helpful.

But you can use the attached file too.
Test1c.3dm (131.2 KB)

For my example, let’s say I want to have 15mm of thickness all around, except on the blue area, where the thickness should increase and the yellow one, where it should decrease.

I guess I need to keep two separate nurbs, the “starting” surface and the “variable offsetted” surface, since after that I need to make several nurbs commands (trims, fillets, etc). The first will be the inner skin of the product that I’m modelling and the second will be the outer skin (it’s basically a shield, with holes, profiles and so on).

In that case you’d use Weaverbird offset instead of thicken.

1 Like

Ok, cool! I’ll try.
Thank you.

Is it possible to have a surface instead of a brep as a final output?
In addition, what if I want to have smoother transition between the thickness variation?


1 Like

To create a surface from a mesh, the Warp Weft component can be used to extract two lists of mesh edges. These edges need to be joined into polylines and converted to curves and sorted ascending in X and Y to create a network surface.

The easiest way to create a smoother transition is to smoothen the mesh. You could also use some sort of an attractor or remap the numbers based on distance to the curve but that’s more complicated. (31.7 KB)


Nice. Thank you so much!


This blows my mind… Very amazing. This means Rhino is secretly a mesh master program :thinking: :thought_balloon: :exploding_head:

wait ‘netwrksrf’ :exploding_head:

Rhino pretty much capable of automating mesh to nurbs now :exploding_head:, basically a reverse engineering program…


Doh! After doing the work, I noticed the bold part… more work. :frowning:
Wait, -20 pushes the offset below the default 15 :exclamation, which looks wrong. :exclamation: :question:

Version ‘a’ is what I had in mind. It will be smoother if you increase ‘U Count’ slider input to SDivide, but it gets slow. Be patient. (14.4 KB)

Version ‘b’ changes the ‘offY’ slider range to -40 to 40 so you can use -20 if you want. (18.7 KB)

P.S. You didn’t mention a transition range outside the curves so I ignored that part.

P.P.S. I could have used surface normals instead of Z to move points but it looks weird at the edges. (15.3 KB)

1 Like

Thanks for your solution. I’ll try it with the normals instead the Z on the surface that I’m working on now.
Which is the smartest way to have a transition range (so some smoothness) outside of an area?
As shown in the image below, with the max thickness (let’s say 20mm) inside the yellow area, the transition between the yellow and the blue and the min thickness outside. My aim here is to have a really smooth transition, better if the areas are not visible and the surface doesn’t shows “bumps”.

Thank you!

Test1d.3dm (183.4 KB)

Here’s another option:

The offset is created on a planar surface instead of a modified surface.

BlendSrf can be used to create a smooth transition. Alternatively the transition could also be created with Sweep2.

FlowAlongSrf is used to morph the Nurbs from a planar base surface to a modified, three dimensional surface.

Test1d.3dm (443.1 KB)