AutoLISP для проектировщика
Выбрать все блоки нужного имени
Выбор объектов команда: НАЙТИssget "_X" · sssetfirst ~5 мин
«Выделить все такие блоки» мышью — это рамки, Shift и пропущенные углы. LISP делает это фильтром: тип + имя, весь чертёж, ноль щелчков.
- У ssget есть режим "_X" — «искать по всему чертежу без вопросов» — и фильтр-список: (0 . "INSERT") — только блоки, (2 . "ИП-212") — только с этим именем.
Код
(defun c:НАЙТИ (/ ss) (setq ss (ssget "_X" '((0 . "INSERT") (2 . "ИП-212")))) (if ss (progn (sssetfirst nil ss) (princ (strcat "\nНайдено: " (itoa (sslength ss)))) ) (princ "\nТаких блоков нет.") ) (princ))
- "_X"
- — искать по всей базе чертежа — пользователя ни о чём не спрашивают
- (0 . "INSERT")
- — фильтр по типу: только вхождения блоков
- (2 . "ИП-212")
- — фильтр по имени блока; в имени работают маски: "ИП*" — все, начинающиеся с ИП
- sssetfirst nil ss
- — показать набор пользователю: объекты подсветятся с «ручками», как при обычном выборе
Попробуйте сами
На условном чертеже справа — блоки ИП-212, ОП-1 и ПДУ. Настройте фильтр на оповещатели ОП-1 — подсветка отвечает на каждое имя, которое вы вводите.
(ssget "_X" '((0 . "INSERT") (2 . "")))
имя блока
Условный результат
ИП-212
ОП-1
ИП-212
ОП-1
ИП-212
ПДУ
Найдено: 3
Что выберет фильтр (2 . "ИП*")?
Как запустить у себя
- 1Скопируйте код кнопкой выше и сохраните в файл с расширением .lsp — в кодировке ANSI (Windows-1251), чтобы русский текст не превратился в «????».
- 2Загрузите файл: команда ЗАГПРИЛ (APPLOAD) или просто перетащите файл в окно чертежа.
- 3Введите в командной строке: НАЙТИ
Пробуйте на копии чертежа. В AutoCAD LT работает начиная с LT 2024.
Смежные инструменты сервиса:Спецификация с плана — подсчёт блоков DXF