woodman78 发表于 2022-7-6 09:06:10

通过se更改ByLayer的颜色

是否有人拥有lisp,允许我在图形中选择实体,并且该层的bylayer颜色将更改为253。我有很多灰显的事情要做,而不是通过层列表,我认为这可能更容易。

Lee Mac 发表于 2022-7-6 09:10:43

(defun c:test ( / el i la ls ss )
   (if (setq ss (ssget))
       (repeat (setq i (sslength ss))
         (if (not (member (setq la (cdr (assoc 8 (entget (ssname ss (setq i (1- i))))))) ls))
               (progn
                   (setq el (entget (tblobjname "LAYER" la))
                         ls (cons la ls)
                   )                              
                   (entmod (subst (cons 62 253) (assoc 62 el) el))
               )
         )
       )
   )
   (princ)
)
 
或单个:
 
(defun c:test ( / e )
(and
   (setq e (car (entsel)))
   (setq e (entget (tblobjname "LAYER" (cdr (assoc 8 (entget e))))))
   (entmod (subst (cons 62 253) (assoc 62 e) e))
)
(princ)
)

woodman78 发表于 2022-7-6 09:14:42

我两个都试过了,但似乎都不管用。

Lee Mac 发表于 2022-7-6 09:18:53

你在使用它们后重新生成了吗?

woodman78 发表于 2022-7-6 09:19:37

是的,试过了,但没有乐趣。

Lee Mac 发表于 2022-7-6 09:24:35

 
这是一个简单的代码,不会有太多的问题-你的图层颜色没有被改变吗?

woodman78 发表于 2022-7-6 09:28:19

不。它让我可以选择一些东西,但什么也没有发生。颜色保持不变,项目设置为“bylayer”。

Lee Mac 发表于 2022-7-6 09:31:01

 
对象是否嵌套在块中?

woodman78 发表于 2022-7-6 09:32:07

不,等等。我选择了hatch,它不适用于那个,但它适用于线条。我的错。

irneb 发表于 2022-7-6 09:37:28

奇怪的它在我的2011年完美地工作(甚至使用图案填充)。
 
编辑:轻微修改李的代码
(setq *SetLayerColor* 253)
(defun c:SetLayerColor (/ e c)
(if (setq c (acad_colordlg *SetLayerColor* nil))
   (setq *SetLayerColor* c)
)
(while (and
          c
          (setq e (car (entsel "\nPick entity on layer (Enter to stop): ")))
          (setq e (entget (tblobjname "LAYER" (cdr (assoc 8 (entget e))))))
      )
   (entmod (subst (cons 62 c) (assoc 62 e) e))
)
(princ)
)允许选择不同的颜色,并且与LayFrz“类似”。如果希望它在嵌套实体上工作,请将entsel更改为entsel。
页: [1] 2
查看完整版本: 通过se更改ByLayer的颜色