Функции, работающие с наборами выбора — КиберПедия 

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Функции, работающие с наборами выбора

2021-06-30 39
Функции, работающие с наборами выбора 0.00 из 5.00 0 оценок
Заказать работу

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

При необходимости сохранять наборы примитивов в рисунке следует оформлять их в виде групп с помощью команды GROUP. Группы относятся к неграфическим объектам, существующим внутри рисунка.

Функция ssget формирует набор по запросу или признаку:

(ssget [<метод>] [<точка1> [<точка2>]] [<список>] [<фильтр>])

Аргумент <метод> - это текстовая строка, принимающая одно из следующих значений (в локализованной версии системы AutoCAD все перечисляемые строки должны спереди дополняться символом "_"), характеризующих метод выбора примитивов:

· "С" - выбор секущей рамкой;

· "СР" - выбор секущим многоугольником;

· "F" - выбор секущей линией;

· "I" - текущий выбор с помощью ручек;

· "L" - выбор последнего видимого примитива;

· "Р" - последний сформированный ранее набор;

· "W" - выбор рамкой;

· "WP" - выбор многоугольником;

· "X" - вся база примитивов рисунка, включая объекты на замороженных слоях и вне видимой части экрана, с учетом аргумента <фильтр> (в этом случае аргумент <фильтр> не должен быть опущен);

· "А" - вся база примитивов рисунка, включая объекты на замороженных слоях и вне видимой части экрана;

· ":Е" - все примитивы, попадающие в прицел устройства указания;

· ":N" - выбор основных примитивов с помощью подпримитивов (вершин полилинии или сети, компонент блока). Параматр используется только при графическом варианте выбора и только для указания рамкой, секущей рамкой и точкой. Он может привести к повторяемости примитивов в наборе, поскольку, например, можно отметить одну и ту же полилинию с помощью любой из ее вершин (см. также функцию ssnamex);

· ":S" - допускает выбор только одного объекта.

Аргумент <точка1> при отсутствии аргумента <точка2> определяет дополнительное условие для включения в набор: включаемый примитив должен проходить через точку, заданную аргументом <точка1>. Если заданы оба аргумента <точка1> и <точка2>, то заданные ими точки являются углами простой или секущей рамки (когда в качестве метода выбора применяются рамки, т. е. "W" или "С").

Аргумент <список> представляет собой список, элементами которого являются точки, используемые в методах "F", "WP", "СР".

Аргумент <фильтр> - это список со структурой, аналогичной структуре списка, возвращаемого функцией entget, что позволяет оставить только те примитивы, которые удовлетворяют дополнительным признакам (например, определенному цвету, слою, весу и т. д.).

Возвращаемое значение функции ssget - имя созданного набора (или nil, если создать набор невозможно).

Примеры:

· (ssget) - выдает стандартный запрос:

· (Select objects:) и далее создает набор в соответствии с дальнейшими указаниями пользователя;

