Ooh, thats a way back, pretty certain its in this thread though.
I have an encoder, a basic linear way(nylon block in channel) the encoder connects to a 2.5mm pitch belt in a loop, along the loop is connected an angle bracket facing an R8 socket.
The encoder is connected to an ENC module for the CSMIO, Mach3 has a macropump macro that looks at the input from this encoder and displays it on my screen-set, real-time. The screen has a "Zero" button and a "Set" button. The angle is lowered onto the socket on the setter, zero is pressed and the tool fitted, angle is lowered onto the tool tip and "Set" is pressed - this copies the encoder DRO to the tool table and then shows the table so you can give it a name etc.
Takes seconds to do, you can load tools in the middle of code if you forgot one or break one etc. The actual "height" displayed is irrelevant, its in an R8 socket which always locates on a set part of the taper just as the spindle does, the Haimer probe i use for TOM setting is also measured and entered - all my work is relative to this "tool".
The only cost was for the ENC module, the rest is all junk-box bits. It was a fun project basically, but quite useful.