Shay,也许这可以帮助你:
- (defun c:fss (/ ssxunlocked ss i e sss)
- (defun ssxunlocked (/ filter elst ss)
- (setq filter "")
- (while (setq elst (tblnext "layer" (null elst)))
- (if (= 4 (logand 4 (cdr (assoc 70 elst))))
- (setq filter (strcat filter (cdr (assoc 2 elst)) ","))
- )
- )
- (and (= filter "")(setq filter "~*"))
- (setq ss (ssget "_X" (list (cons 0 "*") (cons -4 "<not") (cons 8 filter) (cons -4 "not>"))))
- ss
- )
- (defun fastsel (e / ss i ent)
- (vl-load-com)
- (setq ss (ssxunlocked))
- (setq i -1)
- (if (null sss) (setq sss (ssadd)))
- (while (setq ent (ssname ss (setq i (1+ i))))
- (if (not (eq e ent))
- (if (vlax-invoke (vlax-ename->vla-object e) 'intersectwith (vlax-ename->vla-object ent) acextendnone)
- (ssadd ent sss)
- )
- )
- )
- (ssadd e sss)
- )
- (prompt "\nSelect fast selection object(s) with touching for entities on unlocked layers")
- (setq ss (ssget "_:L"))
- (setq i -1)
- (while (setq e (ssname ss (setq i (1+ i))))
- (fastsel e)
- )
- (sssetfirst nil sss)
- (princ)
- )
|