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