Keep the Point Relative command exactly as it is, except:
1) Add a control to allow user to convert (or unconvert) a currently selected Point Relative option to a default that subsequently overrides the option retained from a prior instance of Point Relative, while allowing user to select a current option that overrides the default within any single instance.
2) Make all options available when doing point moves in point select mode.
3) Never slam anyone into any option, especially "Last Cursor Position.
That's the whole plan. Period. "
Ok, maybe this clarification should have been added:
4) The Default option setting, if there is one, should persist between sessions. (preferably in an INI file)
Having the most recent (non-default) option persist between sessions, as has been suggested, is OK with me, but offers no additional benefit that I can see, provided that the default option has been implemented correctly.
And this would be a substantial improvement, from a prior post:
5) A Restore key (such as [F12] which would not corrupt the numeric text fields or affect keyboard focus) should be available to restore erased values from the numeric fields.
In that way, one could keep "Always reset values to zero" checked constantly, and still be able to restore the cleared values, if necessary, to correct an error, or duplicate a prior operation. With "Always reset values to zero" checked, user would never have to zero unused fields when populating only one field.
.....The ["Last Point" option of the Point Relative] command would still have to distinguish among a point drag handle, a reference point set for an entity move command, ..... and a point set within a macro ....I'd be surprised if it's even possible to figure that out.
Wrong again! As it turns out, DC already does those things.
After further testing, the Point Relative command appears to recognize all the conditions listed below.Using the "Last Point" option, when points have been selected in point select mode:
1) If a user has set a grab handle for the point selection, Result
= Point Relative command recognizes that a grab handle has been set, and slams user to Last Cursor Position (point selection remains intact)
2) If a user has set the first point after starting the Move from Reference Point command, Result
= Point Relative command sets a point at input offsets (point selection remains intact)
3) If, within the context of a macro, a user has set one or more points requested by a SETPOINT statement, or a Setpoints command, or an incomplete parameter in any command, Result
= Point Relative command sets a point at relative offsets input by user. (point selection remains intact, depending on macro)
4) If a user has set one or more points after starting a Drawing command, Result
= Point Relative command sets a point at relative offsets input by user. (point selection remains intact)
5) If none of conditions (1) - (4) is true, Result
= Point Relative command does not execute. (point selection remains intact)
Although the above list may not be exhaustive, it appears that, when the PointRelative command is initiated by a user who has selected one or more points, DC has already gathered enough information to perform the desired operation using the "Last Point" option.
(Edit 1/28/19) When user has chosen the "Last Point" option, and
either condition (1) or (5) is true, the Point Relative command should simply follow the steps outlined in the pmr macro. This will expedite moving the points without going through the unnecessary step of setting a point, regardless of whether user has set a grab handle or not.
If the resulting operation is one the user did not intend, the undo key will undo the point move. (But the undo will also undo the point selection, just as it does after any point move, even one using the "Reference Point" option. That would be a good "feature" to fix.) (The term "grab handle" is coined here for the initial point set in a move of selected points.)