Offset Surface Keeps Ending Up Distorted - Help Needed

When I try to offset surface the resulting surface seems to to twist leading to weird distortions of the surface. I’ve highlighted points to show what I mean, this happens both at the top and bottom.

I could go on with the surface as I end up cutting the ends off but fear this will cause issues down the line.

I have also tried offsetting end curves and lofting them but I need the surface offset to be consistent, and as a result of the form being slanted it ends up with different thicknesses on the long axis.

This, I’m sure is probably an easy fix but not so much for a beginner. Any help would be very much appreciated.

Here’s the file: VASE 4 rhino forum.gh (5.8 KB)

The offset surface looks correct to me. It is offset perpendicular to the original surface at every point so the difference you are seeing is to be expected. Cutting the ends off flat, with a planar surface, is right.

2 Likes

Thank you very much Joseph, now it makes sense why it was behaving that way.

However, is there a way that I can offset the surface so that it is “in line” with the original surface or make the original surface a solid and then shell it like in Rhino?

It is “inline” with the original surface, you just want something else. Same thing happens when trying to add thickness to a revolved surface (like a vase). However, in this case where the walls are straight lofts, I see no reason not to offset the curves and loft them.


VASE 4_2024Mar12a.gh (10.6 KB)

P.S.

Oh? well then, you have no choice but to trim the offset surface.

1 Like

Trivial in rhino with extend surface.
Via script we can extend in grasshopper too:


VASE 4 rhino forum.gh (14.2 KB)

  private void RunScript(Surface S, List<int> E, double D, ref object A)
  {
    List < Rhino.Geometry.IsoStatus > stati = new List<Rhino.Geometry.IsoStatus>();
    stati.Add(Rhino.Geometry.IsoStatus.East);
    stati.Add(Rhino.Geometry.IsoStatus.North);
    stati.Add(Rhino.Geometry.IsoStatus.West);
    stati.Add(Rhino.Geometry.IsoStatus.South);
    foreach(int i in E){
      S = S.Extend(stati[i], D, true);
    }
    A = S;
  }
1 Like

Fair enough. Thank you again, I really appreciate your help with this.

Super interesting, I’ll look into this. Thank you for your help.

Bizarre :exclamation: