Quote Originally Posted by stirling View Post
FWIW - the *conventional* way of doing this is to use gcode IHS (Initial Height Sensing). No reason why you shouldn't use a/the M3 macro - just saying that it's *usually* done in gcode.

One thing you might want to consider if you go the macro route is you'd really need to pass a parameter to M3 because your pierce/cut heights will differ depending on what material type/thickness it is you're cutting.
Wouldn't need to pass anything to m3 because G31 was just being used to set Z zero to height of material rather than using G92 coordinate offset. Difference being some error checking and intelligence could be applied.! The pierce height etc would still be in G-code.

But like you say more than one way to do it and if does the Job then great.