最后一次选择没有OSnap,只是为了好玩:
- (defun c:sq ( / LWPoly RemoveIfOdd GR I LST P P1 P2 P3 P4 )
- (vl-load-com)
- ;; Lee Mac ~ 26.04.10
- (defun LWPoly ( lst cls )
- (entmakex (append (list (cons 0 "LWPOLYLINE")
- (cons 100 "AcDbEntity")
- (cons 100 "AcDbPolyline")
- (cons 90 (length lst))
- (cons 70 cls))
- (mapcar (function (lambda (p) (cons 10 p))) lst))))
- (defun RemoveIfOdd ( lst )
- ( (lambda ( i )
- (vl-remove-if
- (function
- (lambda ( x ) (= 1 (boole 1 1 (setq i (1+ i)))))) lst)) -1))
- (if (and (setq p1 (getpoint "\nPick First Point: "))
- (setq p2 (getpoint "\nPick Second Point: " p1)))
- (progn
- (while (and (= 5 (car (setq gr (grread t 13 0))))
- (listp (setq p3 (cadr gr))))
- (redraw)
- (setq p4 (polar p3 (angle p2 p1) (distance p1 p2)))
- (grvecs (cons -3 (setq p (list p1 p2 p2 p3 p3 p4 p4 p1)))))
- (LWPoly (RemoveIfOdd (cdr p)) 1) (redraw)))
-
- (princ))
|