· (ssget '(15.78 320.1)) - создает набор из примитивов, проходящих через точку (15.78 320.1);

· (ssget "_с" '(1.57 -40.4) '(15.78 320.1)) - создает набор из примитивов, выбираемых секущей рамкой с углами в точках (1.57 -40.4) и (15.78 320.1);

· (ssget "_x" '((0. " POLYLINE ") (8. "WALLS"))) - создает набор из всех примитивов рисунка, являющихся полилиниями типа POLYLINE и лежащими на слое WALLS;

· (ssget " А") - создает набор из всех примитивов рисунка, аналогично методу "_Х" с пустым фильтром, т. е. (ssget "_Х" '()) или (ssget "_X" nil).

В рисунке одновременно может быть открыто не более 128 наборов выбора. При достижении такого предела функция ssget отказывается создавать следующие наборы и возвращает nil. Чтобы удалить ненужные наборы, следует присвоить значение nil переменным, хранящим имена этих наборов.

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

· (ssadd [<примитив> [<набор>] ]) - добавление примитива в набор; если аргумент <набор> опущен, а аргумент <примитив> задан, то создается новый набор из одного примитива; если оба аргумента опущены, то создается новый пустой набор (но его значение не равно nil); возвращается имя набора;

· (ssdei <примитив><набор>) - удаление примитива из набора, заданных соответствующими аргументами <примитив> и <набор>; возвращается имя набора, если операция удаления выполнена, или nil, если примитив не содержится в наборе и удалить его нельзя;

· (sslength <набор>) - возвращает количество примитивов в наборе, заданном аргументом <набор>;

· (ssmemb <примитив><набор>) - проверка вхождения примитива в набор, заданных соответствующими аргументами <примитив> и <набор>; возвращается имя примитива (т. е. значение аргумента <примитив>), если он входит в рассматриваемый набор, или nil - если не входит;

· (ssname <набор><номер>) - извлечение примитива из набора по порядковому номеру, заданных соответствующими аргументами <набор> и <номер>; аргумент <номер> должен быть либо целым числом от 0 до 32 767, либо целым числом в вещественной форме больше 32767.0; нумерация примитивов в наборе начинается с нуля; возвращается имя примитива или nil;

· (ssnamex <набор> [<номер>]) - извлечение примитива из набора по порядковому номеру (заданных соответствующими аргументами <набор> и <номер>), но при этом выдается дополнительная информация о методах формирования набора (см. ниже); если аргумент <номер> опущен, то выводится информация обо всех примитивах набора;

· (sssetfirst <набор1> [<набор2>]) - включает ручки у примитивов, входящих в наборы, заданные аргументами <набор1> и <набор2>, но еще и подсвечивает пунктиром примитивы из набора2 (что означает выбор их для следующей операции редактирования);

· (ssgetfirst) - возвращает список с именами двух наборов, аналогичных по назначению аргументам <набор1> и <набор2> функции sssetfirst (у примитивов набора включены только ручки, у примитивов набора2 включены ручки и подсвечивание).

Функция ssnamex возвращает список, в котором элементами являются описания способа выбора примитивов, попавших в набор. Если аргумент <номер> не задан, то длина возвращаемого списка равна количеству элементов, определяемых аргументом <набор>. Если аргумент <номер> задан и задан корректно, то возвращаемым значением будет список из одного элемента - описания способа выбора примитива с порядковым номером, равным значению аргумента <номер>. Если же аргумент <номер> задан неправильно, то функция ssnamex вернет nil.

Описание способа выбора примитива - это список из трех элементов: (<метод><примитив><данные>). Параметр <метод> - целое число, которое соответствует методу выбора функции ssget и может принимать такие значения:

0 - неинтерактивный выбор ("L", "А", "X" и т. п.);

1 - выбор указанием точки;

2 - "W" или "WP";

3 - "С" или "СР";

4 - "F".

Если на месте параметра <метод> стоит отрицательное число, то оно определяет многоугольник выбора (см. описание многоугольника ниже).

Параметр <примитив> описания способа выбора примитива является его именем в том виде, в котором оно выводится функцией entlast. Параметр <данные> может быть либо только числом 0, либо числом 0 и списком, уточняющим выбор, либо числом 0 и номером многоугольника. В уточняющем списке может быть точка, с помощью которой выбран объект. Если использован номер многоугольника (а он должен быть отрицательным: -1, -2 и т. п.), то далее будет следовать описание многоугольника с соответствующим номером.

Описание многоугольника - это список такого вида: (<номер_многоугольника><точка1>... <точкаN>). Нумерация многоугольников начинается с -1 и наращивается путем добавления -1 к очередному номеру.

Описание точки (<точка1> и т. п.) - это список из трех (или двух) элементов: (<код><база> [<вектор>]). Описание точки зависит от вида, на котором она выбиралась, и фактически представляет собой описание прямой, луча или отрезка. Параметр <код> является кодом описания точки (0 - прямая, 1 - луч, 2 - отрезок), параметр <база> представляет собой начальную точку описания, а необязательный параметр <вектор> - это либо направление, в котором продолжается бесконечная линия (прямая или луч), либо смещение в сторону, характерное для отрезка.

Пример:

Если в набор nab5 включен один объект, который был указан точкой (7.51 16.02) на обычном виде сверху в МСК, то выражение (ssnamex nab5 0) возвращает примерно следующее: ((1 <имя объекта: 14аа560> 0 (0 (7.51 16.02 0.0)))).

В этом примере возвращенный функцией ssnamex список состоит из одного элемента (списка), в котором присутствуют следующие составные части:

· <метод> - равен 1 (соответствует выбору указанием точки);

· <примитив> - <Имя объекта: 14аа560>;

· <данные> - 0 (0 (7.51 16.02 0.0)), что соответствует точке (7.51 16.02 0.0), примененной для выбора примитива.

Другие примеры значений, возвращаемых функцией ssnamex:

· ((0 <Имя объекта: 14ае578> 0)) - один примитив, выбранный неинтерактивным методом (например, "L");

· ((3 <Имя объекта: 14ае568> О -1) (3 <Имя объекта: 14ае578> 0 -1) (-1 (0 (-147.787 129.133 0.0)) (0 (-64.2728 129.133 0.0)) (0 (- 64.2728 22.3376 0.0)) (0 (-147.787 22.3376 0.0)))) - два примитива, выбранных секущим прямоугольником с номером -1 (для прямоугольника заданы четыре точки);

· ((1 <Имя объекта: 14ае560> 0 (0 (74.2672 64.8218 0.0))) (2 <Имя объекта: 14ае570> 0 -1) (2 <Имя объекта: 14ае568> 0 -1) (-1 (0 (-177.446 158.755 0.0)) (0 (40.3151 158.755 0.0)) (0 (40.3151 83.1407 0.0)) (0 (-177.446 83.1407 0.0)))) - три примитива, первый из которых выбран указанием с помощью точки (74.2672 64.8218 0.0), а второй и третий выбраны рамкой, которая фигурирует как многоугольник с номером -1.

В этих примерах параметр <вектор> описания точек нигде не использован, т. е. объекты выбирались на виде сверху в МСК.

Наборы - удобный инструмент для выбора нужных примитивов рисунка с заданными свойствами. После формирования набора затем из него с помощью функции ssname (или ssnamex) извлекаются нужные объекты, с которыми далее выполняются необходимые операции (например: удаление, модификация и т. д.).


Поделиться с друзьями:

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.024 с.