Bolean difference: "an unknow fatal error has occurred in the current tool"

Bolean difference: "an unknow fatal error has occurred in the current tool"

Anonymous
Not applicable
50,643 Views
17 Replies
Message 1 of 18

Bolean difference: "an unknow fatal error has occurred in the current tool"

Anonymous
Not applicable

Hi everyone,

I have a problem that I can't solve alone so I'm asking your help.

I have to make a Boolean difference between two STL file but when I try to do it on mesh mixer it says me "an unknow fatal error has occurred in the current tool. Aborting." 

 

I give you more detail but I don't know if I they are important. 

I started from a TC (computed tomography) that was in a format called DICOM. I convert it in an STL file.

I imported it in meshmixer and then I imported a second STL file into the same project (I chose the option append when I import the second file). Then I select the second file and then the first one and I chose boolean difference. I have to wait a while but then mesh mixer show me the result. When I click accept appears a window with this message: "an unknow fatal error has occurred in the current tool. Aborting." 

The mesh mixer's version I use is 3.5.474 on Mac OS  10.13.1 .

 

How can I do? someone can help me? 

I'm a beginner so I hope that the problem is simple to solve 😉

Thanks in advance 🙂

Accepted solutions (1)
50,644 Views
17 Replies
Replies (17)
Message 2 of 18

Anonymous
Not applicable

Guess what you saw as a preview in BooleanDifference was in rendered in red all over?

Red means a non valid solution in a boolean operation.

A preview of a valid solution appears in orange(surface of mesh B) and blue (surface of mesh A).

Accepting a red preview results in this error message.

 

Meshmixers booleans try to find a (or several) loop(s) where both meshes intersect. This loop must not be interrupted by a hole (or some other error) in one of the meshes.

Run ANALYSIS/Inspector on both meshes before doing the boolean. You need to fix mesh errors at least at the regions where the meshes intersect (click on the spheres of the markers pointing to this region if you do not want to run RepairAll).

 

As booleans are tricky, there may be other reasons for the failure too: As redundant surfaces, noisy surfaces which result in an amount of intersections which MM can't handle , bad tessellation (in this last case SELECT/Edit/Remesh helps a lot), high difference of triangle densities in mesh A and B, self intersections in one or both of the meshes....

Message 3 of 18

Anonymous
Not applicable

The preview was red :(.

I try to use Inspector on both files (one by one) but it doesn't work.

 

I think that "self intersections in one or both of the meshes" could be the problem. I think so because the first file is the maxillary bone with the upper teeth and the second file is only the teeth. I superimpose the two file to subtract the teeth from maxillary bone to obtain only the bone with the holes left by the roots of the tooth (alveolar bone).

Do you know what can I do to make it work?

thank you for the answer 🙂 

 


@Anonymous wrote:

Guess what you saw as a preview in BooleanDifference was in rendered in red all over?

Red means a non valid solution in a boolean operation.

A preview of a valid solution appears in orange(surface of mesh B) and blue (surface of mesh A).

Accepting a red preview results in this error message.

 

Meshmixers booleans try to find a (or several) loop(s) where both meshes intersect. This loop must not be interrupted by a hole (or some other error) in one of the meshes.

Run ANALYSIS/Inspector on both meshes before doing the boolean. You need to fix mesh errors at least at the regions where the meshes intersect (click on the spheres of the markers pointing to this region if you do not want to run RepairAll).

 

As booleans are tricky, there may be other reasons for the failure too: As redundant surfaces, noisy surfaces which result in an amount of intersections which MM can't handle , bad tessellation (in this last case SELECT/Edit/Remesh helps a lot), high difference of triangle densities in mesh A and B, self intersections in one or both of the meshes....



0 Likes
Message 4 of 18

Anonymous
Not applicable

I try with another file that I found on the internet but it did't work :(.

I make the boolean difference and the preview is perfect but is red! 

 

If you want you could download the Meshmixer file (.mix extenction) here: https://www.dropbox.com/s/izh3juypclpjovf/Impronta.mix?dl=0

 

 Schermata 2018-06-14 alle 21.43.05.pngSchermata 2018-06-14 alle 21.43.11.pngSchermata 2018-06-14 alle 21.43.35.pngSchermata 2018-06-14 alle 21.42.09.pngSchermata 2018-06-14 alle 21.42.20.pngSchermata 2018-06-14 alle 21.42.51.pngSchermata 2018-06-14 alle 21.42.44.pngSchermata 2018-06-14 alle 21.42.57.png

0 Likes
Message 5 of 18

Anonymous
Not applicable
Accepted solution

Two issues:

- Doing the selection for the extrusion of the upper jaw you missed a tiny region. This results in a tiny inside "tower".

(If you run Modify/OptimizeBoundary after a selection you can get rid of such tiny missed areas) > attached image

- Your stock object "MeshSO12" owns a too small mesh density.

----

Both issues together result in your Boolean failure.

In MM Booleans try to refine the regions around the curve of intersection. By default Booleans run three attempts. Each new attempt refines these regions finer. But also the finest refinement of the third attempt isn't enough to allow that tiny tower (it intersects the upper surface of the stock).

(You could set a higher SearchDepth in the Boolean properties panel to get more than 3 attempts. But this means a longer computation time which is already pretty long with 3 attempts)

----

Planing a boolean operation the first thing you should check is the density of the involved meshes. Their wireframe (hit W to switch its rendering on/off) should own a similar density. 

Two ways to refine an object:

- SelectAll and run Edit/Remesh with a high Density value (e.g. in  RemeshMode: LinearSubdevision)

- EDIT/MakeSolid and set MeshDensity to a value giving the needed density

If both objects own a similar density Booleans are much faster as their refinement steps start at a higher level.

On your stock object I did MakeSolid with a MeshDensity at 300. BooleanDifference worked fine and gave a valid solution in its 3rd attempt (without fixing that "tower" issue of the jaw)

---

If a boolean operation fails and the preview is red:

Look for red lines - in your case you're lucky for there's a single one only. Those lines point to problematic regions you need to fix. 

 

 

Message 6 of 18

Anonymous
Not applicable

Hi, I wonder if you could help ? I am trying to cut out a tube-sized hole in an object (so that I can slice it and then connect it with a steel part when printed). Your advice above works brilliantly for me when I have the tube 'sticking out' of the source object (Boolean difference cuts a tube out), but when the tube is in the middle of the source object (which is what I want) it doesn't work. Any ideas why ? (sorry but I'm new to meshmixer)

