Grasshopper smooth brep join

My previous solution only really works on pipes. I created circular arrays of curves. Those are used as tangents for the blend curve component.

As soon as the surfaces you want to blend have corners, it’s a bit different. I closed your parts with 4-point surfaces manually since we need the normal of that opening.

It’s a matter of aligning and sorting the curves.

19_12_22_blend_that.gh (993.4 KB)

Since this looks like a sheet metal part you probably want to unroll the geometry…

In that case it might be easier to blend two surface edges and add thickness afterwards.

19_12_22_blend_surface_edge.gh (49.9 KB)

1 Like

Although Christmas is coming closer I’ve tried some coding, and grabbing the edges isn’t the most difficult part, instead I experience problems with the direction of the edges. Flipping the edges with the RhinoCommon commands doesn’t seem to do its thing, or at least I had problems with that part.

I want to integrate everything to make it as simple as possible to use the component, so I’ll have to work on this some more until I master the swappin’ & flippin’ of the edges so that BlendSrf can match both sides without the surface getting twisted.

The idea I’m working on is the user can either manually pick the starting edges (by edge Index), or the component makes guesses based on nearest naked edges.

The auto-edge-guessing is illustrated in the Gif below, in which the component has almost all inputs detached (including edge indexes). When two Breps (A & B) are connected and the EdgeA&B index inputs empty, the component immediately starts guessing. Also while moving one Brep around, the Component keeps trying to find new “nearest edge” to Blend against and… well, it’s shown in the Gif.

Fig 1. Auto-finding Nearest Edge-pairs when swapping Breps or simply moving them so the distance between Edges changes (Desired edges can be “locked” by feeding their indexes to the inport, but here Edge indexes are detached altogether):

I also made an EdgeFilter (helper) component (noty shown here) which culls away all non-naked edges so that one can conveniently manually pick among the few remaining naked edges. A “nice-to-have” thing when the Breps has several hundreds of joined/connected edges.

For example, in Osuire’s rather complex Breps (with hundreds of edges), the component traverses hundreds of edges and, filters away the connected ones, and finally it presents only four (4) naked edges to manually pick from (their indexes that is). The desired indexes thus can easily be picked and feed directly into the BlendSrf component’s input EdgeA and EdgeB (indices to the edges to be Blended). Searching of edges among hundreds of edges, like in a haystack, doesn’t have to be a problem at all.

But as indicated, there’s some more work to do before the more complex Breps/Edges can be properly rotated (Seams), Oriented (edge directions) and Chained (auto-traversing openings with multiple naked edges from multiple surfaces, like the square opening in Osuire’s Breps which has four edges from four different surfaces).

But now family calling. Merry Christmas to all of you!

// Rolf

4 Likes

Thanks !
I’m finding that BlendCrv doesn’t work as I thought it would though…
The blend between the two small arcs seems to ignore their curvature…

Interesting !

Merry Christmas Rolf, and all

The small arcs are pretty much tangent to the blend surfaces.

Yes, indeed : tangency, but not curvature.

The problem with using the "edges"approach is that the resulting network surface is not necessarily tangent to the two neighbors :


This will be unfit for my sheet metal flattening routine.

1 Like