Yes, I would do exactly what you suggest. (I was only trying to work with the code as presented).
Sure, set Z-zero on the surface of the cylinder and the cut depth to minus .005. Enter the actual radius (to split hairs it would be the radius less .005) of the cylinder in the DRO and it should work fine. The error that I referred to earlier will now be when Z is positive and cutting air, so no problem. In fact, this is how I should have suggested in the first place. Your cylinder is constant diameter so no need for mach to recalculate new angular feeds based on dia change. If the cylinder is not constant diameter for the full length, then mach does have the ability to compensate, that is, it keeps track of the Z value and the angular feed in deg/min is decreased as the diameter increases. It only needs one small tweak to be useable and that is to recognize that a change in Z is NOT a change in diameter but a change in radius.
I’m not familiar with RhinoCam but the code does (IMHO) have a few rough edges. I took the liberty of modifying a few lines to illustrate what I’m referring to. It should run faster. That doesn’t make it right or wrong, just a personal preference. The code is not optimized, that is, it jumps back and forth from place to place.
In regard to the mirror image comment, I had to rotate the view in the tool path window so that it could be read from inside the cylinder looking out <grin
Al
PS Try the modified snippet and see what happens.