![]() |
Translate to: |
||||||
| Обратная связь | Новости САПР | Программы | Документация | Полезные советы | Обзорные статьи | ||
| Заказ и разработка | Каталог САПР | САПР-конференция | Библиотека ГОСТов | Наши соавторы | Коммерческое ПО | ||
1.1. Типы данных в AutoLISPе
AutoLISP поддерживает несколько различных типов данных:Целые 16-битовые числа в пределах от -32768 до +32767. Действительные числа представлены как числа с плавающей запятой двойной точности. Строковые константы могут быть любой длины, память для них распределяется динамически. Однако существует максимальная длина для строковых констант, равная 100 символам. AutoLISP содержит несколько встроенных функций для обеспечения основ программирования 2-х мерных и 3-х мерных графических программ. Kогда вы имеете дело с координатами, соблюдаются следующие соглашения:
(3.400000 7.520000)Первое значение - координата Х, второе - Y.
(3.400000 7.520000 1.000000)Первое значение - координата X, второе - Y, третье - Z.
Где бы AutoCAD не запрашивал некий ввод (например, точку или масштабный фактор) для достижения необходимого значения могут быть использованы выражения AutoLISPа этого типа или функции AutoLISPа, возвращающие результат этого типа.
1.2. Вычислитель AutoLISPа
Сердцем каждого интерпритатора LISPа является вычислитель. Вычислитель берет строку, введенную пользователем, вычисляет ее, и возвращает некий результат. Hиже следует процесс вычисления в AutoLISPе:Если вы ввели выражение AutoLISPа в ответ на запрос AutoCADа
Command: /команда:/, AutoLISP вычислит выражение и выведет результат на экран. Запрос AutoCADа
Command:повторится. Если некорректное выражение набрано с клавиатуры или считано из файла, AutoLISP может выдать следующую подсказку:
n>
где n - целое число, отмечающее как много уровней левых скобок осталось незакрытыми. Если появилась такая подсказка, то чтобы выйти из этого состояния необходимо набрать n правых скобок. Частая ошибка - пропуск закрывающихся двойных кавычек (") в текстовой строке. В этом случае правые скобки интерпретируются как кавычки и не производят никакого эффекта на изменение n. Чтобы выйти из этого состояния наберите двойные кавычки, а затем уже и правые скобки.
1.3. Соглашения по лексике
Ввод в AutoLISP может принимать несколько форм. Он может осуществляться с клавиатуры в сеансе AutoCADа, считываться из ASCII-файла и считываться из строковой константы. Во всех случаях должны соблюдаться следующие соглашения:( ) . ' " ;
( ) ' " ; (пробел) (конец файла)
\\ означает знак \
\е означает символ escape-последовательности
\n означает новую строку (newline)
\r означает возврат каретки (return)
\t означает табуляцию (tab)
\nnn означает знак, восьмеричный код которого nnn
Hапример, следующая запись выводит подсказку на новую строку:
(prompt "\nВведите первую точку: ")
'fooэквивалентно:
(quote foo)
; Это строка, состоящая только из комментария
(setq area (* pi r r)) ; Вычисление площади круга.
1.4. Соглашения по Обозначениям
Это руководство применяет некоторые соглашения для определения действия функций. Hапример:(moo <строковая константа> <число>...)
Имя функции показывает, как вы должны ввести его. Заключенные в угловые скобки знаки, следующие за именем функции показывают число и тип аргументов, требуемых функцией. В этом примере функция "moo" имеет два требуемых аргумента: строковую константу и число. Многоточие ("...") показывает, что к функции могут быть добавлены дополнительные числовые аргументы. Hе включайте угловые скобки или многоточие, когда вы используете эту функцию.
Следующие примеры являются правильными при использовании функции "moo". (moo "Hello" 5)
(moo "Hi" 1 2 3)
Следующие примеры не соответствуют предписанному формату и приводят к ошибкам:
(moo 1 2 3) ;(первый аргумент должен быть строковой константой)
(moo "Hello") ;(должен быть хотя бы один числовой аргумент)
(moo "do" '(1 2)) ;(второй аргумент должен быть числом, а не списком).
В том случае, когда может быть добавлен один факультативный аргумент, но он не может быть повторен, аргумент заключается в
квадратные скобки ("[ ]"):
(foo <строковая константа> [<число>])В этом примере функция "foo" требует один аргумент в виде строковой константы и допускает один факультативный числовой аргумент. Следующие примеры являются правильными вызовами функции "foo":
(foo "catch")
(foo "catch" 22)
Следующие форматы не соответствуют предписанному формату и приводят к ошибкам:
(foo 44 13) ;(первый аргумент должен быть строковой константой)
(foo "foo" 44 13) ;(слишком много аргументов)
1.5. Обработка ошибок
Если AutoLISP встречает ошибку во время вычислений, он печатает сообщение в виде:error: текст
где текст - это описание ошибки. Если функция *ERROR* определена (не nil), AutoLISP выполняет эту функцию ("текст" становится ее аргументом) вместо печати сообщения. Если *ERROR* не определена или nil, вычисления AutoLISPа будет остановлено и будет выдана на экран обратная трассировка вызываемой функции, а также вызывающих ее функций вплоть до 100 уровней вложения.
Copyright © Сайт поддержки пользователей САПР