Closed solid polysurface creates phantom surfaces after MergeAllFaces command, turns into bad surface

I have an issue most have likely come across. I also know this is a common forum question, but I never seem to find a clear answer.

I have a series of closed solid polysurfaces that I am attempting to BooleanUnion together for an STL-format 3D print. All have no nonmanifold edges and no naked edges and are not bad surfaces. There are two isocurves that exist on one of the closed solid polysurfaces and I would like to MergeAllFaces, but as soon as I do that it creates a phantom surface that spreads across the volume and turns into a bad surface.

I have tried exploding the closed solid polysurface and joining it back. I realize there might be a sliver that is making it not one continuous planar srf (hence the two isocurves), but it is way too small to detect. I also tried BooleanDiff across each surface but failed.

I’m asking because I can no longer do any sufficient boolean operations and it’s more than likely due to those isocurves.

Hello - we can probably help - please post a file with the objects or send to


Pascal- This is Isaac244 from a different account.

Please reference the file that is attached.rhinoforum-mergefacesbadobjects.3dm (12.5 MB)

Hello - the objects are very thin compared to the file tolerance


The file tolerance is .01.



merging all co-planar surfaces will always have this kind of problems, mostly when trying with several surfaces at once, one strategy could be using _MergeFace to do it by pairs. Other solution can be extract the surfaces , use _DupBorder and then use _PlanarSrf to regenerate a new planar face which include the other small ones.
and thrid, if those surfaces are really co planar, extract them and use the _Cap command… if it doesn’t works, means you have non planar holes.

1 Like

Hi Diego - it should not if the tolerances are more reasonable compared to the objects’ dimensions.

1 Like

Thank you, Pascal. My workflow has consisted of taking a full-scale Revit model and scaling it down to 1"=40’-0" for the purpose of 3D printing. Does this mean I should set the absolute tolerance to .001 prior to scaling?