ron
That was so cool I revised may rectangle angle routine to pick the
same way that one does.
;;;=======================[ Rec3pts.lsp ]=======================
;;; Author: Charles Alan Butler
;;; Version: 1.0 Sept. 21, 2005
;;; Purpose: To allow user to draw a rectangle by picking 3
;;; points, the 3rd point allows for streatching the rectangle
;;; Sub_Routines: -GetRectDiag
;;; Requirements: -None
;;; Returns: -Nothing
;;;==============================================================
;;; Pick 2 points to define one side of the rectangle, the using
;;; grread change the height to redraw the rectangle
(defun c:rec3pts (/ p1 p2 lst useros)
(if
(and (setq p1 (getpoint "\nPick corner."))
(setq p2 (getpoint p1 "\n* Pick adjacent corner."))
)
(progn
(setq lst (getrectdiag p1 p2))
(setq useros (getvar "osmode"))
(setvar "osmode" 0)
(command "._pline")
(apply 'command lst)
(command "c")
(setvar "osmode" useros)
)
)
(princ)
)
(prompt "\n3 point Rectangle Loaded, Enter Rec3pts to run.")
(princ)
;;;=======================[ GetRectDiag.lsp ]=======================
;;; Author: Charles Alan Butler
;;; Version: 1.0 Sept. 23, 2005
;;; Purpose: To allow user to size a rectangle by picking a 3rd point
;;; Sub_Routines: -None
;;; Requirements: -Two adjacent corner points
;;; Returns: -List of corner points
;;;==============================================================
;;; change the height to redraw the rectangle using grread
;;; show new rectangle based on two fixed points ,
;;; user picks the height
(defun getrectdiag (ll lr / track upt ur ul pp ang pang)
(setq pang (+ (angle ll lr) (/ pi 2.0)); angle perpendicular to line
ang (angle ll lr)
pp (polar lr pang 100) ; perpendicular point
)
(while (= 5 (car (setq track (grread t 5 1))))
(redraw)
(setq upt (cadr track)) ; user point
;; calc the new rectangle
(setq ur (inters lr pp upt (polar upt ang 100) nil)
ul (polar ll (angle lr ur) (distance lr ur))
)
;; draw the rectangle
(grvecs (list -256 ll lr -256 lr ur -256 ur ul -256 ul ll))
) ; while
(redraw)
(list ll lr ur ul) ; return list of points
)