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
不应该啊。我这边测试没问题,也没有这么写。你检查一下自己的图纸吧。

上面那两个颜色,下面这三个颜色,任意选两个都不行

页: 1 [2] 3
查看完整版本: 按颜色选择