sunfj
发表于 2022-5-20 22:39:20
vectra 发表于 2018-3-15 08:53
这段程序挺好用的,但是有个问题: 我一般是先选择”选择集“,然后输入命令,回车执行,再点选 “过滤颜色对象”,此时就已经结束了,其实也已经筛选出来了,但是不亮显,只有使用regen或者鼠标随便在别的地方点一下,才亮显筛选结果。若程序里加上regen,又比较慢,请问怎么能改一下?
零度
发表于 2022-5-31 19:49:05
vectra 发表于 2018-3-15 08:53
请问楼主,加载后提示如下,怎么解决呢?
命令: (LOAD "C:/Users/asus/Desktop/xyc.lsp")
调用(*push-error-using-command*)前无法从 *error* 调用(command)。
建议将(command)调用转换为(command-s)。
LYC688
发表于 2022-11-17 12:21:50
xyp1964 发表于 2019-2-15 22:42
院长,这个就是牛逼
kucha007
发表于 2022-11-17 22:45:04
Lee Mac写的,点选确定颜色,然后选择同色或相同色图层中颜色随层的对象
;;select by color
;;by Lee Mac - Cadtutor
;;https://www.cadtutor.net/forum/topic/60206-select-polyline-by-colour/
(defun C:TT ( / Col Dxf e Lst )
(if (setq e (car (entsel)))
(progn
(setq Col
(cond
((cdr (assoc 62 (entget e))) )
((abs (cdr (assoc 62 (tblsearch "LAYER" (cdr (assoc 8 (entget e))))))) )
)
)
(while (setq Dxf (tblnext "LAYER" (null Dxf)))
(if (= Col (abs (cdr (assoc 62 Dxf))))
(setq Lst (cons "," (cons (cdr (assoc 2 Dxf)) Lst)))
)
);获取颜色的图层
(sssetfirst nil
(ssget "_X"
(if Lst
(list
(cons -4 "<OR")
(cons -4 "<AND")
(cons 62 Col)
(if (= 1 (getvar 'cvport))
(cons 410 (getvar 'ctab)) '(410 . "Model")
)
(cons -4 "AND>")
(cons -4 "<AND")
(cons 62 256)
(cons 8 (apply 'strcat (cdr Lst)))
(if (= 1 (getvar 'cvport))
(cons 410 (getvar 'ctab)) '(410 . "Model")
)
(cons -4 "AND>")
(cons -4 "OR>")
)
(list (cons 62 Col))
)
)
)
)
)
(princ)
)
kucha007
发表于 2022-11-17 23:27:21
本帖最后由 kucha007 于 2022-12-4 14:00 编辑
kucha007 发表于 2022-11-17 22:45
Lee Mac写的,点选确定颜色,然后选择同色或相同色图层中颜色随层的对象
改了一下,支持多选或者先选(但得先勾选“先选择后执行”)
PS:代码有误,还在想如何合并选择集= =
(setvar "PICKFIRST" 1);勾选先选择后执行(defun c:TT (/ Old_Cmd Doc ss Cols co Dxf Lst sss)
(vl-load-com)
(if (not (setq ss (ssget "i")))
(setq ss (ssget))
)
(setq Old_Cmd (getvar "cmdecho"))
(setq Doc (vla-get-ActiveDocument (vlax-get-acad-object)))
(vla-startundomark Doc) ;记录编组
(setvar "cmdecho" 0)
(if ss
(progn
(repeat (setq i (sslength ss))
(setq e (ssname ss (setq i (1- i))))
(setq Cols (cons
(cond
((cdr (assoc 62 (entget e))))
((abs (cdr (assoc 62 (tblsearch "LAYER" (cdr (assoc 8 (entget e))))))))
)
Cols
)
)
)
(foreach co Cols
(while (setq Dxf (tblnext "LAYER" (null Dxf)))
(if (= co (abs (cdr (assoc 62 Dxf))))
(setq Lst (cons "," (cons (cdr (assoc 2 Dxf)) Lst)))
)
);获取颜色的图层
(setq sss
(ssget "_X"
(if Lst
(list
(cons -4 "<OR")
(cons -4 "<AND")
(cons 62 co)
(if (= 1 (getvar 'cvport))
(cons 410 (getvar 'ctab)) '(410 . "Model")
)
(cons -4 "AND>")
(cons -4 "<AND")
(cons 62 256)
(cons 8 (apply 'strcat (cdr Lst)))
(if (= 1 (getvar 'cvport))
(cons 410 (getvar 'ctab)) '(410 . "Model")
)
(cons -4 "AND>")
(cons -4 "OR>")
)
(list (cons 62 co))
)
)
)
(if (> (sslength sss) 0)(sssetfirst nil sss))
)
)
)
(setvar "cmdecho" Old_Cmd)
(vla-endundomark Doc) ;结束编组
(princ)
)
LYC688
发表于 2022-11-21 10:46:30
kucha007 发表于 2022-11-17 23:27
改了一下,支持多选或者先选(但得先勾选“先选择后执行”)
只有红白?
kucha007
发表于 2022-11-21 12:04:02
LYC688 发表于 2022-11-21 10:46
只有红白?
什么红白==
LYC688
发表于 2022-11-21 13:50:06
kucha007 发表于 2022-11-21 12:04
什么红白==
多选颜色,只能红白颜色
kucha007
发表于 2022-11-21 14:51:29
LYC688 发表于 2022-11-21 13:50
多选颜色,只能红白颜色
不应该啊。我这边测试没问题,也没有这么写。你检查一下自己的图纸吧。
LYC688
发表于 2022-11-21 15:20:37
kucha007 发表于 2022-11-21 14:51
不应该啊。我这边测试没问题,也没有这么写。你检查一下自己的图纸吧。
上面那两个颜色,下面这三个颜色,任意选两个都不行