Принцип действия интеллектуального режима:

Если создаваемое тело и выбранное тело (явно или неявно) имеют пересечение объемами - тип булевой операции: вычитание .

Если создаваемое тело полностью лежит внутри выбранного тела - тип булевой операции: вычитание .

Если создаваемое тело касается выбранного тела – тип булевой операции: сложение .

Если условия, указанные в пунктах 1, 2, 3, не выполнены, или выбранное тело лежит внутри создаваемого, или при определении типа проникновения тел возникла ошибка – тип булевой не определен, булева операция не будет создана .

3. Выбрать первый операнд булевой операции (в некоторых случаях – необязательное действие) с помощью опции автоменю:

Если в сцене присутствует всего одно тело, то оно выбирается автоматически. Создаваемое в операции новое тело является вторым операндом булевой операции.

После подтверждения создания операции сначала создается тело, а затем выполняется булева операция заданного типа.


Следует отметить, что предварительный просмотр при создании таких операций отображает результат автоматической булевой только при создании операции. При редактировании предварительный результат не отображается. Если автоматически создаваемая булева операция не имеет результата, то на предварительном просмотре будет видна только создаваемая операция.

Удаление булевой операции

Если булева операция находится на верхнем уровне дерева, то при её удалении в дереве модели останутся Тела операндов этой булевой операции. Если же у булевой операции есть потомки, то при её удалении будет выдан диалог " Удаление элементов ".

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

На рисунке ниже показана структура Тела_1. Сначала была создана булева операция “Вычитание” операции “Круговой массив_1” из операции “Вращение_1”, а затем на грань результирующего тела булевой операции была нанесена “Резьба_1”. Если теперь удалить операцию “Булева_1” с попыткой исключения элемента из дерева модели и в диалоге “Выбор операции для переназначения потомков” выбрать операцию “Вращение_1”, то операция “Резьба _1” станет потомком операции “Вращение_1.

При удалении одного из операндов с исключением элемента из дерева модели будет удалена и сама булева операция.

Булевы операции с 3D фрагментами

Использование 3D фрагментов в качестве операндов является уникальной возможностью T-FLEX CAD. Благодаря этому значительно расширяются возможности создания параметрических 3D моделей и сборок. При вставке 3D фрагмента в сборку есть возможность автоматически создавать булеву операцию с телами сборки. Более подробно о возможностях использования 3D фрагмента в качестве операнда можно посмотреть в описании команды "3D Фрагмент " в разделе " Создание булевой операции на основе 3D фрагмента " и в описании команды ST: Параметры документа в разделе " Закладка 3D ".

При создании 3D фрагментов с заданной автоматической булевой операцией предварительный просмотр отображает не только вставляемый фрагмент, но и результат этой булевой операции.


Нанесение резьбы при помощи булевой операции

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

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

В диалоге параметров операции, вызываемом опцией , можно задать общие параметры операции .

Для редактирования созданной операции используется команда 3EB.

Конъюнкция или логическое умножение (в теории множеств – это пересечение)

Конъюнкция является сложным логическим выражением, которое истинно в том и только том случае, когда оба простых выражения являются истинными. Такая ситуация возможно лишь в единственном случае, во всех остальных случаях конъюнкция ложна.

Обозначение: &, $\wedge$, $\cdot$.

Таблица истинности для конъюнкции

Рисунок 1.

Свойства конъюнкции:

  1. Если хотя бы одно из подвыражений конъюнкции ложно на некотором наборе значений переменных, то и вся конъюнкция будет ложной для этого набора значений.
  2. Если все выражения конъюнкции истинны на некотором наборе значений переменных, то и вся конъюнкция тоже будет истинна.
  3. Значение всей конъюнкции сложного выражения не зависит от порядка записи подвыражений, к которым она применяется (как в математике умножение).

Дизъюнкция или логическое сложение (в теории множеств это объединение)

Дизъюнкция является сложным логическим выражением, которое истинно практически всегда, за исключением, когда все выражения ложны.

Обозначение: +, $\vee$.

Таблица истинности для дизъюнкции

Рисунок 2.

Свойства дизъюнкции:

  1. Если хотя бы одно из подвыражений дизъюнкции истинно на некотором наборе значений переменных, то и вся дизъюнкция принимает истинное значение для данного набора подвыражений.
  2. Если все выражения из некоторого списка дизъюнкции ложны на некотором наборе значений переменных, то и вся дизъюнкция этих выражений тоже ложна.
  3. Значение всей дизъюнкции не зависит от порядка записи подвыражений (как в математике – сложение).

Отрицание, логическое отрицание или инверсия (в теории множеств это отрицание)

Отрицание - означает, что к исходному логическому выражению добавляется частица НЕ или слова НЕВЕРНО, ЧТО и в итоге получаем, что если исходное выражение истинно, то отрицание исходного – будет ложно и наоборот, если исходное выражение ложно, то его отрицание будет истинно.

