你好我在一篇旧帖子中发现了这个Lisp程序
- (defun c:BX (/ foo _dist p1 p2 p3 ang)
- ;; Draw rectangle based on 2 or 3 picked points
- ;; Alan J. Thompson, 07.26.10
- (defun foo (l)
- (entmake
- (append '((0 . "LWPOLYLINE") (100 . "AcDbEntity") (100 . "AcDbPolyline") (90 . 4) (70 . 129))
- (mapcar (function (lambda (p) (cons 10 (reverse (cdr (reverse (trans p 1 0))))))) l)
- )
- )
- )
- (defun _dist (a b) (distance (list (car a) (cadr a)) (list (car b) (cadr b))))
- (if (and (setq p1 (getpoint "\nSpecify first point: "))
- (setq p2 (getpoint p1 "\nSpecify second point: "))
- (not (grdraw p1 p2 3 1))
- )
- (if (setq p3 (initget 0 "Left Right")
- p3 (getpoint p2 "\nSpecify third point or Square box or [Left/Right]: ")
- )
- (cond ((vl-consp p3) (foo (list p1 p2 p3 (polar p3 (angle p2 p1) (_dist p1 p2)))))
- ((eq (type p3) 'STR)
- (cond
- ((eq p3 "Left") (setq ang (+ (/ pi 2.) (angle p1 p2))))
- ((eq p3 "Right") (setq ang (+ (* pi 1.5) (angle p1 p2))))
- )
- (foo (list p1 p2 (polar p2 ang (_dist p1 p2)) (polar p1 ang (_dist p1 p2))))
- )
- )
- )
- )
- (redraw)
- (princ)
- )
我需要再添加一个命令
我需要像照片一样用3个点做成矩形
|