好的,试试这个-我已经对代码中可能出现的错误进行了注释:
- (defun c:yellowr (/ oldosn ss) ;; Make sure you localise the variables!
- (setq oldosn (getvar "osmode"))
- (setvar "osmode" 0)
- (yellowucs) ; Shouldn't need (c:xxx), just (xxx)
- (if (setq ss (ssget "X"
- (list (cons 0 "INSERT")
- (if (getvar "CTAB")
- (cons 410 (getvar "CTAB"))
- (cons 67 (- 1 (getvar "TILEMODE")))))))
- (progn
- (foreach ent (mapcar 'cadr (ssnamex ss))
- (if (not (< (cadddr (assoc 10 (entget ent))) -10)) ;; Z value less than -10
- (ssdel ent ss)))
- (if (not (zerop (sslength ss)))
- (repeat 9
- (command "_rotate" ss "" '(0 0 0) -10)))) ; Don't feel the need for variable "pt1"
- (princ "\n<!> No Blocks Found <!>"))
- (setvar "osmode" oldosn)
- (princ)) ; Make sure you exit cleanly
- (defun c:oranger (/ oldosn ss)
- (setq oldosn (getvar "osmode"))
- (setvar "osmode" 0)
- (orangeucs)
- (if (setq ss (ssget "X"
- (list (cons 0 "INSERT")
- (if (getvar "CTAB")
- (cons 410 (getvar "CTAB"))
- (cons 67 (- 1 (getvar "TILEMODE")))))))
- (progn
- (foreach ent (mapcar 'cadr (ssnamex ss))
- (if (not (> (cadddr (assoc 10 (entget ent))) 10)) ;; Z value greater than 10
- (ssdel ent ss)))
- (if (not (zerop (sslength ss)))
- (repeat 9
- (command "_rotate" ss "" '(0 0 0) -10))))
- (princ "\n<!> No Blocks Found <!>"))
- (setvar "osmode" oldosn)
- (princ))
- (defun c:redr (/ oldosn ss)
- (setq oldosn (getvar "osmode"))
- (setvar "osmode" 0)
- (reducs)
- (if (setq ss (ssget "X"
- (list (cons 0 "INSERT")
- (if (getvar "CTAB")
- (cons 410 (getvar "CTAB"))
- (cons 67 (- 1 (getvar "TILEMODE")))))))
- (progn
- (foreach ent (mapcar 'cadr (ssnamex ss))
- (if (not (< (caddr (assoc 10 (entget ent))) -10)) ;; Y value less than -10
- (ssdel ent ss)))
- (if (not (zerop (sslength ss)))
- (repeat 9
- (command "_rotate" ss "" '(0 0 0) -10))))
- (princ "\n<!> No Blocks Found <!>"))
- (setvar "osmode" oldosn)
- (princ))
- (defun c:purpler (/ oldosn ss)
- (setq oldosn (getvar "osmode"))
- (setvar "osmode" 0)
- (purpleucs)
- (if (setq ss (ssget "X"
- (list (cons 0 "INSERT")
- (if (getvar "CTAB")
- (cons 410 (getvar "CTAB"))
- (cons 67 (- 1 (getvar "TILEMODE")))))))
- (progn
- (foreach ent (mapcar 'cadr (ssnamex ss))
- (if (not (> (caddr (assoc 10 (entget ent))) 10)) ;; Y value greater than 10
- (ssdel ent ss)))
- (if (not (zerop (sslength ss)))
- (repeat 9
- (command "_rotate" ss "" '(0 0 0) -10))))
- (princ "\n<!> No Blocks Found <!>"))
- (setvar "osmode" oldosn)
- (princ))
确保本地化变量,以便在程序完成时将其设置为零。
您在每个代码中都使用了“ss”,因此这可能会导致问题。
此外,请记住添加“princ”以干净地退出。
让我知道你进展如何。
李 |