Обозначения: не $A$, $\bar{A}$, $¬A$.

Таблица истинности для инверсии

Рисунок 3.

Свойства отрицания:

«Двойное отрицание» $¬¬A$ является следствием суждения $A$, то есть имеет место тавтология в формальной логике и равно самому значению в булевой логике.

Импликация или логическое следование

Импликация - это сложное логическое выражение, которое истинно во всех случаях, кроме как из истины следует ложь. То есть, данная логическая операция связывает два простых логических выражения, из которых первое является условием ($A$), а второе ($A$) является следствием условия ($A$).

Обозначения: $\to$, $\Rightarrow$.

Таблица истинности для импликации

Рисунок 4.

Свойства импликации:

  1. $A \to B = ¬A \vee B$.
  2. Импликация $A \to B$ ложна, если $A=1$ и $B=0$.
  3. Если $A=0$, то импликация $A \to B$ истинна при любом значении $B$, (из лжи может следовать истинна).

Эквивалентность или логическая равнозначность

Эквивалентность - это сложное логическое выражение, которое истинно на равных значениях переменных $A$ и $B$.

Обозначения: $\leftrightarrow$, $\Leftrightarrow$, $\equiv$.

Таблица истинности для эквивалентности

Рисунок 5.

Свойства эквивалентности:

  1. Эквивалентность истинна на равных наборах значений переменных $A$ и $B$.
  2. КНФ $A \equiv B = (\bar{A} \vee B) \cdot (A \cdot \bar{B})$
  3. ДНФ $A \equiv B = \bar{A} \cdot \bar{B} \vee A \cdot B$

Строгая дизъюнкция или сложение по модулю 2 (в теории множеств это объединение двух множеств без их пересечения)

Строгая дизъюнкция истинна, если значения аргументов не равны.

Для электроники это означает, что реализация схем возможна с использованием одного типового элемента (правда это дорогостоящий элемент).

Порядок выполнения логических операций в сложном логическом выражении

  1. Инверсия(отрицание);
  2. Конъюнкция (логическое умножение);
  3. Дизъюнкция и строгая дизъюнкция (логическое сложение);
  4. Импликация (следствие);
  5. Эквивалентность (тождество).

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

Общие свойства

Для набора из $n$ логических переменных существует ровно $2^n$ различных значений. Таблица истинности для логического выражения от $n$ переменных содержит $n+1$ столбец и $2^n$ строк.

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

Основные понятия. Возможности операции

Типы булевой операции

Существует три типа булевой операции:

● Сложение . Результатом выполнения операции является тело, объединяющее в себе все части тел, участвующих в операции.

● Вычитание . Результатом выполнения операции является тело, полученное вычитание одного тела из другого.

● Пересечение . Результатом выполнения операции является тело, полученное пересечением тел, участвующих в операции и состоящее из общих частей этих тел.

Операнды булевой операции

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


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

Результаты булевых операций

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

Следует заметить, что в некоторых ситуациях, при сочетании определённых типов операндов в булевых операциях, невозможно получить результат.

Ниже рассмотрим основные комбинации операндов и результаты выполнения операции.

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

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

Интерпретация листового тела

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

Если операнд - листовое тело был определён как полупространство, то в сцене будут отображены векторы нормалей к поверхности листового тела. Направление этих векторов указывает, какое полупространство выбрано и повлияет на результат выполнения операции.

Операция "Сложение"

Результаты булевой операции "Сложение" при сочетании различных типов операндов:

Твёрдое тело + Твёрдое тело

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

Листовое тело + Твёрдое тело

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

Следует отметить, что листовое тело должно полностью пересекать твёрдое тело.

Твёрдое тело + Листовое тело

Если в качестве первого операнда было выбрано твёрдое тело, а в качестве второго – листовое, то в результате выполнения операции "Сложение" по умолчанию создается твёрдое тело. Грани листового тела будут формировать дополнительный объем для твердого тела.

Листовое тело в этом случае должно быть определено в команде как полупространство.

Следует отметить, что для формирования такого рода булевой операции необходимо, чтобы листовое тело при сложении с твёрдым телом замыкало объём. В противном случае невозможно получить результат операции.

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

Листовое тело + Листовое тело

В результате сложения двух листовых тел получается листовое тело. Для успешного создания операции необходимо, чтобы грани листовых тел либо имели общее ребро, либо совпадали на определённом участке. Эта возможность является схожей с операции "Сшивка ". Отличие заключается в том, что булева операция " Сложение " не удаляет зазоры между телами, а " Сшивка " пытается создать новую непрерывную поверхность.

Операция "Вычитание"

Результаты булевой операции "Вычитание" при сочетании различных типов операндов:

Твёрдое тело - Твёрдое тело

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

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

Листовое тело - Твёрдое тело

При вычитании твёрдого тела из листового, в листовом теле будет создано отверстие по форме второго операнда – твёрдого тела.

