Boolen union extruded letters

Hey Guys

BooleanUnion is serious math… Hats off to Rhino team - it gets better every release.

Have got a closed solid polysurface and need to booleanunion extruded letters into the poly… Have got most of the letters to union by using the trick of first using split and then doing the union… However, a few letters just wont do the split,then,union (even when I move their positions slightly to goose the split math).

See attached file. Need a trick of two, if you guys can think of something…

50 mm sized base 20 sided die.3dm (5.5 MB)

colorado roger…

Hi Roger - it looks like you have some faces that are inside what looks like it ought to be a void - here’s a section curve:


Damn, that’s cool. thanks pascal… I’ll give it a look, not sure how this happened…

Hey Pascal;

Please take a look at the attached base shape with which I would begin booleanUnion the extruded letters with. Is this shape clean? and, how do you do this analysis?

Colorado Roger

base 20 sided die.3dm (247.9 KB)

Since it’s all flat, degree=1, trimmed surfaces, there isn’t a lot that can go wrong.
You could run Shrink Trimmed Surfaces to remove a bit of unneeded area. You might even use Merge All Faces to remove unneeded detail. Since it can be Exploded and Joined again into a closed, solid, polysurface, it’s in pretty good shape.

The idea with NURBS modeling is your goal is to always have the least amount of control that still accurately describes the shape you want. Single-span Curves should have 1 more control point than their degree to be efficient. A degree 1 (straight) curve should have 2 points. A degree 2 (conic) curve should have 3 points. A degree 3 (wiggly) curve should have 4 for a single-span curve. The same goals apply to NURBS surfaces.

thanks John. I would have never thought of that… Serious science indeed.

Okay, so I trimmed and merged and started clean with the work to get the numbers to Boolean Union with the fascited icosahedron…

And, still hit a dead end. First number (“1”) whet smooth-as-silk. Then, the “2” next to it failed (even if I first tried the trick to Split the “2” before the BU… (Note: looking at the result of the split operation shows some weirdness re the intersection of the number with the icosahedron.)

Any other magic in the hat???

see attached file here… test case 34 mm base 20 sided die.3dm (702.8 KB)


Colorado Roger

Here’s a more in-depth analysis illustrating why Boolean Union is failing.
See attached file.
failed split test case 34 mm base 20 sided die.3dm (870.2 KB)

BU first performs a spit operation. When I split one of the numbers (in this case the “2”) with the icosahedron the spit operation is wrong. To illustrate this please see in the file the original number as extruded as well as the two components of the number “2” after the split. The split line does not follow the surfaces of the icosahedron.

Thoughts please.



Your icosahedron is not cleanly modeled.
Each of the surfaces that make it up should be triangles.
When I Extracted the three surfaces in the area where the 2 should go, these are the surfaces I found:
I changed their colors and switched to a Ghosted display for clarity:

After trimming the extra away, this is what it should look like:

I Joined the three surfaces, moved the “2” to a visually close location, and the BooleanUnion worked as expected:

I think if you clean up your icosahedron, your Booleans will work as expected.

Yup… 100%. Apology for stating the BU and Spit were not functioning correctly. The cleaned-up icosahedron completes the BU’s perfectly.

You guys are rock stars. Rhino is amazing. For the record, 1000% better than the products from one of your largest competitors.

Much thanks again.


My first suggestion was to use Intersect and inspect the curves.
Instead of 1 closed polycurve, your curve segments would have not been Joined since they came from three surfaces that did not have Joined edges where they visually should have.
That was the clue that indicated your icosahedron was not as it appeared.
Extracting the surfaces that were to be involved in the Boolean plainly showed the underlying problem.

The Intersection curve between the three cleaned up surfaces and the “2”, is a single, closed polycurve that will work correctly for Trim/Split.