前生 发表于 2020-5-11 23:53:21

随层的,层的颜色是黄色的咋

season_88 发表于 2025-2-25 05:21:49

谢谢大师分享

guankuiwu 发表于 2025-2-25 08:46:00

这样不能删除黄色图层上随层的对象。
(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]
查看完整版本: 求求各位高手帮忙改一下程序。删除黄色图元