(Tried to reply yesterday but this site was broken, hopefully it works now)
Hi Eric! Thanks for sharing feedback. I too come from a precision machining background so I understand where you're coming from. Glad to know I'm not alone ;)
Well I've got good news: you can set the machine-origin, or "zero" for the XYZ axes, to anywhere within the canvas' volume. PixelCNC defaults to using the top of the canvas. If you want to set it to the bottom of the canvas you can just change the origin Z percentage from 100% to 0%, or type "0" in the "Z Origin" editbox in a project's Canvas Properties.
Here's after changing the origin Z knob from 100% to 0%, in lieu of having to type a front-left-bottom relative coordinate in the XYZ origin editboxes, which you can do instead if you prefer) and hitting Apply.
The machine origin is retained and re-used whenever you create a new project, between PixelCNC sessions or otherwise. If you set it to X:50%, Y:50% and Z:0% on a 3"x3"x1" ?project it will be set to the bottom-center of any project, no matter the size of the canvas.
...and yeah, your point about the canvas and tool center is totally valid. The "canvas" is not meant to represent your stock material, it's just the volume within which cutpaths are generated. If you don't want your cuts to ever go deeper than 0.5" then make your canvas 0.5", etc.. If you have a 2" wide piece of stock that you want to cut the entire top of then set your canvas to 3" and add some margin in there. I could definitely add some functionality for it to automagically border the canvas with the tool radius for each operation when generating cut paths, as a toggle option for either the canvas or each operation individually. I'll make a note of that and look over the code to see what has to be done to make that a thing, because it's a good idea that I'd like to have in there myself now that you mention it.
Thanks!
- Charlie