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

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

Смежные инструменты сервиса:Спецификация с плана — подсчёт блоков DXF