BooleanDifference failing with two valid closed solid polysurfaces!

Hello there!

I am modeling molds to cast concrete with. In the attached file you will see that I have successfully booleaned something very similar. Even though both objects are valid closed solid polysurfaces, they refuse to boolean. Also when I run the intersection command, none are found, but that was not that case with the other mold. what is going on?!

Appreciate any help, really need to get this mold printing asap!

UNIT_B PROBLEM.3dm (874.5 KB)

Hi Britanni,

Boolean difference doesn’t like coincident faces . Sub-select the top face of the cutter piece and use the Gumball to move it up slightly (Or use the older _MoveFace command to do the same):

After that your boolean will work.

HTH
Jeremy

P.S. you have some very sharp internal angles, like this one:


which won’t give a clean finish to your concrete. You might want to rethink those.

1 Like

Re several other recent threads on Boolean operations… when stuff fails, go back to manual.

I this case, remove the top surfaces of both objects, create a planar surface with their edges and Join. 10 seconds.

1 Like

Yes, they will likely break right off…

Fantastic advice! Lifting the surface worked like a charm and going manual worked like a breeze, like you said, 3 seconds.

Running into the same issue with another block though. Both are valid polysurfaces and I used both methods suggested to make sure they would boolean, but again, not happening.

UNIT E_PROBLEM.3dm (700.9 KB)

You have some microsurfaces between the flutes that are about the same width as your tolerance. For example:

And you have a bad surface (that probably derives from the same issue):

You also have some redundant surfaces buried in the middle that aren’t part of either object. They wouldn’t stop the boolean but should be tidied up:

After adjusting the arcs of the flutes that didn’t quite meet, I used the revised curve to retrim the top and swept new sides where I had changed the arcs, trimming to the lower cutaways as necessary. I did something similar with one of the lower arcs so that its ends matched the ends of the upper arcs, retrimming the bottom and resweeping the side. I then had to replace a couple of the undercut faces to match the new sides. On joining I was left with one naked microedge which I removed with the _RemoveAllNakedMicroEdges command. That gave me a closed polysurface that will difference from the outer box.

Here’s a model with the revised inner:
UNIT E_PROBLEM 001.3dm (1.1 MB)

So basically, the issue was very small inaccuracies in the model, of similar size to your tolerance setting, and particularly the invalid surface.

If I might make a couple of suggestions to help with future modelling:

  1. Your choice of units is unusual:

and the fractional dimensions are not fine enough to reveal inaccuracies. I would display decimal places with a precision set to at least your tolerance and perhaps (a personal preference) two or three places finer.

Secondly, take advantage of the Layers feature to place elements on different layers using different colours. It becomes a lot easier to see what is happening.

HTH
Jeremy

Out of interest, how are you creating the fluting? I’m interested in how the slight inaccuracies arose.

Hi Jeremy, wow! Okay this explains so much. I was only putting things into their own layers after differencing them but I see it would help even before then. As for creating the scalloped surface, if I remember correctly I simply used arraylinear to multiply an arc I was happy with and joined all the curves together.

What is interesting to me is that the curves used for the facade scallops formed a closed curve before using them to create the polysurface, perhaps why I didn’t believe that there should be any inaccuracies.

I usually work in feet/inches so the fractional setting felt more familiar but I’ll be double checking everything in decimal now, thank you.

I was also checking for bad surfaces using extractbadsrf and checking details in the properties, and consistently got the “valid polysurface” notice. Did you use something different to check for bad surfaces?

All in all, thank you so much! I really appreciate all the tips.

bee

@jeremy5 's excellent cleanup still seems to have a pair of tiny edges and a very tiny face (little red dot).

I’m not sure if that’s an issue for your downstream data process.

1 Like

Well, don’t forget I reconstituted the curves from the border and we are only talking about faces around the width of the tolerance, so I can’t say if they were there in the curves originally, arose during the building process or were a result of the extraction. If you have the original curves you could explode them and, in the top view, do a box select around an intersection and see if you pick up a short line. Zoom in if you want to see it. Repeat for each intersection. In my reconstituted curves there was a short line at more intersections than not. Occasionally there were two.

Also, I anticipated that the curves would be circular arcs but they are slightly elliptical. Again, that might me a consequence of the build process in joining surfaces.

I deleted a couple of the scalloped surfaces and the bad surface became visible as a distorted fill so I selected it and looked at its details under Properties.

Regards
Jeremy

1 Like