Something else to consider. Your routine does not need to utilize OSNAP settings at all. All your points are absolute points that are calculated. Granted, when running a routine if OSNAPS are set to something and the user picks in a congested area, it may very well snap to a point when running the line command or something like that. You can consider looking at the OSNAPCOORD variable to remedy that.
Also when setting the osmode variable and resetting it. It is best to reset it for the very brief instant you want it off and then back on again. Running through your entire command and then resetting opens you up to user canceling or the routine bombing out due to user error or input being incorrect. If you set and reset at the exact time you need it you avoid the likelihood of it not getting reset. You can also use error trapping, but users are prone to tap the escape key multiple times to get out of something and will typically cancel your error trapping routines efforts to rest the environment as it was.
Also another benefit of using entmake methods to create your line work, means it does not interact with user input methods at all, and completely ignores the OSNAP settings.
Good luck,