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

Погасить слои по маске

Слои команда: ПОГАСИcommand · getstring ~4 мин

Перед выпуском нужно скрыть все служебные слои — их пятнадцать, и каждый раз щёлкать их в диспетчере надоедает. LISP умеет просто «напечатать» за вас команды AutoCAD.

  • command — «автопилот командной строки»: LISP вводит команды и ответы так, как вводили бы вы. Пустая строка "" — это Enter.

Код

(defun c:ПОГАСИ (/ m)  (setq m (getstring "\nМаска слоёв (например СС_*): "))  (command "_.-LAYER" "_OFF" m "")  (princ))
command
— выполнить команды AutoCAD «как с клавиатуры» — каждый аргумент по очереди уходит в командную строку
"_.-LAYER"
— командная версия работы со слоями: с дефисом — без диалога, с «_.» — в любой локализации (приём из урока про скрипты в модуле AutoCAD)
"_OFF"
— ответ «Отключить»; маска m — какие слои
""
— пустая строка = Enter: завершить команду -LAYER

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

На сцене — слои СС_СПС, СС_СОУЭ и АР_стены. Введите маску, которая гасит только сигнальные слои (обе группы СС), не трогая архитектуру.

(command "_.-LAYER" "_OFF" "" "")
маска слоёв

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

СС_СПС— отключён
СС_СОУЭ— отключён
АР_стены— отключён

Зачем в конце (command …) стоит пустая строка ""?

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

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

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

Если маска зацепит текущий слой, AutoCAD задаст уточняющий вопрос и собьёт автопилот — надёжнее переключиться на нейтральный слой (например, 0) перед гашением.