关于SSGET颜色筛选对像是BYLAYER无法选中
;自动筛选删除红色图元(defun C:D1 ()
(setq SS1 (ssget '( (62 . 1)))) ;筛选红色图元
(command "erase" ss1 "")
(princ)
)
对于图档上图元颜色是BYLAYER的,颜色是红色的,是无法被筛选到的.
浴火鸟TYTYJ 发表于 2017-9-13 10:40
;按照颜色选取图元
;,| - - - - - - - - - - - - - - - - - - - -
;,| 函数编号:g0001
;,| - - - - - - - - - - - - - - - - - - - - -
;,|功能: 返回图元真实颜色
;,|参数:“ent”——图元名
;,|示例语句: (color (car (entsel "\n选择: ")))
;,|示例返回: 颜色码
(DEFUN C:CV(/ co color enlst n s1 ss x)
(defun color (ent / c62 ent1)
(setq ent1 (entget ent))
(if (setq c62 (cdr (assoc 62 ent1)))
(if (= 0 c62)
7
c62
)
(cdr (assoc62 (entget (tblobjname "layer" (cdr(assoc8 ent1))))))
)
)
(redraw (setq s1 (car (entsel "\n选择要筛选的目标对像颜色: "))) 3)
(setq co(color s1))
(setq enlst (ssadd))
(princ "\n选择目标窗口: ")
(if (setq ss (ssget ))
(repeat (setq n(sslength ss)) ; fixed
(cond ((= co (color (setq x (ssname ss (setq n (1- n)))))) (ssadd x enlst)))
))
(ssadd s1 enlst)
(sssetfirst nil enlst)
(COMMAND "ERASE" ENLST "" "")
(princ )
) 本帖最后由 易云网络 于 2017-9-12 14:37 编辑
[*]我以前写的自己用的
[*];按照颜色选取图元
(DEFUN C:cff(/ co color enlst n s1 ss x)
;,| - - - - - - - - - - - - - - - - - - - -
;,| 函数编号:g0001
;,| - - - - - - - - - - - - - - - - - - - - -
;,|功能: 返回图元真实颜色
;,|参数:“ent”——图元名
;,|示例语句: (color (car (entsel "\n选择: ")))
;,|示例返回: 颜色码
(defun color (ent / c62 ent1)
(setq ent1 (entget ent))
(if (setq c62 (cdr (assoc 62 ent1)))
(if (= 0 c62)
7
c62
)
(cdr (assoc62 (entget (tblobjname "layer" (cdr(assoc8 ent1))))))
)
)
(redraw (setq s1 (car (entsel "\n选择: "))) 3)
(setq co(color s1))
(setq enlst (ssadd))
(if (setq ss (ssget))
(repeat (setq n(sslength ss)) ; fixed
(cond ((= co (color (setq x (ssname ss (setq n (1- n)))))) (ssadd x enlst)))
))
(ssadd s1 enlst)
(sssetfirst nil enlst)
(princ )
)
手工把图颜改为1号色后,可以用此方法筛选出来.
有没有方法,不用去改BYLAYER,可以筛选到颜色出来? 你这问题听上去是要按层名来进行筛选 vectra 发表于 2017-9-11 15:53
你这问题听上去是要按层名来进行筛选
不层名来,是按颜色来删除图元.
主要是是建一个颜色筛选.
就像SSGET筛文字或标注这样类似的功能.
(setq e1 (ssget '
((-4 . "<OR") (0 . "TEXT") (0 . "MTEXT") (-4 . "OR>"))
)
) vectra 发表于 2017-9-11 15:53
你这问题听上去是要按层名来进行筛选
此处的BYLAYER,指的是颜色是随层的,假如当前随层颜色刚好是1号色,是选不中的.必需要手工把颜色改为1号色,才能被选中. 随块组码是1,随层是256 ll_j 大师笔误了
;;;dxf组码:
62颜色号(如果不是“BYLAYER”,则出现);零表示“BYBLOCK”(可变的)颜色;256 表示“BYLAYER”;负值表示层已关闭(可选) shh1980 发表于 2017-9-12 07:00
ll_j 大师笔误了
问题就在这里,图元颜色是随层(BYLAYER),又刚好是红色,这里候(62.1)是无法选中这个BYLARER的红色图元的. 在ssget中单独处理
这么牛的选择器!
页:
[1]
2