伙计们,我不明白为什么需要lisp代码,如果OP只希望实体是特定的颜色,其中颜色属性将不是“Bylayer”,对于块实体来说也一样:你真的不需要代码。用你们编写的代码Besdes将更改块的所有实例,而不仅仅是选定的块实体
这就是我要求OP澄清他的要求的原因
我认为更改当前指定实体所在层的颜色更可能是OP想要的(或者我认为是这样)
也许是这样的
- (defun c:test (/ LayerColl e ss lst)
- (vl-load-com)
- (setq LayerColl
- (vla-get-Layers
- (vla-get-activedocument (vlax-get-acad-object))
- )
- )
- (if (and (setq color (acad_colordlg 7 t))
- (setq ss (ssget)))
- (repeat (sslength ss)
- (setq e (cdr (assoc 8 (entget (ssname ss 0)))))
- (if (not (member e lst))
- (progn
- (vla-put-color (vla-item LayerColl e) color)
- (setq lst (cons e lst))
- )
- )
- (ssdel (ssname ss 0) ss)
- )
- )
- )
授予所有enities颜色属性为“Bylayer” |