AutoLISP для проектировщика

Перенести выбранное на нужный слой

Слои команда: НАСЛОЙentmod · subst · cons ~5 мин

Полплана начерчено не на том слое — знакомо? Ручной путь: выбрать, открыть свойства, найти слой. LISP-путь: команда НАСЛОЙ, которая переносит всё выбранное разом.

  • Изменить свойство = заменить пару в списке свойств и записать его обратно: subst меняет пару слоя, entmod сохраняет изменения в чертёж.

Код

(defun c:НАСЛОЙ (/ ss i e d)  (setq ss (ssget))  (if ss    (progn      (setq i 0)      (repeat (sslength ss)        (setq e (ssname ss i)              d (entget e))        (entmod (subst (cons 8 "СС_СПС") (assoc 8 d) d))        (setq i (1+ i))      )      (princ (strcat "\nПеренесено: " (itoa (sslength ss))))    )  )  (princ))
(cons 8 "СС_СПС")
— собрать новую пару «слой = СС_СПС»
subst
— заменить в списке свойств старую пару слоя (её находит assoc 8) на новую
entmod
— записать изменённый список обратно в чертёж — до entmod правки живут только в памяти
setq e … d …
— одному setq можно дать несколько пар «переменная — значение» подряд

Попробуйте сами

Демонтаж: перенесите выбранные приборы на слой АР_демонтаж. Сцена справа перекрашивается, как только имя слоя совпадает с существующим.

(entmod (subst (cons 8 "") (assoc 8 d) d))
имя слоя

Условный результат

прибор
прибор
прибор
прибор

выбранное — на слое «СС_СПС»

Слоя «АР_демонтаж» в чертеже нет. Что сделает entmod?

Как запустить у себя

  1. 1Скопируйте код кнопкой выше и сохраните в файл с расширением .lsp — в кодировке ANSI (Windows-1251), чтобы русский текст не превратился в «????».
  2. 2Загрузите файл: команда ЗАГПРИЛ (APPLOAD) или просто перетащите файл в окно чертежа.
  3. 3Введите в командной строке: НАСЛОЙ

Пробуйте на копии чертежа. В AutoCAD LT работает начиная с LT 2024.

Смежные инструменты сервиса:Переименование слоёв — правила → LSP