I've _almost_ had an accident with a workpiece, but caught the bit traversing the wrong way, and hit the E-stop before it ploughed across the piece.
Attached are two files, identical except for the depth increment for the finish pass.
I spiral drill a hole, then ask for a toolchange (in this case, it's the same bit, it's just an opportunity for me to clean up the workspace, and check the work). I then (presumably) rapid to the same spot and do a full-depth finish pass.
If I set the depth increment on the finish pass to the full target depth, then after a tool change, the bit slowly ploughs across the whole workpiece, moving on a G1 from the toolchange position (say, -3,-3,3) all the way to the target depth. Of course, the G1 moves in all three axes, as it should.
If I set the depth increment only a ten-thousanth shallower (say -.7499 instead of -.75, as in the example), then it properly does a G0 to the target location. The G0, of course, moves to the target position first, before plunging to depth. This is what is desired after a tool change.
CutViewer doesn't show the error, because it doesn't show a toolchange as altering the position, but in reality, many machines move to a "safe change" position off the workpiece for a toolchange.
These results are duplicated if I change to all three available optimization methods.
I think this is a bug, Andy, unless I misunderstand how the G1 and G0 commands should work.
BTW... I tried this with the Mach 3 post instead of my own, and the symptoms somewhat change, but it still issues only a G1 after the toolchange, which traverses at the cut speed, instead of rapid.