В результате вычитания листового тела из твёрдого остаётся часть твёрдого тела, отсечённая листовым телом. При этом листовое тело должно быть определено как полупространство. В зависимости от выбранного полупространства остается либо верхняя, либо нижняя часть твёрдого тела. Этот тип булевой операции является аналогом операции "Отсечение ".

Операция "Пересечение"

Результаты булевой операции "Пересечение" при сочетании различных типов операндов:

Твёрдое тело - Твёрдое тело

Результатом пересечения твёрдых тел является тело, представляющее собой общую часть всех операндов.

Листовое тело (полупространство) - Листовое тело (полупространство)

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

Листовое тело - Твёрдое тело

Если в качестве первого операнда было выбрано листовое тело, а в качестве второго – твёрдое, то в результате выполнения булевой операции "Пересечение" будет сформировано листовое тело, представляющее собой общую часть двух операндов.

Твёрдое тело - Листовое тело (полупространство)

В результате выполнения булевой операции "Пересечение" листового тела, интерпретированного как полупространство, и твёрдого тела останется часть твёрдого тела, отсечённая листовым телом. Результат выполнения этой операции похож на результат выполнения булевой операции "Вычитания" листового тела (полупространства) из твёрдого тела. Отличие в том, что в результате выполнения операции "Пересечение" остаётся другая часть твёрдого тела. При этом порядок выбора операндов не влияет на результат.

Булевы операции между листовыми телами (полупространствами)

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

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

Глобальные и локальные булевы операции

Если в качестве операндов выбираются листовые или твёрдые тела, то такие типы булевых операций будем называть " Глобальными ". При создании такой булевой операции система сама определяет грани тел, участвующие в операции, и их пересечения. Если в булевой операции участвуют геометрически сложные тела или используется достаточно большое количество операндов, то поиск всех пересечений может сильно замедлить выполнение команды.

Помимо "Глобальной" булевой операцией в T-FLEX есть понятие " Локальной " булевой операции. В отличие от "Глобальной" булевой операции, где в качестве операндов выбираются только тела, в "Локальной" булевой операции помимо тел выбираются грани операндов. Выбрать грани операндов можно в параметрах операции на закладке "Грани". В некоторых случаях использование "Локальной" булевой операции дает значительный выигрыш во времени регенерации модели по сравнению с "Глобальной" булевой операцией, т.к. в результате выполнения операции будут искаться пересечения только указанных граней. Например, если нужно проделать отверстие в достаточно сложном теле и известно, что отверстие пересекает небольшое количество граней, то имеет смысл указать эти грани в параметрах операции.

Следует заметить, что нужно внимательно выбирать грани для "Локальной" булевой операции. В случае неправильно выбранных граней может сформироваться некорректное тело.

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

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

Выборочные булевы операции

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

Часть операнда определяется топологическими элементами: вершинами, рёбрами или гранями. Для выбора части операнда достаточно указать в параметрах операции на закладке " Части операндов " один из этих элементов. На рисунке ниже показана возможность применения выборочной булевой операции "Сложение", при выполнении которой в результирующем теле остаются только выбранные части второго операнда.

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

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

Эта возможность позволяет:

1. Ускорить процесс пересчета булевой операции за счет того, что указан конкретный тип контакта.

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

В команде предусмотрены четыре типа соответствия:

Полное совпадение – границы топологических элементов совпадают с заданной точностью.

● Включение – границы второго элемента лежат в пределах границ первого элемента.

Частичное совпадение – границы одного элемента частично совпадают с границами другого элемента.

● Проецирование – совпадение отпечатков границ топологических элементов.

В таблице ниже представлено описание типов соответствия для различной топологии операндов:

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

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

Сглаживание новых рёбер

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

Отсутствие одного из операндов

При создании булевой операции можно установить параметр " Допускается возможность отсутствия одной из исходных операций ". Этот прием часто применяется в параметрических моделях, когда для определённого исполнения модели нужно исключить один из элементов. Как показано на рисунке ниже гайка может иметь два исполнения: с проточкой и без неё. Для того чтобы реализовать эти исполнения в одной модели можно подавить второй операнд при этом будут сохранены все последующие операции, созданные на основе булевой (в примере это сохранение косметической резьбы на грани булевой операции).

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

Создание булевой операции

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

Для создания операции нужно выполнить следующие действия:

1. Выбрать булевы операнды.

2. Выбрать тип булевой операции.

3. Выбрать части операндов для формирования выборочной булевой операции (не обязательно).

4. Задать соответствия элементов (не обязательно).

5. Задать дополнительные параметры (при необходимости).

6. Задать параметры сглаживания (не обязательно).

7. Подтвердить создание операции.

Основные параметры операции

Выбор операндов

Выбор операндов для глобальной булевой операции

Для выбора операндов глобальной булевой операции используется следующая опция:

<1> Выбрать булевы операнды

При этом в автоменю становятся доступными опции:

Выбрать первое тело

Выбрать второе тело

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

Для удаления любого операнда из списка нужно после его выбора в окне " Свойства " нажать кнопку [ Удалить ].

Для отмены выбора всех операндов служит опция:

Отменить выбор всех операндов

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

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

Выбор операндов для локальной булевой операции

Для перехода в режим выбора граней для создания локальной булевой операции можно воспользоваться опцией автоменю:

<3> Выбрать локальные грани

Грани " в окне " Свойства ".

При этом в автоменю становятся доступными следующие опции:

Выбрать локальные грани первого операнда

Выбрать локальные грани второго операнда

После выбора операндов можно, при помощи указанных опций автоменю или перевода фокуса ввода в окна закладки " Грани ", выбирать грани тел в сцене для создания локальной булевой операции. Во время создания булевой операции можно не выбирать операнды, а сразу переключиться в режим выбора граней. При этом тела, грани которых выбраны, будут автоматически добавлены как операнды на соответствующую закладку в параметрах операции. Маркировка граней первых и вторых операндов аналогична выбору операндов-тел. Для удаления грани нужно выбрать её в списке на закладе " Грани " и нажать кнопку [ Удалить ]. В некоторых случаях необходимо включить параметр " Обрезать по граням первых операндов " для формирования правильного результата операции.

Для отмены выбора всех локальных граней служит опция:

Отменить выбор локальных граней

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

Выбор типа булевой операции

Выбор типа операции осуществляется либо с помощью параметра " Тип операции " в окне " Свойства ", либо с помощью следующих опций автоменю:

<+> Сложение

<-> Вычитание

<*> Пересечение

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

Выбор частей операндов

Для создания выборочной булевой операции служит следующая опция:

<2> Выбрать части операндов

Также для активизации этого режима можно переключиться на закладку "

Выбрать элемент, определяющий часть операнда

Выбрать точку, определяющую часть операнда

При помощи этих опций можно выбрать элементы, определяющие части операндов. Имена выбранных элементов будут добавлены в список на закладке " Части операндов " в окне " Свойства ". На этой же закладке можно выбрать действие для выбранных частей операндов: оставлять их в результирующем теле или исключать. Это действие устанавливается для всех выбранных частей операндов.

Для отмены выбора частей операндов служит опция:

Отменить выбор элементов, определяющих части операндов

Для задания соответствия элементов служит опция:

<4> Задание соответствий элементов

Также для активизации этого режима можно переключиться на закладку " ". При этом в автоменю становятся доступными следующие опции:

Выбрать первый элемент

Выбрать второй элемент

Отмена выбора всех элементов

При помощи этих опций элементы для задания соответствия выбираются попарно. Имена выбранных элементов отображаются на закладке " Соответствия " в окне " Свойства ". Для всех пар элементов может быть установлен точный или приближенный метод. Тип соответствия выбирается из списка параметра " Тип " на этой закладке.

Следует отметить, что набор типов соответствия в этом списке может быть разным в зависимости от сочетания топологических элементов в паре (см. таблицу в параграфе " Задание соответствия элементов ").

На этой закладке может быть установлена точность соответствия.

Предварительный просмотр результатов булевых операций

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

Булевые операции. Правило для ребер пересечения

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

Булевы операции всегда применяются к двум объектам. Первый объект (который выделен) называется операндом А. Второй объект (который следует указать) – операнд Б. Тип булевой операции и взаимное расположение объектов определяют конечный результат. Объекты, к которым планируется применить булевы операции, должны иметь общую область, то есть соприкасаться друг с другом.

Существует четыре основных типа булевых операций:

Union (Сложение) – операция предназначена для объединения двух исходных объектов, при этом общая область двух объектов удаляется (рис. 4.16, а );

Intersection (Пересечение) – булев объект состоит только из общей области исходных объектов (рис. 4.16, б );

Рис. 4.16. Булевы операции Union (Сложение) и Intersection (Пересечение) с участием двух объектов – бутылки и сферы

Subtraction (А – В) (Вычитание (А –Б)) и Subtraction (В – А) (Вычитание (Б –А)) – один исходный объект вырезает отверстие из другого исходного объекта (рис. 4.17);

Рис. 4.17. Булева операция Subtraction (А – В) и Subtraction (В – А) (Вычитание) с участием двух объектов – бутылки и сферы

Cut (Разрезание) – операция предназначена для разрезания одного объекта другим (рис. 4.18).

Рис. 4.18. Булева операция Cut (Разрезание) с участием двух объектов – бутылки и плоскости

Для применения булевых операций нужно сделать следующее.

1. Создать два исходных объекта и убедиться, что они пересекаются.

2. Выделить один из объектов (выделенный объект автоматически получает имя – объект А).

3. Создать составной объект Boolean (Булев) одним из следующих способов:

Выбрать команду меню Create → Compound → Boolean (Создать → Составные → Булев);

