Here are the only links could find
link1link2link2No one accomplished the task.
I think there approach was the problem, that is modifying the rectangle in real time.
I think using examples given by Stig you could create a temporary rectangle using grread.
The starting rectangle would be on top of the picked rectangle, you pick the anchor corner
and as you move the pointer the rectangle resize to maintain the area. Using a left click
to redraw the new rectangle or enter to quit.
I wish I had time to try it but not today.
Here is some code from Stig if anyone whants to have a go at it.
;; Rectangel Get - Stig
;; Honers the right to left solid line & left to right dashed line
;; used in the normal selection method.
(defun getrect (pt / col method pi270 pi90 pt1 track)
(setq pi270 (* 1.5 pi) pi90 (* 0.5 pi))
(while (= 5 (car (setq track (grread T 5 1))))
(redraw)
(setq pt1 (cadr track))
(cond ((>= pi270 (angle pt pt1) pi90)(setq col -256 method "_C"))
((setq col 256 method "_W")))
(grvecs (list col pt (list (car pt) (cadr pt1))
col (list (car pt) (cadr pt1)) pt1
col pt1 (list (car pt1)(cadr pt))
col (list (car pt1)(cadr pt)) pt))
)
(redraw)
;; return point AND selection method
(cond (pt1 (list pt1 method)))
)
(defun c:test1()
(setq p (getpoint "\nPick piont."))
(setq p2 (getrect p))
(princ)
)