Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справочный_материал_ПГК.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
505.34 Кб
Скачать

Функции autolisp

Описанные ниже функции представлены в виде:

(функция аргумент1 аргумент2 …).

При необходимости сохранить результат работы функции:

(setq переменная (функция аргумент1 аргумент2 …)).

Функции сгруппированы следующим образом:

  1. Арифметические функции.

  2. Логические функции.

  3. Функции вычислений.

  4. Функции преобразования данных.

  5. Функции обработки строк.

  6. Функции обработки списков и точечных пар.

  7. Функции ввода данных и указания объектов.

  8. Функции печати, вывода сообщений и доступа к файлам.

  9. Функции доступа к примитивам AutoCAD.

  10. Функции доступа к табличным данным.

  11. Функции, работающие с расширенными данными.

  12. Функции, работающие со словарями и X-записями.

  13. Функции пользователя и дополнительные возможности программирования.

  14. Функции работы с памятью, приложениями и реестром Windows.

  15. Другие функции.

При описании функций вычисляемое и возвращаемое функцией значение следует за символом стрелки .

Арифметические функции

  1. + – вычисляет сумму чисел

(+ a1 a2 … aN) вычисляет a1+a2+…+aN.

  1. - – вычисляет разность чисел

(- a1 a2 … aN) вычисляет a1-a2-…-aN.

(- a1) вычисляет 0-a1

  1. * – вычисляет произведение чисел

(* a1 a2 … aN) вычисляет a1*a2*…*aN.

При перемножении больших целых чисел: произведение может превысить предел -32768 или 32767, и результат будет непредсказуемым.

  1. / – вычисляет частное чисел

(/ a1 a2 … aN) вычисляет a1/(a2*a3*…*aN)

(/ 8 9) приводит к результату 0, так как LISP получает результат того же типа, что и аргументы.

(/ 8 9.0) возвращает 0,88889.

  1. 1+ – увеличивает аргумент на 1

(1+ a) равносильно (+ 1 a) и вычисляет a+1

  1. 1- – уменьшает аргумент на 1

(1- a) равносильно (- a 1) и вычисляет a-1

  1. ~ – дополнение числа до -1

(~ 3) возвращает -4 (аргумент и результат в сумме дают -1)

(~ -3) возвращает 2

Аргумент должен быть числом целого типа или переменной целого типа.

  1. abs – модуль числа

(abs a) вычисляет a.

Логические функции

  1. = - проверка равенства аргументов.

При совпадении значений всех аргументов возвращается T, в противном случае – nil.

(= 3.0 3 3.000)  T (в качестве аргументов можно смешивать целые и вещественные числа).

  1. /= - проверка неравенства аргументов.

При совпадении значений всех аргументов возвращается nil, в противном случае – T.

  1. < - проверка расположения аргументов по возрастанию.

(< a1 a2 … aN)  T, если a1 < a2 < … < aN.

  1. <= - проверка расположения аргументов по неубыванию.

(<= a1 a2 … aN).

  1. > - проверка расположения аргументов по убыванию.

(> a1 a2 … aN)  T, если a1 > a2 > … > aN.

  1. >= - проверка расположения аргументов по невозрастанию.

(>= a1 a2 … aN).

  1. and – логическое И.

(and a1 a2 … aN).

(setq v (and (> x 0) (> y 0)))  v=T, если попали в первый квадрант.

  1. or – логическое ИЛИ.

(or a1 a2 … aN).

(setq v (or (> x 0) (> y 0)))  v=T, если не попали в IV квадрант.

  1. not – операция логического отрицания.

(setq v (not (or (> x 0) (> y 0))))  v=T, если попали в IV квадрант.

  1. null – операция проверки аргумента на nil.

  1. if – выполнение условной операции if-then-else.

(if условие выражение1) – если условие=T, то выполняется выражение1.

(if условие выражение1 выражение2) – если условие=T, то выполняется выражение1, иначе – выражение2.

Если в функции if необходимо выполнить более одного выражения, то они объединяются функцией prong.

  1. progn – объединение не менее двух выражений в одно.

(if (> x 0)

(progn (setq (+ a b))

(command …)

)

)

  1. cond – условный оператор типа case.

(cond (условие1 выражение1)

(условие2 выражение2)

(…)

)

Выполняется то выражение, для которого условие=T. Просмотр оставшихся условий не производится. Например, если условие2=T, то не производится проверка условия3, условия4 …etc…

  1. minusp – проверка числа на отрицательность.

(minusp a)  T, если a<0.

  1. zerop – проверка числа на 0.

(zerop a)  T, если a=0.

  1. numberp – проверка, является ли аргумент вещественным или целым числом.

(numberp a)  T, если a – число.

  1. listp – проверка, является ли аргумент списком.

(listp a)  T, если a – список, точечная пара, точечный список или nil, так как пустой список понимается как nil.

  1. vl-consp – проверка, является ли аргумент непустым списком.

(vl-consp a)  T, если a – непустой список, непустая точечная пара или непустой точечный список.

  1. atom – функция, противоположная по смыслу vl-consp.

  1. vl-symbolp – проверяет, является ли аргумент указателем функции или переменной.

  1. boundp – проверка, присвоено ли значение символу.

  1. eq – проверка, равны ли значения двух аргументов (аналогично функции =).

  1. equal – проверка равенства двух аргументов в пределах допуска.

(equal a1 a2 d)  T, если a1 - a2  d.

Если d не задан, то считается, что d=0.

  1. while – условный оператор цикла.

(while условие

выражение1

выражение2

)

Выполняются выражения в цикле до тех пор, пока условие=T.

  1. repeat – выполнение операции цикла с заданным количеством повторений.

(repeat количество

выражение1

выражение2

)