The clue is to review the original DDVPOINT.lsp & DDVPOINT.dcl files (attached for your reference) that accompanied AutoCAD back in Release 12 which I mentioned in my recent article.
I've attached both of these for your reference.
Like the current VPOINT command the original DDVPOINT lisp command opened this window:
The dcl shows the image button with the following properties:
: row {
fixed_width = true;
fixed_height = true;
: image_button {
alignment = top;
fixed_width = true;
fixed_height = true;
key = "ddvp_image";
width = 39;
height = 14;
color = 0;
}
}
Since the image_button has the following key = "ddvp_image", the lisp code reveals the following action:
(action_tile "ddvp_image" "(ai_ddvp_image $x $y)")
The action calls for a function called ai_ddvp_image with the x & y selected coordinates from the image_button as arguments and that function looks like this:
(defun ai_ddvp_image (x y / ang1 ang2 list_xy list_axby list_bxby)
(setq list_xy (list x y)
list_axby (list ai_ddvp_ax ai_ddvp_by)
list_bxby (list ai_ddvp_bx ai_ddvp_by)
)
(if (> x (- ai_ddvp_ax 1))
(progn
(setq ang1 (ai_rtd (- (* 2.0 pi) (angle list_xy list_axby))))
(if (< 90.0 ang1)
(setq ang1 (- ang1 180.0))
)
(if (< (distance list_xy list_axby) 40)
(ai_ddvp_set_a ang1)
(if (< (distance list_xy list_axby) 84)
(cond ((= ang1 0.0)
(ai_ddvp_set_a 0.0)
)
((< ang1 -72.0)
(ai_ddvp_set_a -90.0)
)
((< ang1 -53.0)
(ai_ddvp_set_a -60.0)
)
((< ang1 -38.0)
(ai_ddvp_set_a -45.0)
)
((< ang1 -20.0)
(ai_ddvp_set_a -30.0)
)
((< ang1 -6.0)
(ai_ddvp_set_a -10.0)
)
((< ang1 6.0)
(ai_ddvp_set_a 0.0)
)
((< ang1 20.0)
(ai_ddvp_set_a 10.0)
)
((< ang1 38.0)
(ai_ddvp_set_a 30.0)
)
((< ang1 53.0)
(ai_ddvp_set_a 45.0)
)
((< ang1 72.0)
(ai_ddvp_set_a 60.0)
)
(T
(ai_ddvp_set_a 90.0)
)
)
)
)
)
(progn
(setq ang2 (ai_rtd (+ pi (- (* 2.0 pi) (angle list_xy list_bxby)))))
(if (< 360.0 ang2)
(setq ang2 (- ang2 360.0))
)
(if (< (distance list_xy list_bxby) 40)
(ai_ddvp_set_b ang2)
(cond ((= ang2 0.0)
(ai_ddvp_set_b 0.0)
)
((< ang2 22.5)
(ai_ddvp_set_b 0.0)
)
((< ang2 67.5)
(ai_ddvp_set_b 45.0)
)
((< ang2 112.5)
(ai_ddvp_set_b 90.0)
)
((< ang2 157.5)
(ai_ddvp_set_b 135.0)
)
((< ang2 202.5)
(ai_ddvp_set_b 180.0)
)
((< ang2 247.5)
(ai_ddvp_set_b 225.0)
)
((< ang2 292.5)
(ai_ddvp_set_b 270.0)
)
((< ang2 337.5)
(ai_ddvp_set_b 315.0)
)
((< ang2 360.0)
(ai_ddvp_set_b 0.0)
)
(T
(ai_ddvp_set_b 270.0)
)
)
)
)
)
)
Now all that's left is for you to figure out how to filter the x,y selection to get the desired: (0,90,180,270)