;;; 屏幕内快速选择
;;; 屏幕内快速选择(defun c:ff (/ *error* SS1 I ENS EL FL FLL FLS SS2)
(defun *error* (msg)
(or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*,*中断,*取消*,*退出*") (princ msg))
)
(or (setq SS1 (cadr (ssgetfirst))) (setq SS1 (ssget)) (exit))
(repeat (setq I (sslength SS1)) (setq ENS (cons (ssname SS1 (setq I (1- I))) ENS)))
(foreach en ENS
(setq EL (entget en))
(setq FL (append '((-4 . "<AND"))
(vl-remove 'nil (mapcar '(lambda (i) (assoc i EL)) '(0 8 62))) ;DXF组码匹配(0 8 62)
'((-4 . "AND>"))
)
)
(or (member FL FLL) (setq FLL (cons FL FLL)))
)
(setq FLS (append '((-4 . "<OR")) (apply 'append FLL) '((-4 . "OR>"))))
(cond ((setq SS2 (ssget "_W" (getvar 'VSMIN) (getvar 'VSMAX) FLS))
(sssetfirst nil SS2)
(foreach x (list "\n选择了" (sslength SS2) "个。") (princ x))
)
((foreach x (list "\n无匹配选择对象,保留原选择集的" (sslength SS1) "个对象。") (princ x)))
)
(princ)
)
谢谢分享,支持 虽然代码看的明,但补充几句话说明逻辑选择是干什么的,节约时间吧。 你好,麻烦问一下。如果是全屏(全图)选择,需要怎么改呢? 谢谢楼主分享
谢谢楼主分享 能不能全域呢
页:
[1]