Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11634
Последний выпуск: 19.06.2015

Введение

1.1 Типы Данных в AutoLISPе

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

  • списки
  • символы
  • строковые константы
  • действительные числа
  • целые числа
  • файловый дескриптор (описатель файлов)
  • "имена" примитивов AutoCAD
  • наборы AutoCADа
  • встроенные функции (субр)

Целые 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е:

  • Целые, действительные, строковые константы, указатели файлов вычисляются в самих себя.
  • Символы вычисляются в свои текущие значения.
  • Списки вычисляются в зависиости от первого элемента списка. Если список вычисляется в :
  • список (или nil), предполагается, что список является определением функции и функция вычисляется, используя оставшиеся элементы списка как аргументы;
  • имя внутренней функции (субр), то остальные элементы списка передаются в субр как формальные аргументы и вычисляются субром.

Если вы ввели выражение AutoLISPа в ответ на запрос AutoCADа "Command:" /команда:/, AutoLISP вычислит выражение и выведет результат на экран. Запрос AutoCADа "Command:" повторится.

Если некорректное выражение набрано с клавиатуры или считано из файла, AutoLISP может выдать следующую подсказку:

	n>

где n - целое число, отмечающее как много уровней левых скобок осталось незакрытыми. Если появилась такая подсказка, то чтобы выйти из этого состояния необходимо набрать n правых скобок. Частая ошибка - пропуск закрывающихся двойных кавычек (") в текстовой строке. В этом случае правые скобки интерпретируются как кавычки и не производят никакого эффекта на изменение 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Введите первую точку: ")

Знак апостофа может быть использован как короткая запись функции 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 уровней вложения.

[ Оглавление ] [ Далее ]

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог