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