
- •Функции autolisp
- •Арифметические функции
- •Логические функции
- •Функции вычислений
- •Функции преобразования данных
- •Функции обработки строк
- •Функции обработки списков и точечных пар
- •Функции ввода данных и указания объектов
- •Функции печати, вывода сообщений и доступа к файлам
- •Функции доступа к примитивам AutoCad
- •Функции работы с памятью, приложениями и реестром Windows
- •Графические примитивы autocad в функции «command»
- •Бесконечная прямая линия
- •Многоугольник
- •Мультилиния
- •Окружность
- •Отрезок
- •Полилиния
- •Прямоугольник
- •Размеры
- •Цвет (установка текущего рабочего цвета)
- •Штриховка
- •Системные переменные autocad
- •Примеры использования элементов диалоговых окон
Функции autolisp
Описанные ниже функции представлены в виде:
(функция аргумент1 аргумент2 …).
При необходимости сохранить результат работы функции:
(setq переменная (функция аргумент1 аргумент2 …)).
Функции сгруппированы следующим образом:
Арифметические функции.
Логические функции.
Функции вычислений.
Функции преобразования данных.
Функции обработки строк.
Функции обработки списков и точечных пар.
Функции ввода данных и указания объектов.
Функции печати, вывода сообщений и доступа к файлам.
Функции доступа к примитивам AutoCAD.
Функции доступа к табличным данным.
Функции, работающие с расширенными данными.
Функции, работающие со словарями и X-записями.
Функции пользователя и дополнительные возможности программирования.
Функции работы с памятью, приложениями и реестром Windows.
Другие функции.
При описании функций вычисляемое и возвращаемое функцией значение следует за символом стрелки .
Арифметические функции
+ – вычисляет сумму чисел
(+ a1 a2 … aN) вычисляет a1+a2+…+aN.
- – вычисляет разность чисел
(- a1 a2 … aN) вычисляет a1-a2-…-aN.
(- a1) вычисляет 0-a1
* – вычисляет произведение чисел
(* a1 a2 … aN) вычисляет a1*a2*…*aN.
При перемножении больших целых чисел: произведение может превысить предел -32768 или 32767, и результат будет непредсказуемым.
/ – вычисляет частное чисел
(/ a1 a2 … aN) вычисляет a1/(a2*a3*…*aN)
(/ 8 9) приводит к результату 0, так как LISP получает результат того же типа, что и аргументы.
(/ 8 9.0) возвращает 0,88889.
1+ – увеличивает аргумент на 1
(1+ a) равносильно (+ 1 a) и вычисляет a+1
1- – уменьшает аргумент на 1
(1- a) равносильно (- a 1) и вычисляет a-1
~ – дополнение числа до -1
(~ 3) возвращает -4 (аргумент и результат в сумме дают -1)
(~ -3) возвращает 2
Аргумент должен быть числом целого типа или переменной целого типа.
abs – модуль числа
(abs a) вычисляет a.
Логические функции
= - проверка равенства аргументов.
При совпадении значений всех аргументов возвращается T, в противном случае – nil.
(= 3.0 3 3.000) T (в качестве аргументов можно смешивать целые и вещественные числа).
/= - проверка неравенства аргументов.
При совпадении значений всех аргументов возвращается nil, в противном случае – T.
< - проверка расположения аргументов по возрастанию.
(< a1 a2 … aN) T, если a1 < a2 < … < aN.
<= - проверка расположения аргументов по неубыванию.
(<= a1 a2 … aN).
> - проверка расположения аргументов по убыванию.
(> a1 a2 … aN) T, если a1 > a2 > … > aN.
>= - проверка расположения аргументов по невозрастанию.
(>= a1 a2 … aN).
and – логическое И.
(and a1 a2 … aN).
(setq v (and (> x 0) (> y 0))) v=T, если попали в первый квадрант.
or – логическое ИЛИ.
(or a1 a2 … aN).
(setq v (or (> x 0) (> y 0))) v=T, если не попали в IV квадрант.
not – операция логического отрицания.
(setq v (not (or (> x 0) (> y 0)))) v=T, если попали в IV квадрант.
null – операция проверки аргумента на nil.
if – выполнение условной операции if-then-else.
(if условие выражение1) – если условие=T, то выполняется выражение1.
(if условие выражение1 выражение2) – если условие=T, то выполняется выражение1, иначе – выражение2.
Если в функции if необходимо выполнить более одного выражения, то они объединяются функцией prong.
progn – объединение не менее двух выражений в одно.
(if (> x 0)
(progn (setq (+ a b))
(command …)
)
)
cond – условный оператор типа case.
(cond (условие1 выражение1)
(условие2 выражение2)
(…)
)
Выполняется то выражение, для которого условие=T. Просмотр оставшихся условий не производится. Например, если условие2=T, то не производится проверка условия3, условия4 …etc…
minusp – проверка числа на отрицательность.
(minusp a) T, если a<0.
zerop – проверка числа на 0.
(zerop a) T, если a=0.
numberp – проверка, является ли аргумент вещественным или целым числом.
(numberp a) T, если a – число.
listp – проверка, является ли аргумент списком.
(listp a) T, если a – список, точечная пара, точечный список или nil, так как пустой список понимается как nil.
vl-consp – проверка, является ли аргумент непустым списком.
(vl-consp a) T, если a – непустой список, непустая точечная пара или непустой точечный список.
atom – функция, противоположная по смыслу vl-consp.
vl-symbolp – проверяет, является ли аргумент указателем функции или переменной.
boundp – проверка, присвоено ли значение символу.
eq – проверка, равны ли значения двух аргументов (аналогично функции =).
equal – проверка равенства двух аргументов в пределах допуска.
(equal a1 a2 d) T, если a1 - a2 d.
Если d не задан, то считается, что d=0.
while – условный оператор цикла.
(while условие
выражение1
выражение2
…
)
Выполняются выражения в цикле до тех пор, пока условие=T.
repeat – выполнение операции цикла с заданным количеством повторений.
(repeat количество
выражение1
выражение2
…
)