Creating Free Formed Surface


I have a lot of closed curves like below. I would like to create average surfaces with curves in Grasshoppper. Patch provides a nice surface but it can’t hold all the edges. I need a surface shape like patch type but 100% keeps the borders. Do you have any advice for it?
I checked the forum but couldn’t find an exact solution. If I miss anything sorry to open a new topic.

Thanks in advance.

SurfacePr.3dm (34.3 KB)

Don’t do this way around! Its not going to work properly.
Create a single surface or a small group of continous surfaces and project the outline on it. Then you apply a trim operation.

If you need to represent the shape with untrimmed outer edges, then you have a serious problem. Grasshopper and Rhinocommon are not giving you enough surface tools to do this properly. You can however also try a sub-d surface approach in Rhino 7’s GH.

Here’s an improvement, still using Patch, but still not fully incorporating all the edges. It scales the curve very slightly up and down, relative to the centroid, to constrain the Patch.

patch (10.2 KB)

Using Patch is really the worst you can do to a shape. The patch command is great for closing little holes in a model at places where its just about closing a shape without any visual purpose. The higher the cps and the cleaner the outline, the more likely it will close. But its really just botching.

The false assumption here is, that an outline can indicate a surface. There are better ‘patch’ tools like XNurbs, but the overall issue is trying to fit in a single surface patch to an arbitary outline. Its the otherway around. A surface determines the possible outlines. So you should create them after you defined the surfaces.

Its like trying to fit two different water pipes together with tape, expecting that its water tight somehow. I wouldn’t plug in my washing machine to something like this…

As Tom mentioned, there is no workaround than to have a trimmed surface. I doubt that sub-d surface will hold exact edges along it’s fillets.

Thank you very much for your answers. I couldn’t understand that how to get a result via “trimmed surface” way. Can you share an example solution on my file?

I mean, you can try to fit a surface to match the boundary best way possible and trim it. Mathematically this is only an option to acheive what you need. To acheive in the sense, closest to what you need. There are some components in Pufferfish to do related operations. What I would do is, I would do a dense patch, then I would draw supporting curves to make multiple surface. I would project these curves back on patch. Then finally make multiple surfaces. This will ensure that the boundary remains intact while fairly continious inner edges of multiple surfaces.

That doesn’t make sense. Again you cannot create the outline first. You create the surfaces and then you project to these surfaces and apply the trimming operation.

See your outline is complicated. If you would model it you would need to do something like this:

(I scaled in Z direction to increase the problem)

It is incredible difficult to reproduce this in Grasshopper. Instead of having one of these. Just simplify the shape to be represented in one surface…

Now if I instead model the surface first, and then apply the outline, I can model out the error and create a much better outcome (Of course it now greatly diverges from your outline, but its also looking much nicer and is easier to apply in Grasshopper):

1 Like

Ok, here is what I meant.

SurfacePr.3dm (1.6 MB)

I used the interpolated curves on patch to make final surfaces.