На вкладке Create (Создание) командной панели активизировать категорию создания трехмерных объектов Geometry (Геометрия), раскрыть список подкатегорий (там, где написано Standard Primitives (Стандартные примитивы)), выбрать строку Compound Objects (Составные объекты) и в свитке Object Type (Тип объекта) нажать кнопку с названием операции – Boolean (Булев). В свитке Parameters (Параметры) в области Operands (Операнды) появится имя операнда А.

4. Установить переключатель Operation (Операция) в положение, соответствующее нужной операции.

5. В свитке Pick Boolean (Выбрать булев объект) нажать кнопку Pick Operand B (Выбрать операнд Б), после чего в любом окне проекции щелкнуть на втором исходном объекте.



Если после применения операции понадобится изменить параметры операндов (например, изменить радиус сферы), следует на командной панели переключиться на вкладку Modify (Редактирование), в стеке модификаторов щелкнуть на плюсике слева от названия объекта Boolean (Булев). В появившемся списке перейти на единственный уровень редактирования – Operands (Операнды), затем в свитке Parameters (Параметры) в списке Operands (Операнды) щелкнуть на соответствующей строке. В стеке модификаторов под строкой Boolean (Булевы) появится строка-идентификатор соответствующего операнда. Щелчок на этой строке отобразит параметры операнда (рис. 4.19).

Рис. 4.19. Управление параметрами операндов осуществляется в стеке модификаторов

По умолчанию при выполнении булевой операции исходный объект Б удаляется. Однако если вы хотите, чтобы он оставался в сцене в том виде, в котором он присутствовал до булевой операции, необходимо до ее выполнения изменить положение переключателя в свитке Pick Boolean (Выбрать булев объект). Этот переключатель имеет четыре положения:

Move (Перемещение) – после выполнения булевой операции объект Б удаляется. По умолчанию используется именно это положение;

Copy (Независимая копия объекта) – булева операция выполняется с копией объекта Б, а сам объект остается в сцене;

Instance (Привязка) – булева операция производится с зависимой копией объекта Б. При этом исходный объект остается в сцене, а изменение параметров одного из объектов (исходного или булевого) влечет за собой изменение параметров другого;

Reference (Подчинение) – создается копия объекта Б, которая частично зависит от исходного объекта.

Булевы операции и математическая логика

Булевы операции очень близки (хотя и не тождественны) логическим связкам в классической логике . Бит можно рассматривать как логическое суждение - его значениями являются 1 «истина» и 0 «ложь». При такой интерпретации известные в логике связки конъюнкции , дизъюнкции , импликации , отрицания и другие имеют представление на языке битов. И наоборот, битовые операции легко описываются на языке исчисления высказываний .

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

Булевы операции как основа цифровой техники

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

Список битовых операций

И

«(Логическое) И» (and) - аналог конъюнкции в логике. Иногда называется логическим умножением.

Выдаёт 1 если оба входа равны 1, в противном случае 0. Если один из аргументов равен 1, то результат «И» равен другому. Если один из аргументов равен 0, то результат «И» равен 0 независимо от значения другого аргумента.

НЕ

«(Логическое) НЕ» (not), инвертирование - аналог отрицания в логике.

Данная унарная операция (с одним входом) заменяет 0 на 1 и наоборот. Реализующий её элемент называется инвертором .

ИЛИ

«(Логическое) ИЛИ» (or) - аналог дизъюнкции в логике.

Выдаёт 1 если и только если хотя бы один из входов равен 1. Операция, двойственная AND: при инвертировании выхода и всех входов (т.е. при замене 0 и 1 местами) «И» и «ИЛИ» взаимно превращается друг в друга.

Исключающее ИЛИ

«Исключающее ИЛИ» (xor), «сложение по модулю 2» - аналог исключающего ИЛИ в логике.

Если один из аргументов равен 0, то результат равен другому. Если один из аргументов равен 1, то результат равен отрицанию другого аргумента. Первое русское название операции обусловлено тем, что результат данной операции отличается от результата «ИЛИ» только в одном случае из 4 случаев входа - обоих 1 (случай одновременной истинности аргументов «исключается»). Ещё в русской грамматике значение данной логической связки передаётся союзом «либо».

Второе название - тем, что действительно является сложением в кольце вычетов по модулю 2, из чего следуют некоторые интересные свойства. Например, в отличие от вышеописанных «И» и «ИЛИ» данная операция является обратимой, или инволютивной: .

Операции от многих аргументов

Операции «И», «ИЛИ» и «исключающее ИЛИ» являются не только коммутативными, но и ассоциативными , и потому легко обобщаются на случай нескольких аргументов (входов).

Прочие бинарные операции

Стрелка Пирса является результатом инвертирования результата «ИЛИ» своих аргументов, выдаёт значение 1 только когда оба входа 0.

«И-НЕ» (nand), или «штрих Шеффера» .

