В последнем примере использован оператор соответствия (relational operator), обладающий кодом DXF, равным -4, и выделяющий из общей массы объектов лишь те, которые удовлетворяют заданному условию. Он может иметь силу, если параметр выбора является численной величиной (целым или вещественным числом, точкой или вектором). В таблице 5 приведен список некоторых операторов соответствия.
Таблица 5. Операторы соответствия для фильтров наборов
Оператор | Значение |
---|---|
“*” | Нет ограничений |
“=” | Равно |
“<>”, “!=” или “/=” | Не равно |
“<” | Меньше чем |
“>” | Больше чем |
“<=” | Меньше или равно |
“>=” | Больше или равно |
Список фильтров может быть создан и с использованием логических операторов: “
Описанная ранее программа
(command “layer” “new” “b1”
“new” “b2”
“I” “continuous” “b1”
“|” “Acad_ISO04w100” “b2”
“с” “white” “b1”
“c” “red” “b2”
“s” “b1” “”)
(command “pline” p1 “w” “0.8” “” p2 p3 p4
“pline” p6 p7 p8 p9 “c”
“line” p10 p11
“line” p12 p14
“line” p13 p15)
(command “layer” “s” “b2” “”)
(command “line” p16 p17)
(setq ss (ssget “x” ‘((-4 . “ (8 . “b1”) (8 . “b2”) (-4 . “OR>”)) ) ) Теперь в операциях поворота и перемещения болта можно использовать один набор ss, включающий в себя все примитивы, принадлежащие изображению болта. В практике проектирования программист обычно использует именно эту описанную схему, вместо того чтобы вписывать программно создаваемые конструкции в существующие слои, типы линий и цвета.
6.5. Функции обработки наборов
(ssadd
(setq e1 (entnext)) присваивает имя e1 первому примитиву в чертеже,
(setq ss (ssadd)) создает пустой набор ss,
(ssadde1 ss) включает в набор ss примитив e1,
(setq e2 (entnext е1)) присваивает имя e2 примитиву, следующему за e1,
(ssadd e2 ss) добавляет примитив e2 в набор ss.
(ssdel
(ssdel e1 ss1) возвращает
(ssdel e2 ss1) возвращает
(sslength
(ssmemb
(ssname
(setq entx (ssname sset 50483.0))
возвращает имя 50484-го примитива набора, присваивая ему идентификатор entx.
6.6. Организация циклов при обработке наборов
В тех случаях, когда программа предусматривает выполнение ряда однотипных операций, целесообразно организовывать цикл подобно тому, как это делается в операторных программах. Далее описываются две, функции Автолиста, позволяющие решить эту задачу.
(repeat
(setq a 10 b 100)
(repeat 4
(setq a (+ a 10))
(setq b (+ b 100))
)