我们允许循环输入如何:
- (defun C:test ( / L f )
- (and
- (setq L
- (CycleInputs
- '(
- (SS (progn (princ "\n>>Select objects to mirror: ") (ssget "_:L")))
- (p1 (progn (initget "Exit") (apply 'getpoint (append (if p2 (list p2)) '("First Point [Exit]: ")))) )
- (p2 (progn (initget "Exit") (apply 'getpoint (append (if p1 (list p1)) '("Second Point [Exit]: ")))) )
- )
- (lambda (s v) (= "Exit" v) )
- ); CycleInputs
- ); setq L
- (= 3 (length L)) (setq f (lambda (x) (cdr (assoc x L))))
- (progn
- (setvar 'cmdecho 0)
- (command "_.MIRROR" (f 'SS) "" "_non" (f 'p1) "_non" (f 'p2) "N")
- (setvar 'cmdecho 1)
- )
- )
- (princ)
- ); defun C:test
- (defun CycleInputs ( inpL exitf / tmp )
- (cond ; (87 114 105 116 116 101 110 32 98 121 32 71 114 114 114)
- ( (not inpL) inpL)
- ( (setq tmp (vl-catch-all-apply (function (lambda (a b) (set a (eval b)))) (car inpL)))
- (cond
- ( (vl-catch-all-error-p tmp) (prompt (vl-catch-all-error-message tmp)) )
- ( (and exitf (vl-catch-all-apply (function exitf) (list (caar inpL) tmp))) (set (caar inpL) nil) )
- (
- (mapcar (function (lambda (tmp) (set (car tmp) nil) tmp))
- (cons (cons (caar inpL) tmp) (CycleInputs (cdr inpL) exitf))
- )
- )
- )
- )
- ( (CycleInputs (reverse (cons (car inpL) (reverse (cdr inpL)))) exitf) )
- )
- )
|