Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

Точечная пара не может быть создана средствами только Автолиспа. Большинство функций вообще не работают с точечными парами. Исключение составляют уже описанные ранее car, cdr и описываемая ниже функция  assoc,  осуществляющая ассоциативную связь между элементами пары.

Поскольку пара создается Автокадом, то функция Автолиспа, используемая для создания точечной пары, должна быть пропущена через Автокад. Например, выражение (cons 1 “One”) создает список из двух элементов. Но, будучи введенной в командную строку Автокада, та же функция является основой для возникновения точечной пары.  Действительно,

(сommand: (setq d1 (cons 1 “One”))  возвращает  (1 . “One”).

Подобным образом точечная пара может быть создана, если выдержаны два условия. Второй элемент пары должен восприниматься Автокадом как атом, а первый – обладать структурой, способной играть роль ассоциативной единицы (например, соответствовать какому-либо DXF-коду).

6.3.  Средства  обработки  отдельных  примитивов

Обращение к примитиву обычно осуществляется через его идентификатор. В дальнейшем изложении обозначение  имя_пр имеет тот смысл, что соответствует конкретному примитиву, однозначно определенному любым доступным способом. Поддержку обработки примитивов обеспечивают описываемые ниже функции.

(entlast). Функция используется для вызова последнего неудаленного примитива, добавленного в базу данных явным образом или с помощью функции  command. При этой операции возвращается имя примитива.

НЕ нашли? Не то? Что вы ищете?

(entnext [имя_пр]). Если функция используется без аргумента имя_пр,  она возвращает имя первого неудаленного примитива в базе данных. Если  имя_пр указано, возвращается имя следующего за ним примитива. Например:

(setq e1 entnext)         присваивает идентификатор  е1

  первому примитиву графической базы данных,

(setq e2 (entnext e1))  присваивает  е2 примитиву,

следующему за  е1

(entdel имя_пр). Если примитив  имя_пр присутствует в чертеже, он удаляется. Если этот примитив был ранее удален в текущем сеансе, он восстанавливается. Например, если с помощью функции  entnext были выполнены операции, указанные в предыдущем примере, использование функции  entdel приводит к следующим результатам:

(entdel e1) удаляет из чертежа примитив  е1,

(entdel e1) восстанавливает удаленный примитив  е1.

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

(entget имя_пр). Функция возвращает ассоциированный список, содержащий характеристики примитива. Пусть последним созданным примитивом был отрезок прямой в слое CONTUR,  цвет примитива – красный, начальная точка примитива - (3.1  4.8),  конечная – (5.6  8.7). Тогда функция

(entget (entlast)) 

возвратит список, подобный приведенному в разделе 6.1.

(entmake список).  Функция создает в чертеже новый примитив. Аргумент  список должен содержать перечень всех необходимых характеристик примитива в формате, создаваемом функцией  entget. Если введенных характеристик достаточно для однозначного описания примитива, он создается в чертеже, а функция возвращает список характеристик. В противном случае функция возвращает  nil.

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

Дополнительные сведения об этих и других функциях обработки примитивов можно почерпнуть в [5, 6].



  Наборы примитивов

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

(ssget [режим] [точка1 [точка2]] [список] [фильтры]),

которая формирует набор примитивов, определяемый аргументами. Будучи введенной без аргументов, функция предлагает оператору осуществить выбор примитивов вручную. Аргумент режим – это строка, определяющая метод выбора объектов. Допустимыми являются  “W”,  “WP”,  “C”,  “CP”,  “L”,  “P”,  “I”  и  “F”. Возможен еще режим  “X”, осуществляющий выбор всех примитивов, созданных в чертеже. Аргументы  точка1 и  точка2 – отдельные точки или их список, присущие данному выбору. Аргумент  фильтры  - это ассоциированный список, определяющий свойства примитивов. Приводимые далее примеры заимствованы из [5].

(ssget) предлагает пользователю свободный выбор объектов и включает их в набор.

(ssget “P”)  организует набор из всех примитивов, принадлежащих предыдущему выбору.

(ssget “L”) создает набор, включающий в себя последний созданный объект, видимый на чертеже.

(ssget pt1) создает набор из всех примитивов, проходящих через точку  pt1.

(ssget “W” pt1 pt2) создает набор из примитивов, находящихся внутри окна с диагональными углами в точках  pt1  и  pt2.

(ssget “C” pt1 pt2) – то же, но определяющей является секущая рамка.

(ssget “X”) создает набор из всех примитивов, сохраненных в графической базе чертежа.

(ssget “X” список_фильтров) создает набор из всех объектов чертежа, удовлетворяющих списку фильтров.

(ssget список_фильтров) предлагает пользователю свободный выбор, но в набор включает лишь те объекты, которые удовлетворяют списку фильтров.

Организацию списка фильтров можно проследить на следующем примере:

(ssget “X” ‘((0 . “CIRCLE”) (-4 . “>=”) (40 . 2.0))).

Функция создает набор из всех окружностей, имеющихся в чертеже, радиус которых равен или превышает 2.0.

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

Т а б л и ц а  5

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

        Оператор  Значение

               “*”  Нет ограничений

               “=”                 Равно

        “<>”,  “!=” или  “/=”  Не равно

               “<”                 Меньше чем

               “>”                 Больше чем

               “<=”                 Меньше или равно

               “>=”  Больше или равно

Список фильтров может быть создан и с использованием логических  операторов:  “<AND  …  AND>”,  “<OR  …  OR>”, “<XOR … XOR>”,  “<NOT … NOT>”. Каждому логическому оператору присущи открывающий и закрывающий элементы. Поэтому они всегда употребляются в паре. Первые два оператора могут содержать любое количество операндов, третий – обязательно два, четвертый – только один операнд. Возможность использования логических операторов рассмотрим на следующем примере.

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

(command “layer”  “new” “b1”

                        “new” “b2”

                        “l” “continuous” “b1”

                        “l” “Acad_ISO04w100” “b2”

                        “c” “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 . “<OR”)

                                (8 . “b1”)

                                (8 . “b2”)

                                (-4 . “OR>”))

        )

)

Теперь в операциях поворота и перемещения болта можно использовать один набор ss, включающий в себя все примитивы, принадлежащие изображению болта.

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

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14