(minusp
(rem
(sqrt
(zerop
2.2. Некоторые геометрические функции
В процессе автоматической обработки графических данных почти непрерывно возникает необходимость указания некоторых, параметров, определяющих расположение в пространстве чертежа описываемых объектов. Следующие функции Автолиспа позволяют достичь необходимых результатов.
(angle
(distance
(inters
Пусть определены точки:
(setq a '(1.0 1.0) b '(5.0 5.0))
(setq с ‘(6.0 1.0) d ‘(6.0 2.0)),
тогда
(inters a b с d) возвращает
(inters a b с d T) возвращает
(inters a b с d nil) возвращает
(polar
Функция polar очень часто используется в структуре программ, так как она позволяет указывать положение точек в относительных координатах, привязывая каждую последующую точку к предыдущей. Примером такого использования может служить программа
3. ВЗАИМОДЕЙСТВИЕ АВТОЛИСПА С АВТОКАДОМ
3.1. Вызов команд Автокада в Автолисп
Вызов команд Автокада Автолисп осуществляет с помощью функции command. Необходимо помнить, что эта функция не имеет ничего общего с командами Автокада, которые входят в эту функцию в качестве аргументов. Количество аргументов функции не ограничивается, они могут представлять собой строки, списки, числа, но во всех случаях их тип должен соответствовать типу, ожидаемому Автокадом. Введение пустой строки (“”) соответствует нажатию на клавишу Space или Enter, например:
(command “line” pt1 pt2 “”).
Здесь Автолисп передает Автокаду команду line для проведения отрезка прямой из точки pt1 к точке pt2. Пустая строка завершает ввод параметров. При организации строки параметров следует обратить внимание на то, что она практически описывает символами действия оператора, вводящего параметры с клавиатуры или с помощью мыши. Действительно, при ручном вводе последовательность действия оператора выглядела бы следующим образом:
Command: _line
From point: pt1
To point: pt2
To point: Enter
Команды Автокада, вызываемые функцией command, не отражаются на экране, если системная переменная CMDECHO установлена в ноль. Если необходим ввод данных с клавиатуры или с помощью мыши, нужно либо осуществлять эту операцию до использования функции command, либо организовать паузу внутри команды (см. разд. 4.1).
3.2. Создание новой функции
Создавая новую внешнюю функцию, программист должен сообщить Автолиспу, что предлагаемая ему структура является именно функцией, которую Автолиспу предстоит обработать по той же технологии, по которой он обрабатывает встроенные функции. В составе Автолиспа имеется встроенная функция, определяющая внешнюю структуру как функцию. Такая функция записывается в формате:
(defun имя ([
например:
(defun my_prog (a b / temp)).
Здесь функция my_prog содержит два аргумента (a, b) и одну локальную переменную (temp). Пара круглых скобок после имени функции обязательна, даже если аргументы отсутствуют.