求求各位高手帮忙改一下程序。删除黄色图元
求求各位高手帮忙改一下程序。删除黄色图元;;;;;;;选 颜色 删除图元
(defun c:ES4(/ ssys4)(princ "\n删除选取的黄色图元")
(if
(setq ssys4 (ssget '((-4 . "<or") (62 . 2) (-4 . "or>"))))
(command "erase""ssys4")
)
(princ)
)
(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)
) 这样不能删除黄色图层上随层的对象。
(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: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)
)
)
) (defun c:ES4(/ ssys4)
(princ "\n删除选取的黄色图元")
(if
(setq ssys4 (ssget '((-4 . "<or") (62 . 2) (-4 . "or>"))))
(command "erase"ssys4 "")
)
(princ)
)
(defun c:es4(/ ss)(if(setq ss(ssget(list(cons 62 2))))(vl-cmdf "ERASE" ss))(princ)) 香远益清 发表于 2020-4-17 16:51
(defun c:es4(/ ss)
(prompt"\n1-红色,2黄色,3绿色,4青色,5蓝色,6洋红色......")
(setq ysz (getint "\ ...
谢谢,兄弟,谢谢你帮忙 qijun0818 发表于 2020-4-17 16:09
(defun c:es4(/ ss)(if(setq ss(ssget(list(cons 62 2))))(vl-cmdf "ERASE" ss))(princ))
谢谢,兄弟,谢谢你帮忙 jun353835273 发表于 2020-3-25 11:53
谢谢,兄弟,谢谢你帮忙{:1_1:} x_s_s_1 发表于 2020-3-24 22:54
谢谢,兄弟,谢谢你帮忙{:1_1:}{:1_1:}{:1_1:} 有难度,新手来学习了
页:
[1]
2