Ok thanks Will and CAB. When I use osnaps and pick and edge of a solid, the code returns the world coordinate point, same as if I ran the command "ID" and picked the point. When I run the code and pick somewhere on the face of the solid, the UCS is temporarily moved to the pick point. Thus the returned point is at the origin of the temporary UCS. Not sure how this is useful, but it looks cool on the screen.
Using progn doesn't seem to alter the results.
I am now using the simple test below and playing around with the second initget call...
;; First draw a 3d box
(command ".box" "non" '(4 4 0) "non" '(10 10 0) 15)
(defun c:test ( / p1 p2)
(initget 512)
(setq p1 (getpoint "\nPick somewhere on a face of the box: "))
;;(initget)
;;(initget 512)
(setq p2 (getcorner p1 "nOpposite corner: "))
(list p1 p2)
)