Двойственная стрелке Пирса операция: является результатом инвертирования результата «И» своих аргументов, выдаёт значение 0 только когда оба входа 1. Известна простотой реализации в ТТЛ .

Импликация («если-то») - аналог импликации в логике.

Совпадает с «ИЛИ» с инвертированным первым аргументом, выдаёт значение 0 только когда первый вход 1 а второй - 0. Данная операция не является коммутативной , в отличие от всех вышеописанных бинарных операций. Её можно понимать как арифметическое (меньше или равно).

Эквиваленция . Выдаёт 1 если и только если оба аргумента равны между собой. Является результатом инвертирования результата «исключающего ИЛИ» своих аргументов. Она же и двойственна исключающему «ИЛИ» в вышеописанном смысле.

Сводная таблица истинности булевых операций

Название→
Аргументы
И (AND) НЕ (NOT) ИЛИ (OR) искл. ИЛИ(XOR) импликация стрелка
Пирса
штрих
Шеффера
x y ()
(x&y)
()
(~x)
()
(x|y)
()
(x^y)
()
((~x)|y)

((~x)&(~y))

(~(x&y))
0 0 0 1 0 0 1 1 1
0 1 0 1 1 1 1 0 1
1 0 0 0 1 1 0 0 1
1 1 1 0 1 0 1 0 0

Операции над битовыми векторами

Обобщение операций на булеву алгебру

Вместо одиночных битов мы можем рассмотреть векторы из фиксированного количества битов (в программировании их называют регистрами), например, байты . В программировании регистры рассматривают как двоичное разложение целого числа: b = b 0 + 2b 1 + 2 2 b 2 + ... + 2 N − 1 b N − 1 , где N - количество битов в регистре.

Тем не менее, ничто не мешает рассматривать эти регистры именно как битовые векторы и проводить булевые операции покомпонентно (бит номер k значения есть результат операция от битов номер k аргументов). Кстати, математически говоря, булевы операции распространяются таким образом на произвольную булеву алгебру . Таким образом мы получаем операции побитового И, ИЛИ, НЕ, искл. ИЛИ и т. д. Как арифметические, данные операции не обладают хорошими свойствами за исключением побитового НЕ, которое для чисел в дополнительном коде совпадает с вычитанием из −1 (~x == -1-x). Однако, они очень полезны в программировании.

Битовые сдвиги

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

Также различают сдвиг влево (в направлении от младшего бита к старшему) и вправо (в направлении от старшего бита к младшему).

Арифметический сдвиг (правый)

Циклический сдвиг

Циклический сдвиг через перенос

Логический сдвиг

При логическом сдвиге значение последнего бита по направлению сдвига теряется (копируясь в бит переноса), а первый приобретает нулевое значение.

Логические сдвиги влево и вправо используются для быстрого умножения и деления на 2, соответственно.

Арифметический сдвиг

Арифметический сдвиг аналогичен логическому, но значение слова считается знаковым числом представленному дополнительным кодом. Так при правом сдвиге старший бит сохраняет свое значение. Левый арифметический сдвиг идентичен логическому.

Циклический сдвиг

При циклическом сдвиге, значение последнего бита по направлению сдвига копируется в первый бит (и копируется в бит переноса).

Также различают циклический сдвиг через бит переноса - при нем первый бит по направлению сдвига получает значение из бита переноса, а значение последнего бита сдвигается в бит переноса.

2-адическая интерпретация

Целое число, записанное (в дополнительном коде) в бесконечный (в сторону положительных степеней двойки) двоичный регистр является естественным объектом для теории p-адических чисел при p = 2 . Множество целых 2-адических чисел (т.е. произвольных бесконечных битовых последовательностей) может быть рассмотрено как булева алгебра точно так же как и множество значений битового регистра конечной длины. Все вышеперечисленные битовые операции оказываются непрерывными отображениями . Хотя практическое программирование не располагает регистрами бесконечной длины, это не мешает использовать данный теоретический факт в криптографии для создания быстродействующих алгоритмов шифрования.

Практические применения

Физическая реализация битовых операций

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

В пожароопасных и взрывоопасных условиях до сих пор применяют пневматические логические устройства (пневмоника).

Наиболее распространены электронные реализации битовых операций при помощи транзисторов , например резисторно-транзисторная логика (РТЛ), диодно-транзисторная логика (ДТЛ), эмиттерно-связанная логика (ЭСЛ), транзисторно-транзисторная логика (ТТЛ), N-МОП логика, КМОП логика и др..

В квантовых вычислениях из перечисленных булевых операций реализуются только НЕ и искл. ИЛИ (с некоторыми оговорками). Квантовых аналогов И, ИЛИ и т.д. не существует.

Схемы аппаратной логики

Результат операции ИЛИ-НЕ или ИЛИ ото всех битов двоичного регистра проверяет, равно ли значение регистра нулю; то же самое взятое от выхода искл. ИЛИ двух регистров проверяет равенство их значений между собой.

