"Welding (union) tubes of bike frame" - Bug report

I want to weld the parts of a bicycle frame, but what ever method I used, when I “union” two solid polysurfaces the horizontal one is no more a tube.

Cut of diagonal and horizontal tubes by direction tube
Boolean Split at 0.00:14
Union at 0.00:35
Still 3 tubes welded as one solid polysurface, OK.

Then I want to cut and weld to seat tube.
Boolean Split at 0.00:49
Union at 0.01:10
Zoom at 0.01:21 show that horizontal tube is no more a tube.

I presume that it is a bug.
I waste time to find another method to avoid it, without success, could you help me on that ?

3dm file: Classic.3dm (1.3 MB)

Hi @jean.davy.77
Were those supposed to be videos (since you gave time stamps)? Because here on my phone, they pop up as pictures - just FYI :grinning:
HTH, Jakob

1 Like

Hi @jean.davy.77,

Two ways to do this:

  1. Explode all your tubes into surfaces, create the intersections of the outer surfaces and use them to trim out holes in the outer surfaces and remove the unwanted surfaces. Create the intersections of the inner surfaces and use them to trim out holes in the inner surfaces and the unwanted surfaces. Delete any unwanted end faces left over. Once you have just the surfaces needed to create the combined solid use Make Solid to join them together.
  2. Subselect and copy in place each of the inner surfaces of your tubes from the original parts layer. Use Cap Planar Holes to make each of the new surfaces into a cylinder. Move them to a separate layer using a different colour to make life easier. Use Boolean Difference to subtract each new cylinder from the tube(s) it intersects (i.e. new top cylinder is subtracted from original headset and from original seat tube. New headset cylinder is subtracted from original top tube and original down tube.) Then use Boolean Union to combine the modified original parts.

Both methods will give you clean objects.

Incidentally, your top tube isn’t fully intersecting the down tube.


Thanks Jeremy,

Did you go until welding (union) seat tube ? Switch from tube to cylinder appears at that step.

Solution 1 is doing by hand what is done with _BooleanSplit + _BooleanUnion (as far I understand), hopefully without the bug.

What is very frustrating is that “my” method works like a charm with another frame, same but whithout the bottom bracket, same horizontal tube and others …
“… top tube isn’t fully intersecting …”, yes I saw that, I did many experiments, move the face to fully intersect, reduce/diminish the diameter, etc, at the time of union “boum” the horizontal tube (or the diagonal sometimes) switch to a cylinder.

In fact, after that post I found a “near solution” with “boolean difference” a cylinder of the internal diameter of the tube.

Anyway, thanks again, I will try your solutions and update the post.

Classic (1 MB) - Rhino 6 Commercial - [Perspective] 2020-08-23 12-19-50.zip (15.0 MB)
Oups !
Here is the zipped video

Yes, I did top tube to headset and to seatpost.

The goal is to weld top and diagonal tubes to both seat and direction tubes, I have upload the video in answer to Normand above. Bug appears when I do the second:
Union at 0.01:10
Zoom at 0.01:21 show that horizontal tube is no more a tube

A third way to do this would be to make solid cylinders to match each tube and boolean union all the cylinders. Then make a set of solid cylinders equivalent to the bore of each tube and boolean difference all those cylinders from the result of the union. Gives a clean result.

I generally prefer boolean difference to boolean split, because the latter is a bit of a loose cannon, leaving you with unnecessary artefacts.

Your problem is a bug: the inner surface of the top tube is being detached (it is still there in the model), probably because it terminates at the same face of the head tube as the outer face. But in processing the union of the outer faces, a hole is made in the head tube, so there is no longer a surface to intersect the inner tube. The union needs to create an island in the head tube surface to join with the top tube inner, before making the hole. I imagine that getting this right for all geometries is going to be a challenging task for someone at McNeel…


1 Like