Site Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
rhino:booleanfaq [2023/11/19]
mitch_heynick [Boolean operation failed...]
rhino:booleanfaq [2023/11/19] (current)
mitch_heynick [How surface direction affects Boolean operations]
Line 33: Line 33:
 ====Known Rhino limitations==== ====Known Rhino limitations====
  
-**Coincident seams** – All objects have seams. Sometimes when the seams on two objects are at exactly the same place, Rhino has trouble with the intersection.  Solution: Either try to move the seam, or try moving one object just a tiny, tiny bit (if you can without making your model inaccurate).  Or try to do the operation manually.+**Coincident seam and other edges** – All polysurface objects have joined edges and seams. Sometimes when the joints on two objects are at exactly the same place, Rhino has trouble with the intersection.  Solution: Either try to move the joint or seam edge, or go back to the manual Split/Trim and Join procedure in this case, in general Rhino will allow you to do this just fine and you will be done. There is sometimes a possibility to move one object just a tiny, tiny bit - this is a last-ditch attempt because it will make your model less accurate and that could have poor consequences later.
  
-**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  common occurrence. Later versions of Rhino are much better at resolving these situations, but they may still occasionally fail. Solution: As above, you may move the object slightly if possible. If not, you may have to do this operation manually.+**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  common occurrence. Later versions of Rhino are much better at resolving these situations, but they may still occasionally fail. Solution: As above, try doing this operation manually, it will always succeed.
  
-**Nearly tangent surfaces** – Like the intersection of two equal diameter pipes at an angle.  The intersection often fails at the point where the surfaces are tangent.  Currently, there is no easy fix for this problem.+**Nearly tangent surfaces** – Like the intersection of two equal diameter pipes at an angle.  The intersection often fails at the point where the surfaces are tangent.  Currently, there is no easy automatic fix for this problem, so you may end up having to use Intersect, then edit the resulting incomplete intersection curves to get something you can use to manually trim the surfaces before joining.
  
 **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**.  If one highlights, you need to fix it first before proceeding.  It is also recommended that you turn on automatic object checking. If invalid objects are created in the course of your work (or imported), Rhino will tell you immediately.  To do this, simply type **CheckNewObjects**.  This is a toggle, running the command again turns it off. **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**.  If one highlights, you need to fix it first before proceeding.  It is also recommended that you turn on automatic object checking. If invalid objects are created in the course of your work (or imported), Rhino will tell you immediately.  To do this, simply type **CheckNewObjects**.  This is a toggle, running the command again turns it off.
  
-**Non-manifold polysurfaces** – Although Rhino doesn't currently flag these objects as bad, they can cause failure.  Rhino //shouldn't// create these types of structures, but under certain conditions it does.  The Properties/Details of an object will indicate if it is non-manifold, and you can use the edge analysis tool to highlight them.+**Non-manifold polysurfaces** – Although Rhino doesn't currently flag these objects as bad, they can cause failure.  Rhino doesn'deliberately create these types of structures in general, but under certain conditions they can happen.  The Properties/Details of an object will indicate if it is non-manifold, and you can use the edge analysis tool to highlight them.  They will need to be manually repaired to fix the problem.
  
 =====Manual construction and editing is sometimes needed===== =====Manual construction and editing is sometimes needed=====
Line 88: 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.  Use **Dir** to see.// > **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.  Use **Dir** to see.//
  
-> **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 **V3**use the command **AdvancedDisplay>Color Backfaces** to set this up In **V4**, go to **Options>Appearance>Advanced Settings>Shaded>Backface Settings**. In **V5**it's **Options>View>Display Modes>Shaded>Backface Settings**. Then choose **Set single color for all backfaces**, and choose a color.  Note, this only works if you are working in Shaded Viewport mode. In Wireframe, Ghosted, or Rendered you will not see this.//+> **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 for any applicable display mode, choose **Set single color for all backfaces**, and choose a color.//
  
 Let's imagine the simplest open Boolean operation.  You have one solid closed polysurface that is fully intersected by a single surface.  You can easily create this by making any kind of solid object, then using the **CutPlane** command and drawing a cut line through your object in any direction. Let's imagine the simplest open Boolean operation.  You have one solid closed polysurface that is fully intersected by a single surface.  You can easily create this by making any kind of solid object, then using the **CutPlane** command and drawing a cut line through your object in any direction.
Line 104: Line 104:
 From Rhino V4 on, [[rhino:boolean2objects|Boolean2Objects]] lets you cycle through all the possibilities of the different Boolean operations and see the result on-screen. You can then choose the result you want.  Currently, this only works with just two objects. From Rhino V4 on, [[rhino:boolean2objects|Boolean2Objects]] lets you cycle through all the possibilities of the different Boolean operations and see the result on-screen. You can then choose the result you want.  Currently, this only works with just two objects.
  
 +However, one of the best solutions to this is to use **BooleanSplit** instead of **BooleanDifference**.  BooleanSplit splits the base object(s) with the cutter(s), //**but it leaves all the parts**// It's then easy to simply delete the part(s) you don't want.
  
  
  
  
rhino/booleanfaq.1700414871.txt.gz · Last modified: 2023/11/19 by mitch_heynick