(defun c:de2 (/ ss_direct ss_bylayer all_ents ent layer_name layer_color)
;; 删除直接颜色为黄色的对象
(if (setq ss_direct (ssget "X" '((62 . 2))))
(command "erase" ss_direct "")
)
;; 获取所有颜色随层的对象
(setq ss_bylayer (ssget "X" '((62 . 256))))
(if ss_bylayer
(progn
(setq all_ents (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss_bylayer))))
(foreach ent all_ents
(setq layer_name (cdr (assoc 8 (entget ent)))) ; 获取对象所在图层名
(setq layer_color (get_layer_color layer_name)) ; 获取图层颜色
;; 检查图层颜色是否为黄色(索引2或真彩色16776960)
(if (or (= layer_color 2) (= layer_color 16776960))
(ssadd ent ss_bylayer) ; 符合条件则保留在选择集
(ssdel ent ss_bylayer) ; 不符合则移除
)
)
;; 删除最终筛选出的对象
(if (> (sslength ss_bylayer) 0)
(command "erase" ss_bylayer "")
)
)
)
(princ)
)
页:
1
[2]