BooleanUnion fail


#1

2 rings.3dm (127.5 KB)

I’m trying to do a BooleanUnion on two rings and it fails. If the rings are thicker relative to their diameter, it works. I can create the rings with Sweep1 or Pipe and I get the same thing. Increasing the precision doesn’t help. Sorry if this was covered somewhere else & I missed the connection to my problem.

Software information

Software versions
Rhinoceros version: 5.0 Wenatchee 2014-03-17 (506)
OS X version: Version 10.9.2 (Build 13C64)

Plug-ins
None

Hardware information

Computer hardware
Hardware model: iMac14,1
Processor: Intel Core i5-4570R CPU @ 2.70GHz
Memory: 16 GB
Architecture: Intel 64 bit

Video hardware
Graphics: Intel Iris Pro 1024 MB
Memory: 1024 MB
Screen size: 1920 x 1080
Displays: iMac

USB devices
Apple Inc.: Bluetooth USB Host Controller
Apple Inc.: FaceTime HD Camera (Built-in)
Lexmark: Lexmark CS310n
Logitech: USB-PS/2 Optical Mouse

Bluetooth devices
Apple: Apple Wireless Keyboard

OpenGL information

OpenGL software
OpenGL version: 2.1 INTEL-8.24.11
Render version: 2.1
Shading language: 1.20
Maximum texture size: 16384 x 16384
Z-buffer depth: 24 bits
Maximum viewport size: 16384 x 16384

Implementation settings
Use texture compression: No

Appearance settings
Antialiasing: None
Mip map filtering: None
Anisotropic filtering: None


#2

You might try some of the things on this page to help you locate where the problem is (and hopefully fix it)…

HTH, --Mitch


#3

Hi Don.

Rhino does not like to perform booleans that have coplanar faces. I never thought about what this might mean for two intersecting round rings of identical size, but as you’ve found, this also fails. I suspect this is a math problem and until the developers are able to figure out a way to improve this, perhaps a workaround is of interest?

In the enclosed file, I scaled one of the rings from the center point: Scale > 0.999999. The boolean worked after this, shown in the enclosed file.

~Dave
2 rings scale one by.99999.3dm (243.6 KB)


#4

Hi Don,
Doing what Dave suggested is a good way to solve this problem. I prefer to avoid Booleans and use other tools. Split, trimming etc are another way to work around this.

For these you could go to the top of the intersection, split the pipes, remove intersecting pieces and then join the remainder to give you a valid solid.

2 rings.3dm (84.4 KB)


#5

All four seam curves intersect in one singular point. That might throw off the union. It looks like Rhino has a problem if the trim intersects too many seams. If you rotate one of the rings so the short seam lies outside the other rings volume, BooleanUnion will work.


#6

Thanks everybody. I really wish that the “Boolean union failed” message gave a little more information, but this fixes the problem. Coplanar faces seem to be my own personal kryptonite.


#7