Страница 1 из 30
- 5 -
Руководство пользователя по АВТОЛИСПу
Глава 1
Введение
АutoLISP - это модификация языка программирования LISP,
встроенная в пакет ADE-3 AutoCAD. AutoLISP позволяeт пользователям и
разработчикам AutoCADа писать макропрограммы и функции на очень
мощном языке высокого уровня, который хорошо сочетается с прикладной
графикой. LISP очень прост в изучении и очень гибок.
================================================================
ОБРАТИТЕ ВHИМАHИЕ
Для эффективного пользования AutoCADом совсем не обязательнo
учиться пользоваться AutoLISPом, если у Вас нет опыта
программирования, Вам достаточно прочесть требования по
инсталяции в Главе 2. Это полезно знать для ряда дисциплин
AutoCADа, используюших AutoLISP. Однако, если Вы любите
программировать, прочтите все руководство, чтобы научиться
пользоваться AutoLISPом, что превратит общие возможности
AutoCADа в еще более мощный графический инструмент лично для
Вас.
================================================================
Это руководство, а не учебник по программированию на LISPе,
однако мы приводим пример практического применения AutoLISPа в главе 3
и рекомендуем просмотреть различные тексты на LISPе для изучения этого
языка программирования. LISP - это язык, имеющий много диалектов,
включая МасLISP, InterLISP, ZetaLISP, CommonLISP. AutoLISP - наиболее
близок по синтаксису и соглашениям к CommonLISPу, но является
небольшой его частью и имеет много дополнительных функций, отражающих
специфику AutoCADа. Это руководство включает все функции AutoLISPа и
их применение.
1.1 Типы Данных в AutoLISPе
AutoLISP поддерживает несколько различных типов данных:
* списки
* символы
* строковые константы
* действительные числа
* целые числа
* файловый дескриптор (описатель файлов)
* "имена" примитивов AutoCAD
* наборы AutoCADа
* встроенные функции (субр)
Целые 16-битовые числа в пределах от -32768 до +32767.
Действительные числа представлены как числа с плавающей запятой
двойной точности. Строковые константы могут быть любой длины, память
для них распределяется динамически. Однако существует максимальная
- 6 -
Руководство пользователя по АВТОЛИСПу
длина для строковых констант, равная 100 символам.
AutoLISP содержит несколько встроенных функций для обеспечения
основ программирования 2-х мерных и 3-х мерных графических программ.
Kогда вы имеете дело с координатами, соблюдаются следующие соглашения:
2-х мерные точки выражаются в виде списков из двух действительных
чисел (Х Y), как:
(3.400000 7.520000)
Первое значение - координата Х, второе - Y.
3-х мерные точки выражаются в виде списков из трех действительных
чисел (X Y Z), как:
(3.400000 7.520000 1.000000)
Первое значение - координата X, второе - Y,
третье - Z.
Где бы AutoCAD не запрашивал некий ввод (например, точку или
масштабный фактор) для достижения необходимого значения могут быть
использованы выражения AutoLISPа этого типа или функции AutoLISPа,
где n - целое число, отмечающее как много уровней левых скобок
осталось незакрытыми. Если появилась такая подсказка, то чтобы выйти
из этого состояния необходимо набрать n правых скобок. Частая ошибка -
- 7 -
Руководство пользователя по АВТОЛИСПу
пропуск закрывающихся двойных кавычек (") в текстовой строке. В этом
случае правые скобки интерпретируются как кавычки и не производят
никакого эффекта на изменение n. Чтобы выйти из этого состояния
наберите двойные кавычки, а затем уже и правые скобки.
1.3 Соглашения по Лексике.
Ввод в AutoLISP может принимать несколько форм. Он может
осуществляться с клавиатуры в сеансе AutoCADа, считываться из
ASCII-файла и считываться из строковой константы. Во всех случаях
должны соблюдаться следующие соглашения:
* Имена символов могут состоять из любой последовательности
печатных знаков, исключая следующие:
( ) . ' " ;
* Следующие символы вызывают прерывание имени символа или
числовой константы:
( ) ' " ; (пробел) (конец файла)
* Выражения могут занимать несколько строк.
* Hесколько пробелов между символами эквивалентны одному пробелу.
Хотя отступы в строках и не требуются, вы можете использовать их для
повышения наглядности структурирования ваших функций.
* Имена символов и функций (субр) в AutoLISPе безразличны к
регистру, на котором они набраны. Имена символов не могут начинаться с
цифры.
* Целые константы могут начинаться с необязательных символов "+"
или "-". Kак было замечено ранее, они находятся в пределах от -32768
до +32767.
* Действительные константы состоят из одной или более цифры, за
которыми следует десятичная точка, за которой, в свою очередь
следуют одна или более цифр; т.о. "4" не является действительным,
правильным будет "0.4". Точно так же "5." не является действительным,
правильным будет "5.0". Действительные числа могут выражаться в
"научном" представлении, т.е. иметь необязательный параметр "е" или
"Е", за которым следует степень числа 10.
* Буквенные строковые константы - это последовательность знаков,
взятая в кавычки. Внутри взятых в кавычки строковых констант
можно ввести управляющие символы, пользуясь знаком обратной черты (\).
Kоды символов таковы:
\\ означает знак \
\е означает символ escape-последовательности
\n означает новую строку (newline)
\r означает возврат каретки (return)
\t означает табуляцию (tab)
\nnn означает знак, восьмеричный код которого nnn
Hапример, следующая запись выводит подсказку на новую строку:
(prompt "\nВведите первую точку: ")
* Знак апостофа может быть использован как короткая запись
- 8 -