New Command Development! MERGE SURF D2

Good morning everyone! :slightly_smiling_face:
Okay so here is a project that I have been working on in answer to this problem.

Inspired to use gh player by

Here is the experimental Rh file
Merge Fillet.3dm (271.2 KB)

And here is the grasshopper file
Merge Curved (16.6 KB)

So sorry @Joseph_Oster I failed and used Pufferfish and [Topologizer/Network CleanUp - Grasshopper] (Topologizer/Network CleanUp - Grasshopper)
But knowing you, I think that you could figure out a better way because you are awesome. So please forgive me and look at this if you get the time.

The goal of this project is to create a Rhino command that merges surfaces that have at least 2 linear edges. Everyone that wants to can work on it. Just post your thoughts and gh files in this thread. So far I have run into a few issues that need addressed.

  1. I dont think that the below is supposed to look like that :sweat_smile:

  2. Currently it cannot do open poly surfaces. Which is very annoying, and personally I think that most people would find it useless because of that.

  3. It needs to be able to delete the referenced sub surfaces and then join the new surfaces to the poly surface. I assume this needs some python which I am terrible at.

Not sure if this should have gone in the Rhino for Windows section. Maybe we will need a Custom Rhino Commands section one day. :grinning:

I still don’t understand what you’re really trying to do … but sounds kinda like it violates the laws of NURBS maths… :sweat_smile:

‘merge non-planar adjacent faces’? … including ‘non-rectangular/trimmed’ … I remember wanting V4 to do that :sweat_smile:

I’ve spent countless hours of my life “merging” surfaces together. I learned alot about how non-similar and non-compliant isocurve compositions can make things really messy, hence not really work.

Eventually I went down the path of networking things together, and focusing on the curve networks that do exactly that. On occasion, there are times when it might be better to create a network that is intended to be “trimmed”, but that’s a bit more complex at times, due to the strange phantom nature of trimmed nurbs data off in space – long story short.

1 Like

Well I guess that makes alot of sense. Really i am trying to get rid of seams in champhers and on my curved beams by making 1 nurbs surface. Of course i may be wasting my time. Thank you for your input @lander ! It is much appreciated. :slightly_smiling_face: :+1:

1 Like

Good morning @lander !
Just looking to try and see if I am understanding you correctly.
So are you saying that this is not possible? Not to be annoying but it seems like it could be one single nurbs surface? Like taking to cylinders and joining them together. You are left with a seam at the joint. But both cylinders could be one single cylinder right? I am probably just misunderstanding the way nurbs works.
Granted that it could probably be avoided by better modeling practices. :wink:

1 Like

In that case yes it sounds correct :beers:

I’ve spent enormous amounts of time on this stuff, and still am probably scratching the surface.

The way I see it, is these NURBS surfaces are like 4-sided fabrics composed from polynomial curve networks. So, they don’t really like being cinched together and their sides don’t really like being zero-length – although you can bend the rules from time to time and get away with some fancy things.

It all depends on the behavior you need relative to an edge and the behaviors are different depending on whether edges are trimmed or not, etc.

So, a sphere is a good example of a surface that has two sides of zero-length that’s wrapped around onto it’s self and literally matching two of the remaining sides ‘tangentially’ to it’s self – it’s kinda crazy :sweat_smile:

I modified this one to make the information more obvious.

Some might say ‘it is more correct to say curvature continuous’ or something or G2 idk :joy:

I use the word ‘tangent’ very broadly for anything that’s smooth transition lol

So, normally it’s pretty difficult getting surfaces to be smooth when you bend these rules and smash or cinched things around, altering surface edges and isocurves in such a way where things can get scrambled up into a mess sometimes.

A cone, is an example where only one side is zero-length – just another example of how these ‘rules’ can be bent. Cause how can a surface edge have zero length? lol

modified this one too, and deleted bottom face.

When these NURBS want to really be 4 sided, it’s fun trying to force them to be 3 sided or 2 sided :joy:

Isocurves are key to understanding the potential networks that can comprise surfaces – usually there’s many different ways to comprise the same surface.

My favorite ‘work mode’ (display mode) settings to use, will display the isocurves and edges in such a way where I see exactly what is what and their directions – at a glance. So, while I’m constructing different things I see as much as the information as possible.

I usually never modify the ‘density’ of isocurves (above density 1),
because I’m more interested in the ‘true’ display of the underlying curve networks of surfaces. So, the density changes in my above examples are due to actually ‘rebuilding’ the native geometry.

So, depending on how you want the final results to be, you might want to do one of like 5 different possibilities:

1.) merge the surfaces for a quick and dirty approach – risking possible distortion.
2.) recreate the geometry and take ‘extrusions’ further or ‘sweeps’ ‘lofts’ etc. – and try reducing the numbers of seams maybe.
3.) moving seams around cause sometimes a trimmed surface could also have the seam trimmed out to your advantage – you just have to move the seam prior to the trim.
4.) think completely in terms of the curve network you need to create exactly what you want in the final result – potentially dealing with the need to trim later.
5.) follow the rules of UV degree or maybe completely bend the rules – sometimes it’s good to make a straight side straighter with the guarantee of a degree-1 polynomial, but sometimes it might not matter and degrees 2 or 3 are fine if straightness or roundness only has to be ‘relative’ versus ‘exact’.

Even a ‘true’ circle isn’t really ‘true’ in this realm of NURBS – they be bending the rules with control point weights n’ stuff :poop:

“perfect circle” :sweat_smile: :coffee:

So, if you deviate away from the native cylinder, you might want to rebuild it with 20 control points in that “round” direction :sweat_smile:

1 Like

If you have two surfaces that are straight perpendicular to the common edge and are not trimmed then you can certainly convert them to a single surface. MergeSrf does that, but only with two surfaces at at time. You can follow up with a Rebuild to reduce the linear degree to 2.


Wow! Thanks @lander !
That is very informative! Thank you for taking the time to answer all that for me and for going so far as to make demonstrations for me! Love your explanations! :grinning:
I may have a new saying. When in doubt, ask Lander :wink:
5 stars!

1 Like

Thanks @jeremy5
That makes sense. I did not realize that it had to be an untrimmed surface. Although it wont quite work for my application, it is good to know. So thanks!

1 Like