BooleanUnion: Intersection curve ends at a naked edge

When I try to union two parts of a roof with _BooleanUnion I get the followin mesage:

Intersection curve ends at a naked edge.

Could anyone point me the direction, how I can get around this?

Here the 3dm file:
BooleanUnion.3dm (51.4 KB)

Thanks a lot!

The best way to learn how to understand how booleans work is to not use them. It is just as fast to use the manual tools to trim and join objects like this. And the advantage of learning to do it manually yourself is you will learn to understand how the process of making sound polysurfaces works and what can cause it to fail.

Both of your roofs are not joined properly. Explode the lower roof and then run untrimall and join. That will fix your immediate problem. But the other roof will also cause you problems down the road. The boundary curves on that one are such a mess that you need to start over and make it with clean edges.

1 Like

Thanks a lot for pointing us into the right direction.
We tried to convert ESRI multipatches to Rhino using OpenNurbs… and it seems, that we have to improve the conversion in order to write proper surfaces which are joined on the roof ridge.

The following steps worked for us:

  • Calculate the intersection curve of the two roof parts using _Intersect
  • Split the two roof parts with the intersecion curve (_Split)
  • _BooleanUnion works fine without error message

After splitting you could use Join (instead of BooleanUnion) to join the desired parts. Result will be the same as using BooleanUnion.

No they are not the same. BooleanUnion makes a bad object and naked edges.
Joining works but the top ridge is still not a straight line.

Personally I would draw half of the roof, put it at the desired angle and then mirror it. Quick and easy. Danny

@thomas.k Your objects are over 2 million units from the world origin. That can lead to problems in Rhino. A better practice is to stay close to the world origin, preferably within ten thousand units, though there is no precise distance where problems arise…

@davidcockey : Thanks for the hint. If we _Move the objects to the world origin and try another _BooleanUnion we geht the same error message. This seems not to be the reason for the failure of the boolean union, but it is good to know, that this might be a Problem.

One of the problems is that GIS building data can be pretty “dirty” - since the original meshes are mostly intended for visualization, the precision is not often up to “manufacturing tolerances”. There are also other problem areas when trying to join all that stuff into a good “shell” (for 3D printing or otherwise), such as overlaps, overhangs etc…


When we recreate the two roofs from scratch in Rhino as proposed, we get a quite similar result:Two instead of 3 intersection curves that end at a naked edge.

Looks like the input objects structure is not the problem. Is it possible, that the relative position of the objects lead to this error message?

Here the 3dm file with the “clean” roofs: BooleanUnionCleanPolysurface.3dm (40.8 KB)

The geometry may be clean but the 2 roofs do not line up with each other. I don’t know what the design intent is, but you can get it to line up by either raising one roof up or moving the other down or by making one longer or the other shorter. The bottom edges need to be at the same elevation. to get a complete intersection that cuts through both roofs all the way to the edge.

The reason for failure becomes obvious if you do the trimming and joining manually. If you use booleans it all remains a mystery.

probably the origins of the problem is that the smaller roof is not level. The peak of the roof is .002 higher at one end than the other. That’s more than your tolerance.