This sounds like a good idea to me. If I had an ATC (and an automatic tool length setter) I would very much want to implement a similar macro. I wish I could offer more advice on the subject, but this whole area is pretty foreign to me. Perhaps this post will help get the ball rolling a little more...

So, it seems like this would actually be pretty simple. You'll want to add your new macro to the "M6 end" file (sorry, I've forgotten the exact file name) in the Mach3 installation folder. The macro simply needs to...

1. raise the head
2. move the table to the location of the tool setter
3. lower the head (I assume by using a G31 move) down onto the tool setter
4. then compare the Z DRO value against "0"

If the new Z value is very close to "0" the macro should allow the M6 tool change to continue, otherwise it should pause the program and throw an error message. Unless someone else beats me too it, I'll try to write a test macro when I get on my desktop computer.