Some things I have learned by doing some hacking.
The Zero panel allows you to enter coordinates for X, Y and Z. But as soon as you leave the field the values revert back to what was there before. It appears to me the programmer allowed input and then forgot to add the code to handle any data that was entered.
So this was a dead end.
I then found that codes G10 L2 and G10 L20 are supported by Carbide Motion. These codes seem to be what I am looking for.
I want my Work Origin to be -826.44, 16.04 in Machine Coordinates
If I home my machine and clear all offsets, Carbide Motions shows my current position to be -5, -5, -5. Opening the log window I see:
So Machine and Work coordinates are the same. (Which is what is supposed to happen when you clear all offets)
If I use MDI to send the codes "G10 L2 P1 X 826.44 Y -16.04" Carbide create shows that my current coordinates change from -5, -5 to 821.44, -21.04. Which is my current position in Work Coordinates.
But the log window still shows:
Which implies that Carbide Motion keeps the Work coordinates offset internally, and does not set the GRBL coordinates.
It seems to me that you pass to G10 L2 the Work Coordinates of the Machine Origin. Which seems a bit backwards to me. But if it works I will not complain.
The G10 L20 seems to be for the relative position. To set the Work Coordinate origin, you give it the Work Coordinates of the current position. Then Carbide Motion shows your position to be whatever you passed it.
In my example I would use the string 'G10 L20 P1 X821.44 Y-21.04'
I have not idea what the 'P1' is for. But if you leave it out you get an error. If you give it a number other than 1 you get an error.
If someone can explain what the P1 is for and/or why this works I am very curious.
But for now I am happy I have the codes I need to set the Work Origin after homing the machine.