greatday2882 发表于 2022-7-6 08:37:55

正在查找LISP以更改s

我一直在搜索一个lisp,它会提示您选择对象,并将所有选定对象的颜色从“按层”更改为当前的任何颜色。有没有人见过这样的东西?

alanjt 发表于 2022-7-6 08:45:08

(defun c:test (/ ss i d)
(if (setq ss (ssget "_:L"))
   (repeat (setq i (sslength ss))
   (entmod (append (setq d (entget (ssname ss (setq i (1- i)))))
                     (list (assoc 62 (tblsearch "LAYER" (cdr (assoc 8 d)))))
             )
   )
   )
)
(princ)
)

greatday2882 发表于 2022-7-6 08:53:17

非常感谢!这正是我想要的

alanjt 发表于 2022-7-6 08:55:08

不客气。

VVA 发表于 2022-7-6 09:01:25

我的5美分
COLORFL-来自层的颜色
PFL-图层特性(颜色线型线宽)

BlackBox 发表于 2022-7-6 09:05:37

 
VVA,在使用VL*函数时,您可以考虑使用VLAX-FOR,并迭代选择集(速度要快得多)眨眼:
 
小示例(基于您的代码-希望您不介意):
 

(defun c:CBL () (c:ColorByLayer))
(defun c:ColorByLayer(/ *error*)
(princ "\rCOLORBYLAYER ")
(vl-load-com)

(defun *error*(msg)
   (cond ((not msg) (if acDoc (vla-endundomark acDoc)))         ; Normal exit
         ((member msg '("Function cancelled" "quit / exit abort")))    ; <esc> or (quit)
         ((princ (strcat "\n** Error: " msg " ** "))))               ; Fatal error, display it
   (princ))

((lambda (acDoc / ss oLayer oLayers oLayersList)
    (if (setq ss (ssget "_:L"))
      (progn
      (vla-startundomark acDoc)
      (vlax-for x (setq ss (vla-get-activeselectionset acDoc))
          (if (= :vlax-true
               (vla-get-lock
                   (setq oLayer (vla-item (cond (oLayers)
                                                ((setq oLayers
                                                      (vla-get-layers acDoc))))
                                          (vla-get-layer x)))))
            (progn
            (setq oLayersList (cons oLayer oLayersList))
            (vla-put-lock oLayer :vlax-false)))
          (vl-catch-all-apply
            'vla-put-color
            (list x (vla-get-color oLayer))))
      (vla-delete ss)
      (foreach oLayeroLayersList
          (vla-put-lock oLayer :vlax-true))
      (*error* nil))
      (*error* "Nothing selected")))
   (vla-get-activedocument (vlax-get-acad-object))))

alanjt 发表于 2022-7-6 09:14:17

这是很多代码。

ReMark 发表于 2022-7-6 09:21:30

将对象的颜色从“按层”更改为“任意”颜色难道不只是鼓励不良的CAD实践吗?我们中有多少人收到来自外部来源的图纸,发现物体的颜色与它所在图层的颜色不一致?至少可以说令人沮丧。

alanjt 发表于 2022-7-6 09:21:49

BlackBox 发表于 2022-7-6 09:29:06

 
它是。。。我只是想为VVA提供一个“工作”VLAX,例如使用他自己的代码。
 
此外,如果你认为这不好,不要费心学习(高级)。NET示例:通过Kinect将语音识别添加到AutoCAD(续)
 
... 相比之下,更简单的东西(即获取、设置系统变量等)要短得多,而且仍然比LISP*更多的代码!LoL较差的ActiveX COM API。
 
[缩进]

[/缩进]
是的*踢翻泥土*
页: [1] 2
查看完整版本: 正在查找LISP以更改s