Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаба 2 / Лабораторная №2

.docx
Скачиваний:
1
Добавлен:
27.11.2023
Размер:
165.14 Кб
Скачать

Цель работы: освоить работу с характеристиками графических примитивов.

Ход работы

1) Задание: создать пользовательские функции, позволяющие перемещать примитивы.

2) Описание используемых функции

(list <элемент1> <элемент2> … <элементN>) – объединяет элементы в список. Это основная функция, позволяющая создать список.

(append <список1> <список1> … <списокN>) – выполняет слияние списков в один.

(car <список>) – возвращает первый элемент списка или точечной пары.

(cdr <список>) – возвращает список, в который включены все элементы, кроме первого.

(nth <номер> <список>) – извлекает из списка элемент по порядковому номеру. Нумерация элементов начинается с нуля.

(subst <новый элемент> <старый элемент> <список>) – отыскивает в списке старый элемент и возвращает список, в котором старый элемент (все вхождения) заменен на новый.

(cons <аргумент1> <аргумент2>) – добавляет к списку первый элемент или создает точечную пару. Если <аргумент 2> является списком, то функция cons добавляет в него <аргумент1> в качестве нового первого элемента. Если <аргумент2> является атомом (т.е. не списком), то функция cons создает точечную пару вида (<аргумент1> . <аргумент2>).

assoc <код> <список>) – применяется к сложному списку, в котором элементами являются списки или точечные пары, и выбирает из этих элементов (внутренних списков и точечных пар) тот, у которого первый элемент имеет заданное значение. Функция assoc – основной инструмент в операции, когда из списка с данными примитива AutoCad нужно выбрать тот элемент, который содержит точечную пару с нужным DXF-кодом свойства (цвета, слоя и т.д.).

(entlast) – возвращает имя последнего не удалённого основного примитива рисунка.

(entnext [<примитив>]) – если эта функция вызывается без аргументов, то она возвращает имя первого не удалённого примитива на базе рисунка. Если функция вызывается с аргументом – именем примитива <примитив>, то она возвращает имя первого не удалённого примитива, следующего за примитивом, описанным аргументом <примитив>.

(entsel [<запрос>]) – предлагает пользователю указать один объект, выдавая запрос, текст которого задан в качестве аргумента. Возвращаемое значение – список, состоящий из двух элементов: имени выбранного примитива и точки, которой пользователь указал объект.

(entget <примитив> [<приложения>]) – получает список с характеристиками примитива и является основным инструментом извлечения информации о геометрии и свойствах.

3) Алгоритм перемещения объекта:

1.Создали чертеж с несколькими линейными примитивами.

2. Извлекли последний примитив (entlast).

3. Извлекли характеристики этого примитива (entget).

4. Из характеристик извлекли список с координатами начала (assoc, DXF-код 10).

5. Из списка с координатами извлекли координату х, используя функцию car.

6. x увеличиваем на число 500, + pr3 500.

7. То же самое сделали с конечными координатами: assoc, DXF-код 11.

8. Конечный х тоже увеличиваем на такое же число.

9. Затем извлекли координаты у (начальную и конечную), использую комбинации функций car и cdr. (car(cdr )).

10. То же самое проделали с координатой z (car(cdr(cdr))).

11. Сформировали новый список с новой начальной координатой х, старой начальной координатой у и z = 0.0 (list pr6 a 0.0).

12. Добавили к этому списку DXF-код 10 (cons 10 (list pr6 a 0.0)).

13. То же самое проделали с конечными координатами.

14. В списке с характеристиками примитива заменили подсписки с новыми координатами (subst (cons 10 (list pr6 a 0.0)) pr2 pr1).

15. (subst (cons 11 (list pr7 b 0.0)) pr4 sl)).

16. Обновили файл чертежа (entmod sl).

4) Листинг программы приведён в соответствии с рисунком 1.

Рисунок 1 – Листинг программы

5) Результат работы программы приведён в соответствии с рисунком 2.

Ответы на контрольные вопросы

1. Что такое точечная пара?

Ответ: Особым случаем списка является точечная паpa:

< точечная пара >::=(< атом > . <атом>)

При хранении точечных пар требуется меньше места в памяти, чем при хранении обычных списков. Точечная пара может быть сформирована функцией CONS (см. ниже). Некоторые функции обработки списков не могут работать с точечными парами.

2. Какую координату необходимо изменить, чтобы переместить примитив вниз?

Ответ: координату Y

3. С помощью каких функций можно создать список?

Ответ: Функция LIST формирует список из любого числа элементов (атомов или списков) и возвращает список.

4. Что такое DXF-код?

Ответ: Закодированные данные об объекте. Под соответствующим кодом в точечных парах и списках находятся данные определенного типа:

код –1 указывает имя примитива (<Entity name: 7ef03558>);

код 0 – тип примитива ("LINE");

код 5 – метку (внутренний номер примитива в рисунке);

код 8 – имя слоя ("0");

код 10 – координаты начальной точки (1025.63 977.25 0.0);

код 11 – координаты конечной точки (2767.91 1607.64 0.0);

код 210 – направление вектора нормали к плоскости, в которой создан примитив.

5. С помощью какой функции можно извлечь характеристики примитива?

Ответ: entget

6. Какие аргументы включает в себя функция subst?

Ответ: (subst <новый элемент> <старый элемент> <список>)

7. В чем заключается принцип работы функции assocc?

Ответ: (assoc <код> <список>) – применяется к сложному списку, в котором элементами являются списки или точечные пары, и выбирает из этих элементов (внутренних списков и точечных пар) тот, у которого первый элемент имеет заданное значение.

8. Что возвращает функция car?

Ответ: (car <список>) – возвращает первый элемент списка или точечной пары.

9. Для чего используются комбинации функций car и cdr?

Ответ: для замены координат

10. Что означает DXF-код 10?

Ответ: код 10 – координаты начальной точки

Вывод: в ходе лабораторной работы освоили работу с характеристиками графических примитивов.

Соседние файлы в папке Лаба 2