This shows you the differences between two versions of the page.
ko:rhino:booleanfaq [2020/08/14] |
ko:rhino:booleanfaq [2020/08/14] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Booleans frequently asked questions ====== | ||
+ | > **Summary: | ||
+ | |||
+ | ======Introduction====== | ||
+ | Boolean operations can be great time saving procedures for constructing objects in Rhino. | ||
+ | |||
+ | **//To understand why Booleans fail, first you must understand how they work.// | ||
+ | |||
+ | So, the first thing to keep in mind here is that a **// | ||
+ | |||
+ | =====Boolean operation failed...===== | ||
+ | OK, why do Booleans fail? First and foremost, it is the intersection operation that will determine the success or failure of a Boolean operation. | ||
+ | |||
+ | Intersecting 2 closed (“solid”) objects should produce at least one completely closed intersection curve (i.e. a loop). It’s possible there may be more than one loop if the object intersect in multiple spots – no problem if they’re all closed. | ||
+ | |||
+ | > **Note:** //Doing Boolean operations on open objects is also possible, but a bit more complicated, | ||
+ | |||
+ | So, having taken the above into account, if your Boolean operation fails, the first thing you should do is check the intersection of the objects. | ||
+ | |||
+ | =====Intersection problems, solutions and limitations===== | ||
+ | What can cause gaps or problems in your intersection? | ||
+ | |||
+ | If you think your intersection should be closed, but it’s not, select the curve, and call **CrvStart**, | ||
+ | |||
+ | If you can’t get Rhino to automatically produce a closed intersection curve even after you have fixed your object the best you can, it may be time to go back to “manual”. | ||
+ | |||
+ | //<color blue> | ||
+ | |||
+ | <color brown> | ||
+ | |||
+ | <color brown> | ||
+ | |||
+ | <color brown> | ||
+ | |||
+ | <color brown> | ||
+ | |||
+ | <color brown> | ||
+ | |||
+ | ===== " | ||
+ | |||
+ | <color brown> | ||
+ | |||
+ | **[[http:// | ||
+ | |||
+ | **[[http:// | ||
+ | |||
+ | This is an example of a solid that can not be constructed with solid primitives and surface editing techniques are required. | ||
+ | |||
+ | * The main problem is the condition of the side surfaces that are coincidental and do not shared a volume with the main solid piece. When Booleans fail, rely on using surface editing techniques as described in the steps in the linked document. | ||
+ | * Download the [[http:// | ||
+ | {{: | ||
+ | |||
+ | ---- | ||
+ | ======Boolean operations on open objects====== | ||
+ | |||
+ | As mentioned above, Boolean operations can also be performed on open objects. | ||
+ | |||
+ | =====Surface Direction===== | ||
+ | |||
+ | First, it is necessary to understand the concept of surface normals and direction. | ||
+ | |||
+ | For each surface, you can flip the direction of the normals (i.e. invert the sided-ness of the surface. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | > **Note:** //Curves in Rhino also have a direction which can be shown by the **Dir** command. | ||
+ | |||
+ | When surfaces are joined, Rhino tries to " | ||
+ | |||
+ | > **Experiment: | ||
+ | |||
+ | When an object is closed in Rhino, the program automatically flips all the surfaces to the outside. | ||
+ | |||
+ | > **Experiment2: | ||
+ | |||
+ | =====How surface direction affects Boolean Operations===== | ||
+ | |||
+ | OK, now you understand about surface normals and direction. | ||
+ | |||
+ | Booleans with " | ||
+ | |||
+ | > **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 be able to know which way surfaces are facing is to set up your display to show backfaces in a different color from front faces. | ||
+ | |||
+ | Let's imagine the simplest " | ||
+ | |||
+ | Now, try **BooleanDifference** (BD). Select the solid as the first set and the cut plane as the second. | ||
+ | |||
+ | You can't know unless you call **Dir** on the surface. | ||
+ | |||
+ | In general, if you want to BD between an open (poly)surface and a solid to work as if it was two solids, the surface normals of the open object should point //towards// the solid object - just as if it were also a solid. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | In V4, [[rhino: | ||
+ | |||
+ | |||
+ | |||
+ | |||