i need to create one mesh that is the union of multiple meshes (teeth and gum) and export it like STL.
I tried use Ab3d.Utilities.MeshBooleanOperations.Union, creating a mesh with 1 and second then create a mesh with third an the result of the previous one and so on.
But It results a big mesh (about 100 mb instead of 8) and the mesh has a lot of holes (see attached png).
Is there another way to do it?
You can use Ab3d.Utilities.MeshUtils.CombineMeshes method and pass all the meshes to the method. This will just add the positions and triangles to the final mesh without any additional logic.
The MeshBooleanOperations.Union can also use the CombineMeshes method when the specified meshes do not intersect. But when they intersect, then a standard Boolean Union operation is performed - this can create many additional 3D positions because Constructive solid geometry is used for that operation.
I tried with CombineMeshes and it works!
Opening the exported file stl with rhino it results only one mesh, but when i try to 3dprint it the printer says "can't print because unclosed contours are detected!".
Do you know why?
I do not know what is expected and what kind of meshes you use. Maybe the problem is that the 3D printer do not like that there are parts of one mesh inside the other mesh (this happens because triangles are just merged and no regular Boolean operation was performed).
I would advise you to merge two simple boxes so that they will intersect and try if the 3D printer would complain. If this will work well, then try to find the problematic mesh by skipping different meshes when exporting.
I would assume the merge has left open vertices, 3d printers need 'watertight' meshes