This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
rhino:booleanfaq [2020/08/14] 127.0.0.1 external edit |
rhino:booleanfaq [2023/11/19] (current) mitch_heynick [How surface direction affects Boolean operations] |
||
---|---|---|---|
Line 12: | Line 12: | ||
Everything you can do with Boolean operations you can also do manually by using the above four commands. | Everything you can do with Boolean operations you can also do manually by using the above four commands. | ||
- | So, the first thing to keep in mind is that a **// | + | So, the first thing to keep in mind is that a **// |
=====Boolean operation failed...===== | =====Boolean operation failed...===== | ||
OK, why do Booleans fail? First, it is the intersection operation that will determine the success or failure of a Boolean operation. | OK, why do Booleans fail? First, it is the intersection operation that will determine the success or failure of a Boolean operation. | ||
Line 21: | 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 32: | Line 33: | ||
====Known Rhino limitations==== | ====Known Rhino limitations==== | ||
- | **Coincident | + | **Coincident |
- | **Coplanar faces</color** – 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 87: | 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 103: | 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**. | ||