Битовые операции применяются в знакогенераторах и графических адаптерах ; особенно велика была их роль в адаптере графический ускоритель.

Использование в программировании

Благодаря реализации в арифметическом логическом устройстве (АЛУ) процессора многие их регистровые битовые операции аппаратно доступны в языках низкого уровня . В большинстве процессоров реализованы в качестве инструкции регистровый НЕ; регистровые двухаргументные И, ИЛИ, исключающее ИЛИ; проверка равенства нулю (см. выше); три типа битовых сдвигов, а также циклические битовые сдвиги.

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

Цель работы : Изучение основных приемов размножения объектов с помощью функции «массив»; изучение технологии создания объектов с помощью булевых операций.

Булевы операции

Булевы операции (часто их называют логическими) пришли в 3D графику из математики, точнее, из булевой алгебры (названной в честь ее создателя - Джорджа Буля) и основаны на понятиях объединения, пересечения и исключения. В 3D Studio Max существует три основных булевых операции, результаты применения которых показаны на рисунке 1:
  1. Объединение (соединение объектов в один).
  2. Пересечение (в булевый объект входят только общие части исходных объектов).
  3. Исключение (вырезание).
Рисунок 1. Результаты применения булевых операций.
Объединение . Результирующий объект, полученный объединением двух объектов, содержит все точки двух исходных объектов-операндов, за исключением дубликатов общих точек.

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

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

Использование булевых операций

Булевы операции в 3D Studio Max можно выполнять только над двумя объектами. Эти объекты должны пересекаться, т.е. содержать общие точки. Булевы операции позволяют создавать составные объекты, выполняя операции объединения, вычитания и пересечения частей двух объектов. К булевым операциям можно получить доступ следующим образом (рис. 2).
Рисунок 1. Получение доступа к булевым операциям.

Вначале требуется выделить объект, который будет участвовать в операции первым, т.е. будет объектом А в одном из окон проекций. Затем необходимо щелкнуть на вкладке Create (Создать) панели команд и на кнопке Geometry (Геометрия). В раскрывающемся списке под этой кнопкой выберите режим Compound Objects (Составные объекты). В ветви Object Type (Тип объекта) щелкните на кнопке Boolean (Булевы операции). В панели команд появится свиток с операциями, которые можно выполнять применительно к объектам. Булевы операции упоминают в сочетании с еще одним термином – операндом. Операнд – это переменная, присвоенная выбранным объектам во время выполнения операции. Операнд во многом подобен переменным, используемым в алгебре при составлении уравнений. Например, переменные А и В можно использовать для представления двух объектов, к которым будет применена булева операция.

  • Union (Объединение). Эта функция объединяет два объекта в один и удаляет перекрывающиеся или накладывающиеся области.
  • Intersection (Пересечение). Эта функция создает объект, который содержит только перекрывающиеся области обоих объектов.
  • Substraction (Вычитание [А-В]) и Substraction (Вычитание [В-А]). Эта операция позволяет удалить один из объектов и любые перекрывающиеся области объектов. При операции данного типа выбор А-В приводит к вычитанию объекта В из объекта А, а В-А – к вычитанию объекта А из В.
  • (Добавлена в старших версиях программы) Cut (Разрез). Эта функция рассекает операнд А операндом В. Она работает аналогично модификатору Slice (Сечение), который позволяет рассечь каркас. Обратите внимание на наличие четырех вариантов вырезания: Refine (Уточнение), Split (Расщепление), Remove Inside (Удаление внутри), Remove Outside (Удаление снаружи).
  • Операция Refine добавит в операнд А новые вершины и ребра в местах его пересечения с операндом В. Операция Split рассечет объект на два куска. Операции Remove Inside и Remove Outside удалят из операнда А все грани, которые находятся, соответственно, внутри и снаружи операнда В.
Создание булевых объектов

Объекты типа Boolean (Булевы) создаются за счет применения к оболочкам двух трехмерных тел операций булевой алгебры. Оболочки исходных тел, участвующих в булевой операции – операнды (operands ), обязательно должны пересекаться. Из двух объектов, участвующих в булевой операции, один должен быть выделен до ее начала (операнд А), а другой (операнд В) указывается в ходе операции. После выделения одного из объектов, необходимо выбрать переключатель той операции, которую нужно выполнить. После того, как эти элементы выбраны, следует выбрать переключатель одного из типов копирования:

  • Move (Переместить) – в этом случае в логической операции участвует сам объект. Он пропадет после выполнения операции.
  • Сору (Копия) – в операции участвует копия второго объекта. Сам объект остается при этом без изменения.
  • Reference (Ссылка) – в операции принимает участие ссылка на второй объект.
  • Instance (Экземпляр) – в операции принимает участие экземпляр второго объекта.
