Введение в Автолисп | страница 23



В качестве примера приводится последовательное извлечение координат точки в трехмерном пространстве:


(setq pt ‘(3.2 5.6 8.4))

(car pt) возвращает 3.0,

(cadr pt) возвращает 5.6,

(caddr pt) возвращает 8.4.


Ранее упоминалось об особом виде списка - точечной паре. Это единственный вид списка, из которого функция cdr извлекает не список, а атом. Например, из точечной пары (62 . 2)


(car (62 . 2)) возвращает 62,

(cdr (62 . 2)) возвращает 2.


(member выражение список). Функция просматривает список в поисках выражения и возвращает часть списка, начинающуюся с выражения.


(member ‘с ‘(a b с d e)) возвращает (С D E),

(member ‘q ‘(a b с d e)) возвращает nil.


(nth номер список). Функция возвращает элемент списка с указанным порядковым номером.


(nth 2 ‘(a b с d e)) возвращает С,

(nth 5 ‘(a b с d e)) возвращает nil.


Следует иметь в виду, что первому элементу списка соответствует нулевой номер.


(assoc элемент список). Функция просматривает список в поисках элемента как ключевого слова и извлекает ассоциированный элемент. Например, при обработке выражения


(setq a ‘((name box) (width 3) (size 4.7) (depth 5)))


(assoc ‘size a) возвращает (SIZE 4.7),

(assoc ‘length a) возвращает nil


6. РАБОТА С БАЗОЙ ДАННЫХ ЧЕРТЕЖА

Процесс создания чертежа сводится в конечном итоге к выполнению множества отдельных операций с примитивами. Все эти операции могут осуществляться программным путем, для чего Автолисп использует ряд функций, призванных создавать графические объекты, извлекать из базы данных чертежа необходимые сведения о примитивах, комплектовать наборы объектов и готовить, таким образом, исходные данные для выполнения дальнейших действий. Часть информации хранится в базе данных чертежа в виде таблиц (имена блоков, слоев, типов линий и т.п.). Далее рассматриваются наиболее употребительные функции, способствующие обработке характеристик примитивов и содержания таблиц.


6.1. Характеристики примитивов

В процессе создания и обработки примитивов Автолисп оперирует их характеристиками. Количество характеристик примитива зависит от его природы и сложности. Каждая характеристика определяется присущим ей так называемым DXF-кодом. Примерный смысл термина DXF (Drawing eXchange Format) - формат передачи графической информации. Полный список кодов можно найти, например, в [5, 6]. Некоторые часто используемые коды приведены в табл. 4.

Перечень или набор характеристик примитива представляет собой список, состоящий, в свою очередь, из подсписков, каждый из которых определяет одну из характеристик. Например, подсписок, определяющий положение начальной точки отрезка в трехмерном пространстве выглядит следующим образом: