Boolean union

I can’t figure out why boolean union fails when I try to unit the whole ring.bombe-union.3dm (8.0 MB)


  1. The main problem with your file. Firstly it is totally messy.
  2. It has unwanted curves, surfaces.
  3. Make sure that your polysurface edges are perfectly intersecting. Not coming out of the edges.
  4. Use rhino Ghost mode to check edges.

Errors found in your file.




Solution: Boolean done



bombe-union BVR re.3dm (3.6 MB)

Best regards,


I’m new to rhino and following a tutorial. I’m not sure what you mean by unwanted curves and the polysurface edges need to perfectly match each other. Can you send a screen shot close up of the problems?


Hey Anna,

Read this for now to know more about boolean union operation in rhino3d.

Here you see the grey colour polysurface coming out of the green colour polysurface. This means there is no proper intersection in your geometry so that boolean union fails. In your model you have similar kind of issue’s everywhere. That is main reason to boolean union failed. And I find some duplicate polysurface also in your file that also to be deleted before boolean union.

Best regards,

Intersection problems, solutions, and limitations

What causes gaps or problems in your intersection? There are many possibilities. Some are due to modeling errors or inaccuracies. Some are due to Rhino’s limitations. Let’s look at the common errors first:

If you think your intersection should be closed, but it’s not, select the curve, and call CrvStart , which places a point at the start of the curve. Normally this will correspond with one side of the gap. Zoom in closely and see if you can see the gap on the screen. Why is there a gap there? Maybe you think that your objects are closed, but they’re really not. The intersection may cross a gap between surfaces, and that will cause an open curve. If you have forced together your object using JoinEdge , that may also happen, even though the object says closed. The other thing to check is your modeling tolerances (see Understanding Tolerances). If they are too large, this may prevent the intersector function from finding a complete intersection, even though all else is well. Try tightening your tolerances and running the Boolean again. Once you get a full closed intersection, your operation should work…

Source: McNeel wiki

If you do the INTERSECT command, you can see that you get irregular mating.

I was able to build a a top that would union by doing:

  1. NETWORKSRF on your blue curves and the black curve going through the middle.
  2. TRIM on the resulting surface using the topmost blue curves.
  3. OFFSETSRF bidirectionally 0.225 MM.

That surface would boolean union.

It is extremely slow because of the large number of control points.

I don’t know how you build this in the first place but, what I think you need to do is:

  1. Define a surface that matches the shape of your ring (without the squiggly curves). Use Sweep2 or NetworkSrf to create the surface.

  2. Draw the squiggly curves on that surface.

  3. SPLIT the surface using the squiggly curves. Discard the open areas.

  4. Use OFFSETSRF on the surfaces that form the closed areas. You can do it in both directions.

  5. Use PIPE to create the raised Squiggly areas.

The complaint about your curves is the number of control points. You have:

You could run REBUILD or REBUILDCRVNONUNIFORM and get the same shape:

@bigjimslade the above file is completely done with boolean union