您也可以像这样直接过滤掉项目:
- (defun c:futlyr (/ e i layname n s x)
- (prompt "\nSelect Object to Set to -F Construction Layer")
- (setq i 0)
- ;; Direct filter for layer that starts with S and does not end in -F
- (if (setq s (ssget ":L" '((8 . "S*,") (8 . "~*-F"))))
- (progn
- (foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex s)))
- (if (setq layname (cdr (assoc 8 (setq x (entget ent)))))
- (progn (if (not (tblsearch "layer" (setq n (strcat layname "-F"))))
- (progn (setq e (entget (tblobjname "layer" layname)))
- (entmake (subst (cons 2 n) (assoc 2 e) (subst '(62 . 1) (assoc 62 e) e)))
- )
- )
- (entmod (subst (cons 8 n) (assoc 8 x) x))
- (setq i (1+ i))
- )
- )
- )
- (prompt (strcat "\n" (itoa i) " objects moved to -F construction layer"))
- )
- )
- (princ)
- )
|