TurbulentFluid:
The first thing that you need to do is do a connect check on all surfaces. You would need to multi-select all surfaces to be joined, and then use the "connect checker" function. (c: Connect Checker in power input, if you can't find it)
The result of this analysis will tell you the MINIMUM distance required to close. It must be under .025, and you also need to watch for surfaces that do not connect. (as in overlap) So for example, if your surfaces analyze with a max value of .007, then you would enter .007 (possibly .008) into the merging distance in the "join" command, or fix it, if you want it more accurate. If you are translating data to another CAD system, it is highly recommended - at least by me - that you work to get your merging distance as close to the minimum .001 as possible.
Secondly - sometimes it is possible that you can get a join, even when the geometry is not suitable for closing. This happens when surfaces ovelap, but they are joined by an adjacent surface. To find this condition, you would need to use the "boundary" function. (c:Boundary on power input) If there is an overlap, a green boundary will be created around the offending geometry. (it just puts a boundary on any unclosed edge, so it's a slick trick for finding it fast)
Third - and most important - "heal" is no way to design surfaces. If you just need to tweak data fast, to get it useable, it's OK - but a marginal function, at best. NEVER rely on heal to be your save-all function. It should always be used with a boulder sized grain of salt. Usually, you just need to fix the surfaces manually.
Hope that helps.
---
CAD design engineering services -
Catia V4,
Catia V5, and
CAD Translation. Catia V5 resources -
CATBlog.