 |
сеанса редактирования , в котором они применяются AutoCADом.
5.2. Манипуляция функцией selection - set
Следующие функции выполняют различные действия на основании
функции selection - sets (наборы выбора ).
5. 2. 1. ( ssget [< режим >] [<точ1> [<точ2>]])
Вы можете применять функцию selection - set c функцией SSGET.
Аргументом < режим > является строковая константа , которая означает
тип выполняемого выбора примитива . Это могут быть буквы " W " , " C " ,
" L" , или " P " , названия режимов в AutoCADе " Window" (окно) ,
Crossing "(пересечение) , " Last " (последний), " Previous" (предыдущий).
< точ1 > и < точ2 > это аргументы точки в списках , которые определяют
точки , уместные для выбора. Обозначение точки без аргумента < режим >
эквивалентно выбору примитива указанием единственной точки. Если все
аргументы опущены , SSGET подскажет пользователю через механизм AutoCADа
" Select objects: "(выберите объекты) , позволяя интерактивный выбор
набора.
Примеры
(ssget) Cпрашивает пользователя общий выбор примитива
(ssget "P") Выбирает самый новый выбранный набор.
(ssget "L") Выбирает последний примитив,прибавленный к базе
данных.
(ssget '(2 2)) Выбирает примитив,проходящий через точку 2 , 2 .
(ssget "W" '(0 0) '(5 5)) Выбирает примитивы внутри окна с координатами
точек 0, 0 5 ,5 .
(ssget "C" '(0 0) '(1 1)) Выбирает примитивы пересекающие бокс с координатами
- 67 -
Руководство пользователя по АВТОЛИСПу
точек 0 , 0 1 , 1 .
Выбранные объекты высвечиваются , когда SSGET используется
без аргументов. Нет информации о том , сколько выбранных примитивов со-
храняется ( как альтернативу смотри функцию ENTSEL , описанную ниже).
Selection -sets временно поглощают щели файла AutoCAD , поэтому LISPу
не разрешается иметь более 6-и одновременно открытых файлов. Если этот
предел достигнут , AutoCAD откажется создавать любые другие наборы выбо-
ра (selection -sets) и возвратит " nil " на все вызовы AutoCADа.
Переменная набора выбора может быть передана AutoCADу в ответ на
любую подсказку "Select objects:" в выборе "Last". Она выберет все
объекты в наборе LISPа , как бы просматривая их в окошко (обратите
внимание , примитивы, выбранные этим способом не нуждаются в выводе на
экран).
5. 2. 2. ( sslength )
Эта функция возвращает целое число , содержащее количество прими-
тивов в наборе выбора . Наборы никогда не содержат дубликатов
примитивов.
5. 2. 3. (ssname )
Эта функция возвращает имя примитива -го элемента набора
. Если отрицательное или больше самого большего вычисляемого
примитива в наборе выбора , возвращается "nil". Первый элемент набора
имеет индекс "0". Имена примитивов в наборе , применяемых с функци-
ей SSGET , всегда будут именами главных примитивов . Подпримитивы (Block
attributes и Polyline vertices) не будут возвращаться ( но, смотри опи-
санную ниже функцию ENTNEXT, которая делает доступными их).
5. 2. 4. (ssadd [ []])
Если вызывается без аргументов , функция SSADD создает новый
набор выбора без членов. Если вызывается с единственным аргументом име-
ни примитива , функция SSADD создает новый набор выбора , содержащий это
единственное имя примитива. Если вызывается - с именем примитива и с на-
бором выбора , она добавляет имя примитива к набору. Функция
SSADD всегда возвращает новый или модифицированный набор. Запомните,
что при добавлении примитива к набору , новый примитив физически присое-
диняется к существующему набору, и набор, проходяший как , возвраща-
ется , как результат. Таким образом, если другим переменным присваивается
категория -набор , они будут отражать также сложение. Если в наборе уже
есть примитив с таким же названием , действие функции SSADD будет про-
игнорировано;сообщения об ошибке не будет.
5. 2. 5. (ssdel )
Функция SSDEL удаляет имя примитива из набора
и возвращает имя набора . Запомните , что примитивы физически
удаляются из набора , как оппозиция новому набору, возвращающемуся
с удаленным элементом. Если в наборе нет примитива, возвращается "nil".
- 68 -
Руководство пользователя по АВТОЛИСПу
5. 2. 6. (ssmemb )
Эта функция проверяет , является ли имя примитива членом
набора выбора . Если это так , функция SSMEMB возвращает имя прими-
тива . Если нет, возвращает "nil".
5. 3. Функции имени примитива (entity name)
Следующие функции выполняют различные действия с именем примити-
ва, включая ввод. Имена примитивов могут проходить в AutoCADе в ответ
на любую подсказку " Select objects: " , для которой ответ "Last" дейст-
вителен. В результате будет выбрано название примитива , как если бы он
просматривался в окошко.
5. 3. 1. (entnext [])
Если вызывается без аргументов, эта функция возвращает имя
примитива первого неудаленного примитива в базе данных. Если функция
ENTNEXT вызывается с аргументом примитива , она возвращает имя
первого неудаленного примитива , следующего за в базе данных.
Если нет следующего примитива в базе данных, возвращается "nil". Функ-
ция ENTNEXT возвращает и главные примитивы и подпримитивы.
Примитивы , выбранные функцией SSGET - главные примитивы, нет
атрибутов блоков или вершин полилиний. Вы можете добраться до внутрен-
ней структуры этих сложных примитивов посредством простого приема ,
через подпримитивы, функцией ENTNEXT. Если вы однажды примените имя под-
примитива , вы можете действовать подобным образом в любом другом слу-
чае. Если вы приобрели имя подпримитива через функцию ENTNEXT, вы може-
те найти родительский примитив , двигаясь вперед от функции ENTNEXT до
функции SEQEND, чтобы обнаружить примитив, затем извлекая -2 группу из
такого примитива, который является главным именем примитива.
5. 3. 2. (entlast)
Эта функция возвращает имя последнего неудаленного главного при-
митива в базе данных. Эта функция часто применяется , чтобы дать
имя новому примитиву , который только что был прибавлен через функцию
COMMAND. Примитив не нужно выводить на экран, и также не нужно выбирать
уровень.
5. 3. 3. (entsel [])
Она иногда желательна , как действие на примитивы , чтобы одновре-
менно выбрать примитив и обозначить точку, с помощью которой примитив
был выбран. Примеры этого в AutoCADе можно найти в функции Object Snap
и в командах BREAK , TRIM , EXTEND . Функция ENTSEL позволяет программам
AutoLISPа выполнить это действие. Функция ENTSEL выбирает отдельный
примитив, требуя, чтобы выбор был сделан точкой. Она возвращает список, в
котором первый элемент - имя выбранного примитива , второй
элемент - координаты точки , используемой для выбора примитива. Если
- 69 -
Руководство пользователя по АВТОЛИСПу
строка содержит <подсказку>, эта строка может быть использована , что-
бы спросить пользователя о примитиве. Иначе , по умолчанию появится
подсказка "Select object:" . Следующий диалог иллюстрирует использование
функции ENTSEL и возвращаемый список.
Command: Line
----
From point: 1 , 1
------
To point: 6 , 6
------
To point: RETURN
------
Command: (setq e (entsel "Please choose an entity:"))
----------------------------------------------
Please choose an entity: 3 , 3
-----
(< Entity name: 60000014> (3.000000 3.000000))
Возвращаемая функцией ENTSEL форма в виде списка , удовлетворяет
AutoCAD в ответ на любую его подсказку выбрать объект. Это будет трак-
товаться AutoCADом , как выбор определенного примитива , указанного
точкой.
5. 4. Функции данных примитива (entity data)
 |
|