Grasshopper G1 between two surfaces

If it is possible in Grasshopper. Well, maybe some of you recognize this: As soon if someone says “That is impossible”, I am tickled and want to try anyway. Either I succeed :slight_smile: or I learn a lot :slight_smile: more.

Looking at the shapes Gil shows in the images, it remembers me of my grandmother when she used to mend a sock or stocking with a big hole in it. She wouldn’t just close up the hole—she’d carefully trace the lengthwise threads, connect them, and only then weave in the “weft threads.”

.

I guess such an approach could work here too: find the long curves in both parts, maybe create a couple more, then connect them. And use network surface to create a nice surface.

Regards, Eer

2 Likes

I’m not saying its impossible. I’m just pointing out that this topic is often heavily underestimated by people which lack deeper understanding of developing surface modelling tools. Probably the best bet is if McNeel would put its surface matching functionality into Rhinocommon, so that someone can write a Grasshopper component based on this. But overall the entire topic of matching surfaces is difficult. And in reality you need different flavours of it for different situations.

Btw, creating curves and matching them will not solve it alone, since you need to consider tangency in multiple directions. Its easy to match in one direction, but this breaks continuity in the other direction. It depends on the relative cp location (iso-layout) of the shapes to match. At some point it needs to iterate a solution and smooth the result at the end. Even more difficult is to match non-iso-aligned surfaces. Its doable overall as there are plenty non-GH solutions.

2 Likes

:rofl: :-1:

Eight years ago on this forum:

Goodbye

@Joseph_Oster That is very basic Rhino level 1…

The post is about surfaces inside Grasshopper only

@TomTom I agree with you Tom and it’s hard to make people understand what the problem is and how hard it seems to fix. It would take not much energy doing it in Rhino. Grasshopper lacks of matching surfaces tools and it’s frustrating.

@Eef_Weenink thank you for contacting me in private and helping me out. You seem positive to be able to find a solution and this is gold to me as I was loosing hope :folded_hands:t2:

@wim as you work for McNeel could you help please? No need working from my file but about listing components or techniques to make surfaces matching we found in Rhino, but in Grasshopper ?

It was Grasshopper, you have no clue at all. Insisting that your geometry isn’t needed makes you a poor student.

In order to know how good you are at something, requires almost exactly the same skills as it does to be good at it in the first place. So if you are absolutely no good at something, you lack exactly the skills that you need to know you’re no [f***ing] good at it.
John Cleese on David Dunning

The Dunning–Kruger effect is a cognitive bias wherein unskilled individuals suffer from illusory superiority, mistakenly rating their ability much higher than is accurate. This bias is attributed to a metacognitive inability of the unskilled to recognize their ineptitude. Conversely, highly skilled individuals tend to underestimate their relative competence, erroneously assuming that tasks which are easy for them are also easy for others.

As David Dunning and Justin Kruger of Cornell University conclude, “the miscalibration of the incompetent stems from an error about the self, whereas the miscalibration of the highly competent stems from an error about others”.

1 Like

It might be a stretch, but if the native Grasshopper nodes don’t exist while the manual Rhino workflow is easy, you could potentially hack a quick n dirty solution using a Python component to run the Rhino command line.

I think you can use Rhino.RhinoApp.RunScript() or rs.Command(), (e.g., rs.Command("-MatchSrf ..."))

2 Likes

@Joseph_Oster If only you would put this energy into helping people

@crz_06 I tried it but without success. I’m also limited to use Native Grasshopper components only. No GhPython, no C# scripting, no plugins.

One enormous thank you to @Eef_Weenink who did solve this problem. I will let him explain if he wants how he did it because it is too technical for my beginner level in Grasshopper. He used curves. Expert level Bravo Eef !!!

In context : the right part of the object seeing on the screenshots is changing size and the blend adapts its tangency.

hand waggle gesture

1 Like

Least you can do is share a script, or printshot of solution so future users can learn from it. And not pass the ball over to @Eef_Weenink to do this.

3 Likes

After all, this is a public forum. But that would require posting some geometry… And @Gil can’t explain it because doesn’t understand what @Eef_Weenink has given him.
:rofl:

@crz_06 I didn’t find the solution, he did, and it’s his right to share or not his hard work. Can you wait a couple of days for it or do you need to use the solution today?

@Joseph_Oster You are correct.

Wait a couple of days, take this opportunity to go out of your mother’s basement to breeze some fresh air. I feel tension in your post.

@Gil , Glad that @Eef_Weenink was able to help you out.

However, I have to be blunt: Eef has shown a great attitude by diving into the deep end and to learn by doing (he is also still a relative beginner with GH if i am not mistaken, though mastering it quite fast by helping other), but your approach of not sharing internalized geometry is unnecessary. If you are worried about people copying your work, you could simply generalize the script to output generic surfaces;

A lot of experienced users expressed interest and offered their time to help you, but you made it very difficult by not sharing the basics—a file people can actually work with. Sharing allows us to not only improve the solution but also generalalize it, so others can learn. No one is looking to simply copy-paste your work; we are interested in the logic. This explains the direct feedback you received; refusing to share files while asking for help can be perceived as freeloading on the community.

I’m still curious if this solution is a robust workflow or if it only works for this specific instance. Regardless, good for you that it works.

@Eef_Weenink, do you think you can share a versatile solution to the problem stated by the OP? PS:, did you check the surfaces with Zebra to verify continuity? Dank je!

4 Likes

Thanks for the compliment, but don’t put me on a pedestal. Anyone here could and would have done it (probably better). What I enjoyed most was fleshing out the idea of “like my grandmother darning socks.”
*Talking about older people (even older as myself :wink: ): Maybe you know the famous cellist “Pablo Casals”, when asked (when he was 67) why he still was practicing his cello everyday, he said “Because I think I am making progress”. I am a bit older then he was at that time and can agree, so that’s maybe the same for all of us, being on this forum?

And for anyone who wants to know the details:

  • My suggestion to cut out and share just a “section” of the design was picked up, and I was given it to work with.
  • On both parts (stick and handle), I used Brep|Plane to create three contour-curves.
  • Divided those; flipped the matrix and applied interpolate
  • Used network surface to create the connector.
  • When the handle is modified (position, rotation, dimensions), the design adapts quite well.
    The rest is mostly sorting and alignes curves, to get everything in the correct position.

At the end it takes a lot of effort to get a closed brep. In the example I upload, it did not work. Cannot find yet why it sometimes works and other times is almost impossible. I will have to puzzle longer on that.

connectstickandhandle.gh (326.0 KB)

PS: @crz_06 “I do not know about/how to use Zebra”, Please explain.

Now, back to work. Have a good day, Regards, Eef

bake the surfaces, and run ‘zebra’ command (and zebraoff to exit) > Zebra | Rhino 3-D modeling

What Tom, and TomTom are talking boabout is, you need G2 continuity, Position, curvature, and tangency match