Формирование, анализ и редактирование наборов примитивов




Программы на AutoLISPе могут работать с графическими объектами. К таким объектам относятся:

- примитивы ACAD, имеющиеся на экране в процессе работы программы;

- совокупности примитивов, называемые в AutoLISPе наборами.

Возможно обозначение графических объектов с помощью имен переменных. Это дает возможность оперировать с этими объектами, обращаясь к ним по именам. В том числе можно анализировать и изменять характеристики объектов, что приводит к изменению изображения на экране. При выделении каким-либо способом примитива или набора из базы данных AutoLISP формирует ссылку на объект. Необходимо записать это имя в переменную для дальнейшего использования.

В языке AutoLISP существуют следующие функции для формирования и анализа наборов примитивов.

(SSGET [<режим>] [<точка1> [<точка2>]]) – функция возвращает внутрипрограммное имя выбранного примитива или совокупности примитивов, которое может быть записано в переменную AutoLISPа с помощью SETQ. Если аргумент <режим> отсутствует, то создается набор, выбранный средствами графического редактора (указание на объекты, захват в рамку и т.п.). Возможны следующие значения режима: «Р» – выбирается текущий набор; «L» – выбирается последний сформированный на чертеже примитив; «W» < точка1 > <точка2> – выбираются примитивы, попавшие в рамку с углами в < точке1 > и <точке2>; «С» <точка1> <точка2> – выбираются примитивы, пересекаемые рамкой.

(SSGET <точка>) – выбираются примитивы, проходящие через <точку>.

(SSGET "х" <фильтр>). Здесь<фильтр> это список, элементами которого являются одна или несколько точечных пар. Каждая точечная пара строится по следующей форме: (< код >.< значение >). Здесь <код> одно из принятых в AutoLISPе чисел, показывающих, по какому признаку выбираются примитивы:

- 0 – примитивы одного типа;

- 2 – примитивы, входящие в один блок (INSERT);

- 6 – по типу линии;

- 7 – по гарнитуре шрифта;

- 8 – по имени слоя;

- 62 – по цвету и др.

Например, (SSGET "X" '((8. "SL1")))вернет набор, включающий все примитивы, находящиеся на слое, именованном как "SL1";

Выполнение последовательности функций:

(SETQ sdel (SSGET "X" '((6. "CENTER"))))

(COMMAND "ERASE" sdel)

приведет к стиранию всех примитивов, изображенных осевыми линиями.

(SSLENGTH <набор>) – функция возвращает целую величину, представляющую число примитивов в наборе.

(SSNAME <набор> <номер>) функция возвращает внутрипрог-раммное имя примитива, идущего под соответствующим номером в <наборе>. Первый по порядку примитив имеет номер 0.

(SSMEMB <примитив> <набор>) функция проверяет, входит ли <примитив> в <набор>. Если <примитив> входит в <набор>, то возвращается имя примитива, если не входит, то результат равен NIL.

(SSADD [<примитив> [<набор>]]) функция без аргументов создает новый пустой набор. SSADD с аргументом <примитив> создает новый набор, содержащий только указанный примитив. Если указаны оба аргумента, то функция добавляет указанный примитив в набор. Если этот примитив в наборе уже имеется, то ничего не изменится. Функция возвращает имя набора.

(SSDEL <примитив> <набор>) функция удаляет <примитив> из <набора>, если он там присутствовал. В противном случае ничего не меняется. Возвращается имя набора.

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

(ENTLAST) – функция возвращает внутрипрограммное имя последнего примитива на чертеже. Субпримитив с помощью ENLAST не выделяется.

(ENTSEL [<подсказка>]) – функция создает паузу и может вывести текст <подсказки>. Пользователь в ответ должен указать примитив на экране. Функция возвращает результат в виде списка из двух элементов: внутрипрограммное имя примитива и точку, в которой было проведено указание. Точка возвращается в виде списка координат.

(ENTDEL <примитив>) – функции удаляет примитив из чертежа. Субпримитивы таким способом не удаляются.

(REDRAW <примитив>) – функция возобновляет изображение примитива после очистки экрана функцией GRCLEAR.

(ENTGET <примитив>) позволяет выбирать <примитив> из базы данных. Функция возвращает список, который состоит из параметров, определяющих этот примитив. Такой список состоит из двух частей. Первая часть включает в себя код DXF (флаг), а вторая − данные. Конкретные данные о примитиве могут быть извлечены из этого списка с помощью функции ASSOC. При необходимости эти данные могут быть изменены.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: