ninja37 发表于 2020-3-24 22:28:19

求求各位高手帮忙改一下程序。删除黄色图元

求求各位高手帮忙改一下程序。删除黄色图元
;;;;;;;选   颜色   删除图元
(defun c:ES4(/ ssys4)(princ "\n删除选取的黄色图元")
(if
    (setq ssys4 (ssget '((-4 . "<or") (62 . 2) (-4 . "or>"))))
    (command "erase""ssys4")
   )
(princ)
)

香远益清 发表于 2020-4-17 16:51:58

(defun c:es4(/ ss)
(prompt"\n1-红色,2黄色,3绿色,4青色,5蓝色,6洋红色......")
(setq ysz (getint "\n请输入0~256 之间的自然数"))
   (if   
      (setq ss(ssget
                           (list
                              (cons 62 ysz)
                              )
                  )
      )
(command "erase" ss "")
   )
(princ)
)

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)
)

x_s_s_1 发表于 2020-3-24 22:54:46

本帖最后由 x_s_s_1 于 2020-3-24 22:55 编辑

;;;光颜色不区分图元类型,删除(assoc 0 ent)
;;;拾取特征颜色
(defun c:sbc (/ en ent ss)
(setq      en(car (entsel "\n拾取特征颜色(非随层):"))
      ent (entget en)
)
(if (assoc 62 ent)
    (progn (prompt "\n框选:")
         (setq ss (ssget (list (assoc 0 ent) (assoc 62 ent))))
         (sssetfirst nil ss)
    )
)
)

jun353835273 发表于 2020-3-25 11:53:35

(defun c:ES4(/ ssys4)
(princ "\n删除选取的黄色图元")
(if
    (setq ssys4 (ssget '((-4 . "<or") (62 . 2) (-4 . "or>"))))
    (command "erase"ssys4 "")
   )
(princ)
)

qijun0818 发表于 2020-4-17 16:09:51

(defun c:es4(/ ss)(if(setq ss(ssget(list(cons 62 2))))(vl-cmdf "ERASE" ss))(princ))

ninja37 发表于 2020-4-18 19:06:55

香远益清 发表于 2020-4-17 16:51
(defun c:es4(/ ss)
(prompt"\n1-红色,2黄色,3绿色,4青色,5蓝色,6洋红色......")
(setq ysz (getint "\ ...

谢谢,兄弟,谢谢你帮忙

ninja37 发表于 2020-4-18 19:07:19

qijun0818 发表于 2020-4-17 16:09
(defun c:es4(/ ss)(if(setq ss(ssget(list(cons 62 2))))(vl-cmdf "ERASE" ss))(princ))

谢谢,兄弟,谢谢你帮忙

ninja37 发表于 2020-4-18 19:08:04

jun353835273 发表于 2020-3-25 11:53


谢谢,兄弟,谢谢你帮忙{:1_1:}

ninja37 发表于 2020-4-18 19:08:32

x_s_s_1 发表于 2020-3-24 22:54


谢谢,兄弟,谢谢你帮忙{:1_1:}{:1_1:}{:1_1:}

413248189 发表于 2020-5-8 10:14:26

有难度,新手来学习了
页: [1] 2
查看完整版本: 求求各位高手帮忙改一下程序。删除黄色图元