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




Программы на 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-2017 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.

Обратная связь

ТОП 5 активных страниц!