Затем потребуется щелкнуть на кнопке Pick Operand В (Выбрать операнд В) и, как только она будет выделена, в окне проекции необходимо выбрать второй объект, применительно к которому нужно выполнить булеву операцию. Приступая к созданию булевых объектов, следует помнить, что иногда они нестабильны и в определенных ситуациях могут приводить к нежелательным результатам. Поэтому, прежде чем применять булевы операции, рекомендуем создать резервную копию текущего проекта, чтобы в случае повреждения объектов их можно было восстановить. В процессе работы с булевыми функциями обнаруживается, что иногда булевы объекты ведут себя крайне нестабильно в случае применения нескольких булевых операций в отношении одних и тех же объектов. Один из возможных методов разрешения этой проблемы – преобразование объекта в редактируемый каркас перед выполнением каждой булевой операции. Это может уменьшить вероятность получения нежелательных результатов.

Операции > Булева

Предварительный просмотр результата операции

Предварительный просмотр изменений, вносимых операцией

Дополнительные параметры операции

Продолжение рёбер операндов

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

Выбор типа результирующего тела

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

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

Копирование по образцу

Если в качестве одного из операндов используется 3D массив, то, включив параметр " Копирование по образцу ", можно значительно сократить время выполнения булевой операции.

Возможность отсутствия одного из операндов

Если в создаваемой булевой операции включить параметр " Допускается отсутствие одной из исходных операций ", то в дальнейшем можно будет подавить один из операндов и при этом сохранить результат булевой операции.

Сглаживание новых ребер

Для включения режима сглаживания новых рёбер, полученных пересечением граней первых и вторых операндов, нужно включить параметр " Сгладить новые рёбра ". После этого становится доступна группа параметров, позволяющая выбрать тип сглаживания (" Скругление ", " Фаска ") и величину сглаживания (параметр " Радиус ").

Материал новых граней

Может быть выбрано одно из трех значений:

● “ Материал 1-го операнда ”. В этом случае для новых граней будет назначен основной материал, либо материал покрытия, если он задан, в соответствии с этими параметрами первого операнда. Если первых операндов несколько и они с разными материалами, то на новых гранях будет сохранён материал того операнда, который участвовал в формировании этих граней.

● “ Материал 2-го операнда ”. При этом значении материал граней второго операнда, которые участвовали в формировании новых граней, перенесется на эти новые грани. Это может быть и основной материал, и материал покрытия, если он задан, и даже материал операции назначения материала. Например, в результате булевой операции "Вычитание"между первым операндом с материалом сталь и вторым операндом с материалом черный пластик на созданных гранях результирующего тела будет наложен материал черный пластик. Если вторых операндов несколько и они с разными материалами, то на новых гранях будет сохранён материал того операнда, который участвовал в формировании этих граней.

● “ Основной материал 1-го операнда ”. Действие этого параметра аналогично первому параметру (“ Материал 1-го операнда ”), за исключением случая, когда задан материал покрытия, материал покрытия на новых гранях не применяется. Например, если в детали с основным материалом "Сталь" и с покрытием "Медь" с помощью булевой операции проделать отверстие, то внутри оно будет выглядеть стальным в соответствии с основным материалом.

Особенности работы с булевыми операциями

Отображение булевой операции в окне "3D Модель"

После создания булевой операции она помещается в папку "Булевы" в окне " 3D модель ". Слева от каждой булевой операции отображается пиктограмма, обозначающая тип операции ( Сложение, Вычитание, Пересечение). Особым образом булевы операции отображаются в дереве 3D модели. При раскрытии структуры Тела булева операция показывается в виде пиктограммы слева от второго операнда. На рисунке справа показана "Булева операция_2": пересечение первого операнда "Вращение_1" со вторым операндом "Выталкивание_2".

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


Создание булевой операции в дереве 3D модели

В дереве 3D модели можно создать булеву операцию без явного вызова команды создания.

Используя метод Drag&Drop , можно выбрать одно тело в дереве 3D модели и удерживая левую кнопку мыши перетащить его на другое тело. В этом случае будет автоматически создана булева операция "Сложение". Если при этом удерживать нажатым Вычитание ". Если вместо удерживать нажатым будет создана булева операция " Пересечение ". Перетаскиваемое тело будет вторым операндом, а тело, на которое перетаскивают – первым операндом.

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

При создании многих операций T-FLEX CAD возможно автоматическое создание булевой операции. Создаваемое тело при этом всегда является вторым операндом булевой операции. В качестве первого операнда выбирается любое из уже существующих тел 3D модели.

Для создания булевой операции необходимо:

1. Включить режим создания булевой операции с помощью опции автоменю:

Булева операция создаётся при нажатой пиктограмме.

2. Выбрать тип создаваемой операции с помощью опции автоменю, содержащей выпадающий список:

Интеллектуальный

КАТЕГОРИИ

ПОПУЛЯРНЫЕ СТАТЬИ

© 2024 «kingad.ru» — УЗИ исследование органов человека