Thanks

John

0 Likes
Message 7 of 18

Anonymous
Not applicable

Hmm, does that mean that you can do BooleanUnion while BooleanDifference fails in the very same situation? That shouldn't happen...

Check if ANALYSIS/Inspector detects issues on the two objects.

Try to run SELECT/Edit/Remesh on  a selection where you want to get the Boolean before.

 

If that doesn't help I'd need some screenshot (wireframe on) before the Boolean.

0 Likes
Message 8 of 18

Anonymous
Not applicable

Thanks for the reply ! I've attached the 2 objects. Neither BooleanUnion while BooleanDifference work - I get the usual 'An Unknown Fatal Error has occured'. Nothing comes up on Analysis, and I've done a MakeSolid with a Density of 340 on both. Do they look similar mesh densities ? Any help greatly appreciated.

Thanks

John

0 Likes
Message 9 of 18

Anonymous
Not applicable

Sorry, your images are that small. I can't see why Booleans might fail. Maybe there are too many intersections of the objects' surfaces.

 

BUT: Keep your workflow simple as possible. You can get what you want much easier and without any Boolean:

1. Create a cylinder with the diameter of your metal. Transform it to a position inside your model and SelectAll of it (Here I dragged the transparent shader onto the source model):

Ohne Titel 3.jpeg

Now do Edit/FlipNormals:

Ohne Titel 4.jpeg

Now activate both objects and do EDIT/Combine. This makes the cylinder an interior cavity.

Run EDIT/PlaneCut:

Ohne Titel 2.jpeg

Now EDIT/Separate shows the dowel hole on both parts:

Ohne Titel.jpeg

Think that's easier, quicker and more robust.

Message 10 of 18

Anonymous
Not applicable

Again works brilliantly. Thanks so much for your help. I'd be messing around for days if it wasn't for you.

Cheers

John.

0 Likes
Message 11 of 18

Anonymous
Not applicable

Sorry for asking another one. How do you remove the shader ?? (ie set the opacity back to normal). I can't find it anywhere !

Thanks

John

0 Likes
Message 12 of 18

Anonymous
Not applicable

There are 4 spheres in the topmost row of SHADERS:

From left to right: Phong(opaque)Shader, FlatTextureShader, PhongTextureShader and X-RayShader.

Drag the X-Ray sphere onto an object to turn it to transparent (red arrow)

Drag the Phong sphere onto an object to turn it back to opaque

Ohne Titel.jpeg

General note on using shaders:

A: If you drag a shader onto a object: The shader is assigned to this very object only while other objects aren't affected.

B: If you drag a shader on empty space: All objects without an explicit assigned shader (via A) get the new shader.

 

If you Combine two objects with different shaders: MM uses the shader of the first activated object to use it on the Combine result

 

The topmost row of SHADERS as well as the UV-Shader (2nd row left) and the OverhangShader (next to it) are functional shaders implemented in the code of MM. All other spheres are ImageShaders (you can create your custom images to use it as I did here). Means: MM uses a 2D image of a sphere an assigns these color informations on triangles with corresponding surface normal directions.

0 Likes
Message 13 of 18

Anonymous
Not applicable

Brilliant. Thankyou.

0 Likes
Message 14 of 18

Anonymous
Not applicable

Hi, I'm trying to do another Boolean on some extruded text and an object (double-extruded into the object), but I get the famous blue vertical lines and then it crashes. I've done a remesh on both objects on 50% and they both look quite dense (see pics) but I'm getting nowhere. I tried a make solid but the object lost a lot of detail. Any help gratefully appreciated as usual.

Thanks

John

0 Likes
Message 15 of 18

Anonymous
Not applicable

Hard to guess the reason for the failure from your images...

Does  the text object actually intersect the base or is it just in contact to the base? If there are redundant surfaces Booleans fail.

0 Likes
Message 16 of 18

Anonymous
Not applicable

Sorry I hadn't spotted the settings on 'Make Solid' for higher accuracy (ie 'Sharp Edge Preserve').

I did a make solid on both objects with a mesh density of 300 and it worked (and quickly !)

Thanks

John

0 Likes
Message 17 of 18

Anonymous
Not applicable

I just wanted to jump in here and thank you, Gunter.  This thread helped me immensely with my boolean operations in Meshmixer, and I learned a TON.

 

Cheers!

0 Likes
Message 18 of 18

Anonymous
Not applicable

I have encountered this same fatal error problem when doing Boolean Difference with patient CT Dicoms imported via Slicer program and then into Meshmixer and saved as .obj files. I have tried the recommendations in this thread in an attempt to overcome the error. I was not successful in readily/easily overcoming the problem until I reviewed the YouTube video (https://youtu.be/phJQmbweNf0) (English version: Meshmixer fatal error boolean difference remove internal geometry) which perform selection of the external surface, inversion, deletion to remove the internal imperfections, prior to making the object solid.

0 Likes