BUG: Boolean Unnion

The attached file has two polysrfs. If I try to do a union on them, Rhino locks up at 100% CPU.

If I try to intersect, Rhino locks up at 100% CPU.

Don’t try this one at home kids.

Problem Union 7.3dm.zip (896.1 KB)

It will product a nonmanifold surface (with a bad surface) if you do shrinktrimmed surface first.

(If you’re wondering how I create these file, it’s from bringing in mismatched parts from different versions.)

BooleanUnion isn’t the right way if you are looking to get something like this:

Here I essentially took the edge of the green surface (after having made a copy of course), scaled it up some and trimmed the white ring.

To finish it off you probably could use the duplicated surface to close up the white ring to keep it solid.

Probably there are other ways to accomplish this, but BooleanUnion isn’t it because the green lips are at same location as the white surfaces - you won’t be able to control what gets picked.

Yes, but you don’t want discover you have mismatched parts by having Rhino lock up.

I can throw this one out too. Here is the same with the matched parts. It still will not union.

The solution here is to:

  1. Intersect (Creates two closed curves)
  2. Explode one of the parts.
  3. Split using the curves (It will not split while joined
  4. Delete the surfaces between the two curves.
  5. Join Together

  1. Explode the other part.

  2. Split using the curves.

  3. Delete the surfaces between the curves
    Giving this:

  4. Join everything together.

Giving this:
Problem Union.3dm.zip (575.6 KB)

Hello - while no doubt this should be made to work, if you are combing things that leave microscopic edges like this segment, .007 units long


then you also need to be cleaner about modeling your objects in the first place. The objects have edge tolerances that are getting fairly close to the current file tolerance - if you make the file tolerance .0001 and RebuildEdges on your brep faces and join, the objects will not be closed. What would be useful I think is looking at the entire process used to get the inputs to this BU case.