Apologies for lazy question:

Apologies for lazy question: I’m miles away from my CNC drivers so can’t emulate this. I’m coding the z interpolation to smooth the autolevelling across long travels…

Assume I’m at the origin.
If I have a line of code such as this
G1 X50 Y50 Z-3 F600

Is that interpreted as creating a movement vector to the three D position 50,50,-3? Or to 50,50 followed by a z move?

I suspect it is the former because I recall some boards being ruined by some progressive digging in of the end-mill

If this is true then for autolevelling the code currently attaches a z value to progressive Gmove destinations. So creating potentially unwanted travel through the board. To some extent this is solved by having multiple interpolation points - but I question whether it is logical anyway. And whether the z moves should be inserted as separate lines at each point. Any thoughts on this?

And as a follow up question: is there any difference for G0 and/or arcs (although my brain hurts when trying to do the geometry on a three D arc)

The machine will equally move all 3 axis to the destination coordinates. Imagine a straight line between the starting point and the final point defined by X/Y/Z of the G1 command.

Thought so.

Do you think this is a desired result from the autolevelling process? The alternative being that the z moves are only at the termini.

Autoleveling as of now works in a way that raise Z to a predefined height and then move X/Y only, then down Z till touch down, Z up again and next X/Y point from the autolevel array. There is never a movement where X/Y and Z move together in one move.

More likely you will have:
G0 Z3 F100
G0 X50 Y50 F600
G1 Z-0.5 F20
G1 Z3
G0 X55 Y50
G1 Z-0.5
G1 Z3

Z feedrate should be quite slow when probing.

Sorry for not being clear. I was talking about the imposition of the height matrix on gcode after probing.
This has been a long requested enhancement.

This would be great, but even linear approximation with small enough point-to-point distance in the autolevel array is fine for flat areas like PCB.

I use auto-leveling quite a bit, not for PCB but for engraving in wood. Even if milled perfectly, by the next day most wood will have warped and changed thickness. Even a shallow cut with a 90 degree V bit readily shows these variations.

After applying the height matrix, the motion should be a line in the X, Y, and Z axis to the next point. My vote.