Системы автоматизированного конструирования. Толстоба Н.Д. - 28 стр.

UptoLike

Составители: 

27
3. Работа с графической базой данных
Графическая база данных
Чуть ли не самой главной особенностью Автолиспа является то, что он позволяет
осуществлять доступ к графической базе данных (ГБД) Автокада, многократно умножая
возможности адаптации последнего к какому-либо типу задач. Попытаемся вкратце показать,
как можно использовать возможности Автолиспа для работы непосредственно с объектами
чертежа.
Любой создаваемый в Автокаде чертеж состоит из примитивов, геометрическое
описание которых хранится в специальном формате (формате Автокада) в файле чертежа
(расширение .dwg). При загрузке чертежа Автокад заполняет графическую базу данных:
записывает системные настройки, создает список объектов и вносит в ГБД геометрическое
описание этих объектов, присваивая каждому примитиву уникальное имя. В сеансе
редактирования каждый примитив (отрезок, дуга, окружность и т.п.) имеет свое имя, по
которому его распознает сам Автокад. Для оперирования примитивами необходимо в
программе на Автолиспе сначала найти имя примитива в базе данных Автокада, чтобы
потом изменять геометрические характеристики примитива. Попробуем извлечь это имя из
ГБД при помощи Автолиспа.
3.1. Получение информации о примитивах
Нарисуйте отрезок. Для того, чтобы указать на примитив, используются различные
способы. В частности, можно указать последний нарисованный элемент.
(entlast)
Введите с командной строки Автокада строку:
Command: (setq ENAME (entlast))
Автокад возвращает: <Entity name: 60000018>
Тем самым мы присвоили переменной ENAME имя последнего примитива (в данном
случае отрезка). Имена примитивов в Автокаде - шестнадцатеричные величины; имя
примитива может быть, например, таким: 60000А14. Используя это имя, вы можете при
помощи функции ENTGET получить доступ к данным, связанным с примитивом:
(entget имя)
(setq EDATA (ENTGET ENAME))
Имя примитива - это новый для нас тип данных Автолиспа, и если функции Автолиспа
ENTGET требуется имя примитива, то бесполезно указывать число 60000018 - надо передать
переменную
ENAME, в которой это имя хранится.
В результате выполнения команды вы получите малопонятное сообщение:
((-1 . <Имя примитива: 60000020>) (О . "LINE") (8 . "О") (10 1.0 2.0 0.0) (11 6.0 6.0 0.0))