Автолисп хорошо взаимодействует с базами числовых и графических данных. В качестве числовых баз данных могут использоваться продукты многих СУБД (например, dBASE), таблицы, файлы результатов, полученные в результате выполнения других программ. Последнее обстоятельство очень важно, поскольку позволяет связать с Автолиспом любые операторные программы, достаточно лишь создать выходные файлы этих программ в формате, поддающемся чтению средствами Автолиспа. Что касается графических баз данных, то, рассматривая чертеж как такую базу, пользователь может извлекать из нее отдельные примитивы и их наборы и осуществлять над ними программным путем любые операции, доступные Автолиспу. Кроме того, возможно создание программ, которые, руководствуясь введенными параметрами, способны вычерчивать сколь угодно сложные графические объекты. Несколько подобных программ (разумеется, достаточно простых) описаны в настоящем пособии.
С целью облегчения ориентирования в тексте пособия служебные слова, выполняющие различные функции, выделяются разными шрифтами. В табл. 1 приведены гарнитуры шрифтов, используемые в дальнейшем для выделения отдельных элементов программ. Эти гарнитуры используются только в тексте пособия, полные тексты программ на Автолиспе и отдельные извлечения из них, используемые в качестве примеров, выполняются гарнитурой Arial.
Если Автолисп подключен к Автокаду, любая функция Автолиспа, введенная в командную строку, обрабатывается, а результат обработки возвращается в поле сообщений. Это очень удобно как при отладке программ, так и при проверке правильности записи функций. Если во время сеанса активизирована программа, написанная с ошибками, Автолисп прекращает ее обработку, сообщает об ошибке и производит обратную трассировку программы, указывая то место, где она совершена.
Tаблица 1. Гарнитуры шрифтов, используемые в пособии
Гарнитура | Область использования | Примеры |
---|---|---|
Times New Roman Cyr | Имена примитивов | Arc, Line, Donut |
To же, полужирный | Команды Автокада | save, copy, line |
Имена файлов, сообщения командной строки | ||
Arial | Тексты программ, имена переменных | setq pt (1 2)) bolt, file1 |
To же, полужирный | Имена функций Автолиспа | setq, getdist |
Аргументы функций |
1.1. Типы данных в Автолиспе
Автолисп может оперировать следующими типами данных:
• Идентификаторы (Symbols) или переменные (Variables)
• Целые числа (Integers)
• Вещественные числа (Real numbers)
• Строки (Strings)
• Списки (Lists)
• Дескрипторы файлов (File descriptors)
• Имена примитивов Автокада (AutoCAD entity names)
• Наборы примитивов Автокада (AutoCAD selection sets)
• Встроенные (Subrs) и внешние (External Subrs) функции
Идентификаторы или переменные. Эти два термина в Автолиспе идентичны. Подобно любым языкам программирования Автолисп для идентификации переменных использует их имена. Значение переменной определяется ее параметрами аналогично тому, как это принято в других языках. В соответствии с синтаксисом Автолиспа каждая законченная структурная единица заключается в круглые скобки, а входящие в нее параметры, команды и функции разделяются пробелами.
В качестве примера приводится установка переменной pt1, рассматриваемой как точка в поле чертежа:
(setq pt1 ‘(1 2)).
Здесь встроенная функция присвоения setq устанавливает имя переменной pt1 и идентифицирует ее с точкой, имеющей координаты х=1, у=2.
Три переменные Автолиспа определены заранее, и их значения не рекомендуется изменять. К ним относятся:
pause - переменная определена как строка, состоящая из одного символа - обратной косой черты (\ - backslash) - и используется в функции command для организации паузы при необходимости ввода данных оператором;
pi - переменная определена как константа π, оцениваемая приблизительно в 3.1415926;
T - переменная определена как константа T и имеет тот смысл, что ее значение - не
Целые числа. Автолисп обменивается с Автокадом целыми числами, не превышающими 16 бит. Таким образом, могут быть введены целые числа в интервале от -32768 до +32767.