This is a good thread!
My probing support is in sort of a middle ground, niether fully manual, nor fully automatic. My automatic touchoff probes, and my manual touchoffs, all get logged to a file, courtesy LOGAPPEND/LOG/LOG_CLOSE. For a long time that log wasn't used -- it was just a byproduct of some sample code I'd started with over a decade ago.
But earlier this year I had a need to match the machines coordinate system to my workpiece. ((It was easier than trying to get it clamped down in perfect alignment.) So I wrote some (external) code to pull data from that probe logfile. The code took the last couple of touchoff points, and calculated the rotation angle of a line drawn through those points. And then printed the g-code command necessary to adjust the current coordinate system's rotation, i.e. "G10 L2 P0 R $angle". Later, I realized I could also use the log to find the center point between two probes, so I added that. If the two most recent probes were both done in the same direction, then they were likely probing an edge, and it prints the angle of the edge. If they were done in opposite directions, they were likely probing two edges (inside or out) of something whose center I'm interested in.
And then today, after finding this thread, I enhanced it a little more: It can now also look at the last three probes in the log file and give me the center point of the circle they describe.
All without any data entry, or modifications to my existing probing code. It runs from a button on my desktop (i.e. outside of and beside Axis), and puts up a window with its results. I simply copy the g-code commands it gives to the MDI window.
I'm happy to share what I have, but with caveats: a) it's written in shell, because that's what I like to do, and b), it calls out to a calculator program for the floating point. Almost any other language would have avoided 'b'.
Anyway, thanks for the inspiration, and for the center-finding equations.