I've played around a bit with the new G41/G42, and have some comments/suggestions.
1) Your implementation of how comp is applied seems to me to be a bit non-standard. Imo, comp should be applied during a lead-in move. As it is now, comp appears to be using the previous tool location to determine how to apply the comp. This seems to cause unnecessary errors.
I can run code that works fine, but sometimes throws an error, depending on where the tool happens to be. This requires additional moves to be added prior to the lead-in move, to avoid these errors. In some cases, depending on tool position, UCCNC does apply the comp like I am expecting. But most of the time, it does not.
If you apply the comp during the lead-in move, then as long as the lead in move is correct, you eliminate the first three of your five warning messages. As long as you specify that the user needs a lead-in move longer than the tool radius, most of your problems go away.
This is how LinuxCNC does it. http://linuxcnc.org/docs/2.6/html/gcode ... mpensation
And how the controls I've used on high end Italian routers as well.
It's fine, imo, if you don't allow arcs for lead-in moves.
2) Comping an outside corner should always result in the tool "rolling around" the corner. This is how basically all CAM programmed g-code is written. I use G41/G42 to cut cabinet parts, which are nearly always rectangular, with square corners. I don't want the tool to stop at each corner, when it can roll around the corner at higher speeds.
I can't think of any situation where it wouldn't be desirable to roll around the corner. In it's current state, I would not be inclined to use comp, even though I prefer it. Comp should give the same toolpath that a CAM program will give. If not, it's a feature that's only partially implemented, imo.
I'm attaching a .pdf I threw together to show what I think it should be.
G41/G42 does appear to be working nicely, though, outside of these two issues.