@DonStauffer
My lead screw is at 38+22=60, so my M671 gets Y60. But, I still want to move the carriage to 38mm from the end stop, so my G30 has to have Y38, right? If I do Y60, that would put the primary nozzle even with the lead screw; not what I want.
My X/Y origin is centered, and I have two nozzles and a probe as well. For me, that’s quite an intuitive setup, never had problems implementing this scheme. But the way you wrap your brain around it makes me crazy: It’s simply insane to mix selected GCodes with the geometric idea. I propose not to do that.
It’s so simple: as @jay_s_uk pointed out, ”everything is relative to the nozzle” - or, more precise, relative to a single point of the print head. For practical reasons, take the primary nozzle for that.
This point (of the head) can be moved around within the physical limits of your machine - two of these limiting points are usually defined by the X and Y endstops. Once you’ve probed these (X and Y), you have a known physical area which cannot be exceeded (and should not be fully exploited).
Now, tape some paper onto your print bed, cross-mark the center of it, then jog the printhead (i.e. its reference point) over it. Note the X/Y coordinates, these will later be used to define 0/0 of your printable area. The printable area is the single one coordinate system your machine will operate in, after doing some homework (scripting), you can simply forget about all offsets, relations or conditions. It just works.
Having two nozzles and a probe, however, makes defining the printable area a bit tricky: each of these head components must (well, in most cases) be kept within the bounds of the printbed. Jog the head around, try and test the limits on all sides, in all corners. For all these cases, mark the position of your head’s reference point on the paper. Measuring the distances to the center, you get your ”logical” X/Y coordinates.
At this stage, you have a coordinate system (for the X/Y plane) which is ready to use. Furthermore, you are safely within the mechanical limits of the machine and the printable area as well. Any slicer which has the basic parameters - centered origin, tool offsets, printable area - will generate appropriate GCodes.
Talking of GCodes: sure you have to tell the Duet about geometry and physical dependencies, but be assured: there are GCodes for all of that. First, you have the idea plus some coordinate values which define your ”logical” coordinate system. Then, you either look up the GCodes in the dictionary, let the setup assistant propose some template scripts, or ask the forum.