Логотип сайта поддержки пользователей САПРО сайте поддержки пользователей САПР Translate to:
Hosting Ukraine

Глава 1 Общие соглашения

1.1. Типы данных в AutoLISPе

AutoLISP поддерживает несколько различных типов данных:

Целые 16-битовые числа в пределах от -32768 до +32767. Действительные числа представлены как числа с плавающей запятой двойной точности. Строковые константы могут быть любой длины, память для них распределяется динамически. Однако существует максимальная длина для строковых констант, равная 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а, возвращающие результат этого типа.

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Введите первую точку: ")
Знак апострофа может быть использован как короткая запись функции QUOTE. Так:
      'foo
эквивалентно:
      (quote foo)
В AutoLISP-программы, вводимые с дискового файла, могут быть включены комментарии. Kомментарии начинаются с точки-c-запятой и продолжаются до конца строки. Hапример:
      ; Это строка, состоящая только из комментария
 
      (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 © Сайт поддержки пользователей САПР