Читаем Введение в Автолисп полностью

В последнем примере использован оператор соответствия (relational operator), обладающий кодом DXF, равным -4, и выделяющий из общей массы объектов лишь те, которые удовлетворяют заданному условию. Он может иметь силу, если параметр выбора является численной величиной (целым или вещественным числом, точкой или вектором). В таблице 5 приведен список некоторых операторов соответствия.

Таблица 5. Операторы соответствия для фильтров наборов

ОператорЗначение
“*”Нет ограничений
“=”Равно
“<>”, “!=” или “/=”Не равно
“<”Меньше чем
“>”Больше чем
“<=”Меньше или равно
“>=”Больше или равно

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

Описанная ранее программа bolt.lsp создала шесть наборов примитивов. Однако всегда желательно количество используемых наборов сократить. Ниже приводится фрагмент программы, создающей лишь один набор. Для этого потребовалось создать специальные слои, в которых расположен чертеж болта.

(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, включающий в себя все примитивы, принадлежащие изображению болта.

В практике проектирования программист обычно использует именно эту описанную схему, вместо того чтобы вписывать программно создаваемые конструкции в существующие слои, типы линий и цвета.

<p>6.5. Функции обработки наборов</p>

(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 имя_пр набор). Функция удаляет примитив из набора и возвращает имя набора. Если названный, примитив в наборе отсутствует, возвращается nil. Например, если примитив e1 существует в наборе ss1, a примитив e2 нет, то

(ssdel e1 ss1) возвращает SS1 (без элемента e1);

(ssdel e2 ss1) возвращает nil.

(sslength набор). Функция возвращает целое число, соответствующее количеству элементов в наборе.

(ssmemb имя_пр набор). Функция проверяет, является ли указанный примитив элементом набора, Если да, возвращает его имя, если нет, возвращает nil.

(ssname набор индекс). Функция возвращает имя примитива, порядковый номер которого соответствует введенному индексу. Если индекс отрицателен или превышает число примитивов в наборе, возвращается nil. Следует помнить, что первому элементу набора присваивается индекс 0. Если необходимо извлечь имя примитива, индекс которого превышает 32767, следует вводить его как действительное число. Например,

(setq entx (ssname sset 50483.0))

возвращает имя 50484-го примитива набора, присваивая ему идентификатор entx.

<p>6.6. Организация циклов при обработке наборов</p>

В тех случаях, когда программа предусматривает выполнение ряда однотипных операций, целесообразно организовывать цикл подобно тому, как это делается в операторных программах. Далее описываются две, функции Автолиста, позволяющие решить эту задачу.

(repeat число выражение ...). Функция выполняет операции, определяемые выражением заданное число раз и возвращает последний результат. Аргумент число обязателен, список выражений не должен быть пустым. Пример [2]:

(setq a 10 b 100)

(repeat 4

    (setq a (+ a 10))

    (setq b (+ b 100))

)

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных