Difference boolean for overlapped objects or any possible alternative I am trying to generate a geometry using Math Function (XYZ function) as in Fig.1  using version 2.79.

I ideally would prefer to have three independent objects and merge/join all 3 objects as one and export as an stl. I am aware of the 'join' function but this would not eliminate the overlapped boundaries in the stl file (that is the stl file still marks the boundaries of the objects present in the joined stl) which is not what I want. Therefore, I taught 'difference' boolean can be used but was causing major issues.

The steps I followed were,
Step1: Model bottom half part of the geometry as in Fig.2 (see for equation used).


Step2: Copy paste Part1 to get Part2 and rotate 180 along Y as in Fig.3. This results in an overlapped portion of the objects.


Step3: Add Part3 to finish the geometry as in Fig. 4 by copy past part1 and rotate 270 along Z. Again this has overlapped portion of the object.


Now, I extrude each object individually and select a plane to apply the difference boolean. Unfortunately, this works very rarely and most of the time I end up with an unsnapped plane as in Fig.5. How can I avoid this?


For reference, I attach the blender file with 3 objects. I have not included the extrusion of the objects and difference boolean in the .blend file to make it flexible to work for others.



Do note that, I am using a maximum number of vertices for the math function (1024) as for my purpose I would like to have accurate tangents and normals to the surface. I did try out the "remove double" but still, I have some unwanted parts in the geometry.

Thanks.
Boolean have limitations, as described in blender wiki:


  Boolean operates best on water-tight meshes, where inside/outside is
  clearly defined.
  
  The following characteristics are known to give bad output.
  
  
  Open volumes. 
  Overlapping geometry. 
  Self-intersections. 
  Zero-area faces.
  
  
  While they may not fail in all situations, they aren’t guaranteed to
  work properly.


When you join meshes you create Overlapping geometry and Self-intersections, that makes bad result.



So make 3 separate booleans to avoid self-intersections. 



Or maybe try different ways to build geometry, for example Animation nodes or Svercok ?

Or instead of using booleans remove useless parts of mesh manually, in edit mode?