This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
rhino:booleanfaq [2023/11/19] mitch_heynick [Boolean Frequently Asked Questions] |
rhino:booleanfaq [2023/11/19] (current) mitch_heynick [How surface direction affects Boolean operations] |
||
---|---|---|---|
Line 20: | Line 20: | ||
> **Note:** //Doing Boolean operations on open objects is also possible, but a bit more complicated, | > **Note:** //Doing Boolean operations on open objects is also possible, but a bit more complicated, | ||
- | So, taking the above into account, if your Boolean operation fails, the first thing you should do is check the intersection of the objects. | + | So, taking the above into account, if your Boolean operation fails, the first thing you should do is check the intersection of the objects. |
+ | |||
+ | //Note also that using the manual Split or Trim / Delete / Join procedure instead of a Boolean operation will likely run into the same problem, as the Split or Trim operation will fail. Intersect can again help find the problem spot(s).// | ||
=====Intersection problems, solutions, and limitations===== | =====Intersection problems, solutions, and limitations===== | ||
Line 31: | Line 33: | ||
====Known Rhino limitations==== | ====Known Rhino limitations==== | ||
- | **Coincident | + | **Coincident |
- | **Coplanar faces** – If two faces of an object are on the same plane, Rhino may not be able to calculate the intersection. This is a fairly | + | **Coplanar faces** – If two faces of an object are on the same plane, Rhino may not be able to calculate the intersection. This is a fairly |
- | **Nearly tangent surfaces** – Like the intersection of two equal diameter pipes at an angle. | + | **Nearly tangent surfaces** – Like the intersection of two equal diameter pipes at an angle. |
**Invalid objects** – If one of the objects you're trying to work with is invalid, Boolean operations will often fail. Check for invalid objects by using the command **SelBadObjects**. | **Invalid objects** – If one of the objects you're trying to work with is invalid, Boolean operations will often fail. Check for invalid objects by using the command **SelBadObjects**. | ||
- | **Non-manifold polysurfaces** – Although Rhino doesn' | + | **Non-manifold polysurfaces** – Although Rhino doesn' |
=====Manual construction and editing is sometimes needed===== | =====Manual construction and editing is sometimes needed===== | ||
Line 86: | Line 88: | ||
> **Note:** //If you are doing Boolean operations on closed polysurfaces and they don't react the way you think they should (i.e. the wrong parts disappear), probably one or more of your objects aren't really closed and have the normals pointing inward. | > **Note:** //If you are doing Boolean operations on closed polysurfaces and they don't react the way you think they should (i.e. the wrong parts disappear), probably one or more of your objects aren't really closed and have the normals pointing inward. | ||
- | > **Tip:** //One way to always know which way surfaces are facing is to set up your display to show backfaces in a different color from front faces. | + | > **Tip:** //One way to always know which way surfaces are facing is to set up your display to show backfaces in a different color from front faces. In V5 and onward, the backface color display is set for each different display mode you have. In the Rhino Options |
Let's imagine the simplest open Boolean operation. | Let's imagine the simplest open Boolean operation. | ||
Line 102: | Line 104: | ||
From Rhino V4 on, [[rhino: | From Rhino V4 on, [[rhino: | ||
+ | However, one of the best solutions to this is to use **BooleanSplit** instead of **BooleanDifference**. | ||