Введение в Автолисп | страница 28
6.5. Функции обработки наборов
(ssadd [имя_пр [набор]]). Функция добавляет примитив, определенный его именем, в существующий набор. Вызванная без аргументов, она создает пустой набор. Если указано только имя примитива, создается новый набор из одного примитива. Если примитив уже существует в наборе, функция игнорирует операцию и не воспринимает такой ввод за ошибку.
(setq e1 (entnext)) присваивает имя e1 первому примитиву в чертеже,
(setq ss (ssadd)) создает пустой набор ss,
(ssadde1 ss) включает в набор ss примитив e1,
(setq e2 (entnext е1)) присваивает имя e2 примитиву, следующему за e1,
(ssadd e2 ss) добавляет примитив e2 в набор ss.
(ssdel имя_пр набор). Функция удаляет примитив из набора и возвращает имя набора. Если названный, примитив в наборе отсутствует, возвращается nil. Например, если примитив e1 существует в наборе ss1, a примитив e2 нет, то
(ssdel e1 ss1) возвращает SS1 (без элемента e1);
(ssdel e2 ss1) возвращает nil.
(sslength набор). Функция возвращает целое число, соответствующее количеству элементов в наборе.
(ssmemb имя_пр набор). Функция проверяет, является ли указанный примитив элементом набора, Если да, возвращает его имя, если нет, возвращает nil.
(ssname набор индекс). Функция возвращает имя примитива, порядковый номер которого соответствует введенному индексу. Если индекс отрицателен или превышает число примитивов в наборе, возвращается nil. Следует помнить, что первому элементу набора присваивается индекс 0. Если необходимо извлечь имя примитива, индекс которого превышает 32767, следует вводить его как действительное число. Например,
(setq entx (ssname sset 50483.0))
возвращает имя 50484-го примитива набора, присваивая ему идентификатор entx.
6.6. Организация циклов при обработке наборов
В тех случаях, когда программа предусматривает выполнение ряда однотипных операций, целесообразно организовывать цикл подобно тому, как это делается в операторных программах. Далее описываются две, функции Автолиста, позволяющие решить эту задачу.
(repeat число выражение ...). Функция выполняет операции, определяемые выражением заданное число раз и возвращает последний результат. Аргумент число обязателен, список выражений не должен быть пустым. Пример [2]:
(setq a 10 b 100)
(repeat 4
(setq a (+ a 10))
(setq b (+ b 100))
)
присваивает а значение 50, b - значение 500.
(while условие выражение ...). Функция оценивает условие, и если оно не nil, выполняет выражение. Процесс продолжается до тех пор, пока условие не примет значения