布林運算疑難排解

Boolean commands can be used with surfaces and open polysurfaces. The result depends on the direction of the normals of the object. Use the Dir command to see the direction. If the results are the opposite of what you want, reverse the direction of the surface with the Dir or Flip commands and try again.

Try the Join command first on surfaces.

For mesh objects the steps are the same as for the NURBS Boolean equivalent.

Note: The result of a command is always a mesh regardless of the input object type.

布林運算為什麼會失敗?

以下是幾個可能造成布林運算失敗的原因:

曲面的法線方向不正確。
兩個物件交集處的有控制點重疊在一起 (匯集點)。
物件可能有某部分的曲面重疊或正切。

曲面法線

The Boolean operations use the surface normal to determine which parts to keep and which to throw away. When you attempt a BooleanDifference and you get a BooleanUnion instead, or vice versa, this is because the objects have normals that are the opposite of what you expect. This tends to happen often if one or more objects are not fully closed. If an object is not closed, Rhino has no way to determine which side is outside and which is inside. Use the Dir command to see which way the normals point on these objects and use the Flip option as needed to make sure the normal direction is what you consider to be the outside of the object. Fully closed objects will always have normals pointing outward.

匯集點

曲面一個邊緣上的所有控制點重疊在同一個位置稱為匯集點。在 Rhino 裡,圓錐體的頂點、球體的兩極、三個邊的未修剪曲面都有匯集點,手動將控制點移動到同一個位置也可以形成匯集點。

當兩個物件的交集處有匯集點時可能會造成布林運算失敗。

重疊的曲面

當兩個曲面有部分重疊時,例如:兩個立方體只有兩個面互相接觸,這種情形只能做聯集,無法做差集交集

非流形邊緣

除了重疊的曲面可能造成布林運算失敗以外,非流形的邊緣也是原因之一。

組合三個網格面或曲面的邊緣稱為非流形邊緣。

圖中是以 ShowEdges 指令醒目提示的多重曲面的非流形邊緣。

替代方法

如果兩個物件無法做布林運算,您可以使用其它的方法得到同樣的結果。

在上面的範例裡,圓錐體的頂點和立方體的角位於同一個位置,這樣的情形會造成布林運算失敗。

Instead of using Boolean operations in this case, use the Explode command to separate polysurfaces into single surfaces if necessary. Use the Intersect command to create curves that represent the intersection of the two surfaces. To create the parts, use these curves to Trim and/or Split and then Join them back together.

請參考

McNeel Wiki: Boolean FAQ