How to fillet edges of solid union intersections

I’d like to learn how to fillet the edges of the intersections of a solid union.


most I can reveal sry

I appreciate any input, cheers :beers:

I’d imagine I’d have to ‘deconstruct’ something and then figure out how to set the edges from a list or something :sweat_smile:


:face_with_monocle: :thinking: :thought_balloon:

I’m interested in learning how to do something like this for the ‘intersection edges’ of solid union:

You could do something like this - finding the new edges of the unioned solid which don’t correspond to edges from the separate parts:


filletintersection.gh (14.3 KB)

4 Likes

Can’t be bothered to post a file? :man_facepalming:

2 Likes

I hear ya, I could probably create a special file in due time. Unfortunately, I’m dealing with some proprietary stuff at the moment.

I’ll definitely do what I can. Bear with me. :beers: I like that link :slightly_smiling_face:

Did you mean beer with me?

2 Likes

haha, maybe now that you got me thinking of that, it must’ve been subconscious at the time :smiley:

I made a sample, I hope it shall suffice :slightly_smiling_face: @Joseph_Oster :beers: You’re right I should have shared a sample earlier.

piping_fillet_sample.gh (16.0 KB)

I still need to study @DanielPiker 's post file though. :upside_down_face:

Ok this is really cool. I’m still trying to understand deconstruction, lists, and the culling part, but I’ll give this a try.

finally putting some energy into this but totally lost:
filletintersection_from danielP_ emod.gh (25.0 KB)

too bad this thread doesn’t have the answer:

yet another dead end:

this plan not really working out, yet:
[Deconstruct Brep] – Edges → [Sort List] – Sorted Edges → [List Item] – Selected Edge → [Fillet Edge]

:thinking: :thought_balloon:

Filter Intersection Edges:

  • To specifically target the edges at the intersection, you may need to compare the edges of the original solids and the union. Edges present in the union but not in the original solids are the intersection edges.

:thinking: :thought_balloon:

still cant figure out how to filter the correct intersections:

taking break bbl…

imma feed this to AI n’ see what happens:

filletintersection_sample_test.gh (19.7 KB)

almost got it:


:joy: :sob:

similar, but still not seeing solution:

1 Like

As other said, Deconstruct Brep component will give you edges curves with the same order as the Fillet Edge component expect them.


fillet pipes.gh (18.2 KB)

2 Likes

Alternative via C#, a small script to get indexes of naked, C0, C1 and non-manifold edges.


fillet pipes 2.gh (13.0 KB)

3 Likes

Yeah, I still am not sure what I was doing wrong. My plan is to study the file as other said :slightly_smiling_face: I have another file to study :smiley: :upside_down_face:thank you!

:open_mouth: :star_struck:

:dizzy_face: :exploding_head: amazing, thanks! idk what i’m looking at yet but it’s awesome :sunglasses:

1 Like

I’ve been learning more about this during my times studying the ways to isolate those edges of interest.

But I get lost in the curve property components…

k now imma study maje90’s bbl :coffee:

This part I’m struggling to understand:

looks like maybe just a particular way to filter out the other edges… :thinking:

now I’m really curious what magic is inside this thing right here:


:sweat_smile: :beers:


I mean this is basically a solution but I don’t understand it :joy: :sob:

I might have to make a new thread calling for other solutions that are more simple :slightly_smiling_face:

seems similar to:

But my brain not understanding why to use ‘closest point’ ‘midpoint’ etc…

gotta eat brunch :burrito: :coffee: bbl

1 Like

yeah, it do “diagonal reference” (so intersect each element of the list of pipes with other elements, like a list of “1,2,3” it does “1-2,1-3,2-1,2-3,3-1,3-1” …)
And with that ^ we have a list of all intersection curves.
Now, making a mid point for any edge of our boolean union solid, if a point of those have is in contact with any of the curves, it have to be of and intersection edge born in the boolean union.
Tricky, but might be reliable enough.

My other c# solution instead simply count the amount of connected faces to every edge.
If an edge have only 1 adjacent face > naked edge
if it have 2 adjacent faces, check for local normal deviation, if low, G1, otherwise is G0
if the edge have more than 2 adjacent faces, it’s non-manifold.
Now, this c# doesn’t know if any G0 edge existed before the boolean union step, so it might fillet too much stuff.
The c# solution will try to fillet ALL G0 edges of a brep.


Also, important mention: your shape is lucky. We all know Rhino fillets, in your case there are many fillets ending to a zero singular point.
It works because it probably start from good planar curves… but I would bet against it if used with 3d curves that intersect (tangent pipes)…

1 Like

Using native components, I got this far:

piping_fillet_sample_BTH.gh (24.2 KB)
It relies on Grasshopper’s Fillet Edge component which isn’t the greatest but works for the example.

There are some useful brep edge components which help in isolating edges, only recently found them and playing around with them:

Convex Edges
Brep Topology

1 Like

That’s very interesting. I like this more simple approach. I’m not sure why the preview wont show the edges though.

But I’ll be playing around with this, thank you :beers:

doesn’t seem to work on the smaller one though:

Having some good success with this one.

Looks like it adds some srf edges where I wouldn’t expect but it works so can’t complain :slightly_smiling_face:

I’m using 0.25" radius fillet on smaller pipe set.

beautiful fillets thanks @maje90 :beers:


going to run with this n’ see how far it takes me :slightly_smiling_face:

dude this is amazing, it’s like adding srf edges to make fillets fit perfectly :sweat_smile:. I’m not even sure how Rhino would do this manually.

this example you can see the starting crvs purposely don’t touch but the fillet works very well:


it’s magic :slightly_smiling_face:

1 Like