Creating Offset Curve on Surface Loosely for a List of Surfaces

I would like to share some of my progress on this Grasshopper definition I have been working on recently. The purpose of this grasshopper definition is to create loft surfaces that follow a solid’s edges while using an offset on the inner side of each surface. In this scenario I built this definition with the idea that controlling the dimension of the offset is not critical. The intent of this definition, is to create a type of frame that wraps around a solid object.

The two following images should help give a clearer idea of what I am intending to do this this Grasshopper definition:

Initial Solid Object:

(note: this object contains trimmed surfaces)

Desired result:

(note: these are all untrimed surfaces)

Here is a quick breakdown of what is happening in this definition:

  1. This definition creates closed curves from each of the faces of a solid.
  2. It than creates a planar “offset curve loose” (offsetting in both directions).
  3. The set of offseted curves are sorted by Length and the outer offset (with a longer length) is discarded from the list .
  4. These offseted curves are than extruded and a curve on Surface is obtained using the “Split Brep” component.

After that, I attempt to explode the curves on surface and create a loft between each segments. I was successful in doing so for each face individually using the “List Item” component. Below is an image of one of the method I attempted:

Unfortunately, so far I am unable to create surfaces for all of a solid’s surfaces at once.

Here is the most up to date .gh file I have been working on: (126.3 KB)

I would love to get some help on resolving this problem!

You’ll need pufferfish plugin to align curve seams… (127.8 KB)


This is exactly what I was attempting to do.
You are awesome and this plugin is great!

Thank you so much for your help and your extremely fast response.

Pufferfish is great, but just to show an alternative with native components. This uses Point On Curve, Curve Closest Point and Seam.


Your solution is really clean and optimal. And it is really great to be able to build these surfaces without having to use additional plugins.

This is supper useful! I cannot thank you enough Adam.

True native works in this case, Pufferfish one was meant mainly for tweens for aligning many in succession, so with the iterative option it aligns each curve in list based on the aligned curve before it, rather than just aligning all to one start point. Which couldn’t be done without script or a looping plugin like anemone.

It is a quick way to solve these simple cases too.