Mesh to Surface


If I have a mesh surface what is the best way to turn it into a clean single surface that can easily be used in rhino?

Thank you

This mesh wont be able to be one surface, at least not an untrimmed one.

What about turning it into a multiple surfaces?

You can try:

A. Contouring it and lofting / sweeping
B. Use Rhino7 WIP and go Quad Remesher > SubD > Nurbs
C. Try some plugins like Mesh2Surface
D. Just manually remodel it from scratch using the mesh as a guide


This topic has been answered hundreds of times and the only true answer is that there is no well working conversion. This is because a surface is more then a mesh, and algorithms doing this sort of conversion have to guess a lot. Of course „guessing“ is nothing a algorithm can do very well. So except for some exotic situations or expensive softwares, the best answer is to say: reverse it manually!


meshes represent despite all still a surface and wrapping a “surface” around, should have nothing to do with guessing, but rather clearly deciding which side and which parts of the mesh to represent in the result.

depending on what exactly you have as a mesh you can also simply use patch. first use DupBorder then use patch on the mesh and retrim with the boarders. from what i see on your image that might be done in 10 seconds.

Could you upload the actual geometry file?

Hi Mikey,

Please find attached geometry. I have attached both Rhino 5 and Rhino 6 versions just in case

I have already tried a few grasshopper definitions with no luck

Thank you very much to every that has responded so far I very much appreciate all the help

Mesh rhino 5.3dm (301.6 KB)

Mesh.3dm (304.7 KB)

patch works here, but you have to do some trickery because it is too elongated so it will give a weird result. make a gumball resize in z direction with the value of 0.2 for example. make something like 50-70 spans in both direction for the patch. then trim the outer part with the duped edges. the center hole you can just simply trim off with a pulled straight line. after that you stretch z back into position

1 Like

Hi encephalon,

I don’t fully follow what your saying, but I think I got it with what I can decipher. I really appreciate your time thank you very much.

What about surface layout, degree, span count, flow, isodirection, parametrization, internal and external continuity etc…
Also meshes (e.g. scaned data) may not fully represent the design intent or have errors and need correction.
Reversing a shape from a mesh to surfaces is a discipline thousands of people do on a daily base. And this won’t change in the near future, since automatic conversions are simply not good enough.

Of course you can force in a surface in a brute force way, but then the point of making it a surface is quite meaningless. Using the patch command is exactly this sort of thing nobody will do if there is a serious conversion required. Not even a reversing software is doing it like this.


I can’t see no option except manual surfacing too, but would start with some logically rearranged topology of course.
Mesh rhino 5.3dm (623.7 KB)

1 Like

as long as you can name it you can consider integrating it.


ah? wow, smartass.

the seriousness of an exact conversion is not obligatory to every case. this one method which would be fast and can help for further steps e.g extracting more curves for further adaptation was not even mentioned at all. if you dont do it somebody else might start from there.

@sharethebeat17 so did you manage to get something going or would you need step by step? as @TomTom mentioned it is obviously not the most exact option (but more spans will also follow the initial mesh closer) . so if precision is what you are after you might have to try the previous mentioned methods from @Michael_Pryor

I don’t know, I think this is very unrealistic. I couldn’t do this although you consider me being a smartass :man_shrugging: But I could remodel this in about 1-3 hours… So thats why I would do it like this.

The user requested for a mesh to surface conversion. And he is not the first one. This is actually a very common request in this forum. And in all these years Rhino/Grasshopper exists, nobody made it work ( at least as most people would expect a usable conversion.)

The reason is simple. It is difficult! How should some average joe do this? And even if someone can do this how long should it take? 3 years?

It is a big problem to solve, and I never negated that there is software doing this sort of conversions. But still even the best and most expensive software is not doing it good enough for most professional applications.
Creating patches with 50 to 70 spans? This is exactly my point when I’m talking about brute force. A surface with this specs is so bad that it makes any conversion almost useless. If you work with this heavy data, you could stay with meshes and even get a better outcome in terms further development. The patch command (at least from my experience) is used to fill small gaps, for instance in the back of a model to quickly close surface model for instance or at places where a good surface representation is obligatory.

The reason why most people want this is actually another: Often people can better model with a polygon modelling software or they using fancy GH scripts creating awesome mesh geometry in 5 minutes. But then they notice, oh wait, how do I make it a surface representation which for some reason is required for further processing? Now they hope there is some magic algorithm. And no, there is no such thing. The truth is the opposite, everything related to CAD is difficult , time consuming and has a step learning curve…

i dont disagree. but again it all depends what you need it for. but lets not blow this bubble up, bloating it with boring repetitive ping pong.

for a fast result and yes ok it also works with 40 spans if that soothes your need for simplicity :wink: it might work with even less, but whatever its for. here i gumball scaled in z direction with factor of 0.2 as mentioned before, patch does not hit the mesh since its too high why ever.

results in this

then dup the boarder (for later) and use patch with the mesh as input. you may have to set the stiffness to 0.8 whats what i did probably it will work with 1 did not test.

then trim with the dupped boarder from before

and the bottom once more and the hole with a straight line to ensure that the result is straight.
you could also trim the bottom with a straight line first and then trim with the boarder.

then scale z by factor 5 to regain the initial height.


Yes, I was able to get that. and again thank you very much for all your help.

but how come when I bring it into grasshopper this happens? I tried to rebuild the surface, but that doesn’t help in this case. It’s like it is still reading the original patch surface

Hi Mikey,

If you don’t mind me asking how were you able to clean up the mesh so much?

you can also create a loft


i am not fully sure what the options are in grasshopper, i merely keep my knowledge in a luke warm state not to lose it completely. but i believe rebuilding the surface may also mean that you have to tick an option to retrim which might be in grasshopper just the same as in rhino.