Среда программирования на AutoLISP в графической системе AutoCAD (Справочник), страница 6

(while <тест-выражение> <выражеине>...)

вычисляет <тест-выражение> и, если оно не является nil, вычисляет другие выражения, затем снова проверяет <тест-выражение>. Это продолжается до тех пор, пока <тест-выражение> не nil. WHILE возвращает значение последнего <выражения>.

(repeat <число> <выражение>...)

выполняет каждое <выражение> заданное <число> раз и возвращает значение последнего выражения.

(progn <выражение>...)

вычисляет каждое <выражение> последовательно и возвращает значение последнего выражения. PROGN используется для выполнения нескольких выражений там, где допускается выполнение только одного.

(load <имя файла> [<ошибка>])

загружает файл с программой на AutoLISP и выполняет её. <Имя файла> -- это строковая константа, которая представляет собой имя файла (расширение по умолчанию “.lsp”). <Имя файла> может включать префикс устройства и/или директория. LOAD возвращает имя последней функции, определённой в файле. Если операция не выполнена, LOAD возвращает имя файла в виде строкового выражения или параметр <ошибка>, если он определён.

Каждый раз, когда AutoCAD начинает очередной сеанс, он загружает файл “ACAD.LSP”, если он существует.

3.7. Функции определения и вызова пользовательских функций

(defun <символ> <список аргументов> <выражение>...)

определяет функцию с именем <символ>. Список следующий за именем функции, -- это список аргументов (возможно пустой), за которым следует (факультативно)косая черта (slach) и имена одного или более локальных символов функции. Косая черта должна отделятся от локальных символов и аргументов, если они есть, хотя бы одним пробелом. Если нет аргументов и локальных символов, за именем функции следует поставить пустые скобки.

За списком аргументов следует одно или более выражений,. Которые вычисляются в процессе выполнения функции. Функция будет возвращать результат последнего вычисленного выражения. Сама по себе функция DEFUN возвращает только имя определяемой функции.

Определения функций могут хранится в файлах и загружаться с помощью функции LOAD в AutoLISPe. Если существует файл “ACAD.LSP”, то AutoLISP загрузит его автоматически.

Никогда не используйте имена встроенных функций или символов как  <символ>, так как это сделает недоступными встроенные функции. Не следует использовать функции COMMAND “ACAD.LSP” в файле (вне функции DEFUN).

(defun C:XXXXXX...) –

добавляет новые команды в AutoCAD. Такие функции должны удовлетворять следующим правилам:

1. Имя функции должно быть “С:ХХХХХХ”, где все буквы - заглавные. “ХХХХХХ” может быть любым именем команды, но не рекомендуется использовать имена команд AutoCAD, внешних или встроенных функций.

2. Функция должна быть определена без аргументов - пустой список (хотя локальные символы допускаются).

Функции, определённые таким образом, могут вызываться простым вводом имени функции “ХХХХХХ” в ответ на подсказку AutoCAD “Command:”. Если “ХХХХХХ” не является известной командой, AutoCAD пытается вызвать функцию AutoLISP “С:ХХХХХХ” без параметров.

(foreach <имя> <список> <выражение>...)

присваивает, проходя по <списку>, каждому элементу <имя> и вычисляет каждое <выражение> для каждого элемента в списке . Может быть задано любое число <выражений>. FOREACH возвращает результат последнего вычисленного <выражения>.

(mapcar <функция> <список1> ... <список n>)

возвращает результат выполнения <функции> над отдельными элементами от <списка1> до <списка n>, вводимыми как аргументы в <функцию>. Число <списков> должно соответствовать числу аргументов, требующихся для <функции>. Функция LAMBDA может задавать “анонимную” функцию для выполнения функцией MAPCAR.

(apply <функция> <список>)