Тема: LISP. Установка цвета слоя указанием на объект этого слоя

Примечание:
1. Цвет меняется только у примитивов, цвет которых установлен в ByLayer.
2. Макрос для кнопки будет работать только если сохранить код в файле Set_layer_color.lsp и поместить этот файл по одному из путей поиска акада (например в папку Support)

(defun Set_layer_color (
            /
            layer
            layers
            flag
                   )
(while (not flag)
      (if (= nil (setq ename (car (entsel "\nSelect layer object:"))))
    (setq flag nil)
    (setq flag T)
      )
)
 (setq layer (vla-get-layer (vlax-ename->vla-object ename)))
   (vlax-for
       Item
       (vla-get-layers (vla-get-ActiveDocument (vlax-get-acad-object)))
           (if (= (vla-get-name Item) layer)
         (vla-put-color Item (acad_colordlg 1))
       )
     (princ)
   )
)

Макрос для кнопки
^C^C^P(if (not (Set_layer_color)) (load "Set_layer_color.lsp")) (Set_layer_color)

Re: LISP. Установка цвета слоя указанием на объект этого слоя

> Random
Вариант 2 - без VLA-

(defun Set_layer_color (/ ed)
(if (and (setq ed (car (entsel "\nSelect layer object:")))
(setq ed (tblobjname "LAYER" (cdr (assoc 8 (entget ed))))))
(entmod (subst (cons 62 (acad_colordlg 1))
(assoc 62 (entget ed)) (entget ed))))) 

Re: LISP. Установка цвета слоя указанием на объект этого слоя

> Евгений Елпанов
tblobjname......
брррр....
даже лезть туда не хочу smile.

Re: LISP. Установка цвета слоя указанием на объект этого слоя

> Random
Может когда нибудь придется, хотя знакомая дорога всегда ближе...