试试这个。无法选择对象,但Osnap设置可用。
- (defun C:CUT (/ *error* e p1 p2 p3 ss echo undo)
- (setq echo (getvar "cmdecho"))
- (defun *error* (msg)
- (if msg (princ msg))
- (setvar "cmdecho" echo)
- (princ)
- )
- (if
- (and
- (setq p1 (getpoint "\nFirst corner: "))
- (setq p2 (getcorner p1 "\nSecond corner: "))
- (not (equal p1 p2 1e-5))
- (progn (if (not etrim) (load "extrim.lsp" "Extrim not found")) T)
- etrim
- )
- (progn
- (setvar "cmdecho" 0)
- (setq undo (getvar 'undoctl))
- (if (= 0 (logand 1 undo)) (command "_UNDO" "_ALL"))
- (command "_RECTANGLE" "_non" p1 "_non" p2)
- (command "_UNDO" "_M")
- (setq e (entlast))
- (etrim e (getvar 'vsmin))
- (command "_zoom" "_o" e "")
- (setq ss (ssget "W" p1 p2))
- (command "_copybase" p2 ss "")
- (command "_UNDO" "_B")
- (command "_pasteclip" pause)
- (if (= 0 (logand 1 undo)) (command "_UNDO" "_C" "_NONE"))
- (setvar "cmdecho" echo)
- )
- )
- (*error* nil)
- (princ)
- )
|