我的尝试(x和y正)。
- (defun c:test ( / p ab p1 p2 d )
- (setq p (getpoint "Pick a point "))
- (setq ab (getdist "\nLength Line "))
- (if (< ab (cadr p))
- (progn
- (setq p1 (list 0.0 ab))
- (setq d ab)
- (while (not (equal (cadr p2) 0.0 1e-12))
- (setq p2 (polar p1 (- (angle p1 p) (* pi 0.5)) ab))
- (if (> (car p2) 0.0)
- (cond
- ( (< (cadr p2) 0.0) (setq p1 (polar p1 (* pi 0.5) (setq d (* d 0.5)))) )
- ( (> (cadr p2) 0.0) (setq p1 (polar p1 (* pi 1.5) (setq d (* d 0.5)))) )
- )
- )
- )
- (setq p1 (list 0.0 (cadr p1)))
- (setq p2 (list (car p2) 0.0))
- (entmake (list '(0 . "LINE") (cons 10 p1) (cons 11 p2)))
- (grdraw p p1 1 1)
- (princ (strcat "\nDistance = " (rtos (distance p p1))))
- )
- (alert (strcat "Out of range" "\nLength max = " (rtos (cadr p))))
- )
- (princ)
- )
|