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

Выбрать много и пройтись по каждому

Выбор объектов команда: ОБХОДssget · sslength · ssname · repeat ~5 мин

Одна и та же операция для сорока объектов — это и есть главная причина учить LISP. Основа: взять набор объектов и обойти его в цикле. Этот скелет вы будете переиспользовать постоянно.

  • ssget — «выберите объекты»: пользователь выбирает как обычно (рамки, щелчки), Enter завершает.
  • Набор обходится счётчиком: sslength — сколько всего, ssname — взять объект номер i.

Код

(defun c:ОБХОД (/ ss i e)  (setq ss (ssget))  (if ss    (progn      (setq i 0)      (repeat (sslength ss)        (setq e (ssname ss i))        ; здесь будет действие с объектом e        (setq i (1+ i))      )      (princ (strcat "\nОбработано: " (itoa (sslength ss))))    )    (princ "\nНичего не выбрано.")  )  (princ))
(ssget)
— без параметров — обычный интерактивный выбор, как в любой команде AutoCAD
repeat (sslength ss)
— повторить столько раз, сколько объектов в наборе
(ssname ss i)
— объект номер i (счёт с нуля)
(1+ i)
— увеличить счётчик на единицу — двигаемся к следующему объекту

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

Соберите скелет цикла по набору (строки кода по порядку):

Пользователь запустил команду и сразу нажал Enter, ничего не выбрав. Что произойдёт?

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

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

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