明经CAD社区

 找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 437|回复: 16

[讨论] 关于SSGET颜色筛选对像是BYLAYER无法选中

[复制链接]
发表于 2017-9-11 15:11 | 显示全部楼层 |阅读模式
;自动筛选删除红色图元
(defun C1 ()
(setq SS1 (ssget '( (62 . 1)))) ;筛选红色图元
           (command "erase" ss1 "")
           (princ)
  )

对于图档上图元颜色是BYLAYER的,颜色是红色的,是无法被筛选到的.

 楼主| 发表于 2017-9-13 10:41 | 显示全部楼层
[code="lisp] ;按照颜色选取图元
;,| - - - - - - - - - - - - - - - - - - - -
;,| 函数编号: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 (assoc  62 (entget (tblobjname "layer" (cdr(assoc  8 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 )
)[/code]
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-9-11 15:13 | 显示全部楼层
手工把图颜改为1号色后,可以用此方法筛选出来.
有没有方法,不用去改BYLAYER,可以筛选到颜色出来?
发表于 2017-9-11 15:53 | 显示全部楼层
你这问题听上去是要按层名来进行筛选
 楼主| 发表于 2017-9-11 16:52 | 显示全部楼层
vectra 发表于 2017-9-11 15:53
你这问题听上去是要按层名来进行筛选

不层名来,是按颜色来删除图元.
主要是是建一个颜色筛选.
就像SSGET筛文字或标注这样类似的功能.
(setq e1 (ssget '
          ((-4 . "<OR") (0 . "TEXT") (0 . "MTEXT") (-4 . "OR>"))
                        )
              )
 楼主| 发表于 2017-9-11 17:28 | 显示全部楼层
vectra 发表于 2017-9-11 15:53
你这问题听上去是要按层名来进行筛选

此处的BYLAYER,指的是颜色是随层的,假如当前随层颜色刚好是1号色,是选不中的.必需要手工把颜色改为1号色,才能被选中.
发表于 2017-9-11 20:25 | 显示全部楼层
随块组码是1,随层是256
发表于 2017-9-12 07:00 | 显示全部楼层
ll_j 大师笔误了
  1. ;;;dxf组码:
  2. 62  颜色号(如果不是“BYLAYER”,则出现);零表示“BYBLOCK”(可变的)颜色;256 表示“BYLAYER”;负值表示层已关闭(可选)

评分

参与人数 1明经币 +1 金钱 +50 收起 理由
ll_j + 1 + 50 谢谢!好久不动了,凭感觉随手了

查看全部评分

 楼主| 发表于 2017-9-12 11:59 | 显示全部楼层

问题就在这里,图元颜色是随层(BYLAYER),又刚好是红色,这里候(62.1)是无法选中这个BYLARER的红色图元的.
发表于 2017-9-12 13:51 | 显示全部楼层
在ssget中单独处理

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2017-9-12 13:53 | 显示全部楼层
这么牛的选择器!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号  
©2000-2017 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2017-11-23 04:27 , Processed in 0.255301 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表