|
Расположение в меню |
---|
Деталь → Разделить → Логические фрагменты |
Верстаки |
Деталь |
Быстрые клавиши |
Нет |
Представлено в версии |
0.17 |
См. также |
Разрезать и сгруппировать, Булева XOR, Разгруппировать объединение, Булевы |
Описание
Инструмент Булево разделение вычисляет все фрагменты, которые могут получиться в результате применения булевых операций между исходными фигурами. Например, для двух пересекающихся сфер генерируются три непересекающихся, но соприкасающихся тёрдых тела.
На изображении выше части были раздвинуты вручную, чтобы показать нарезку
.
Выходная форма всегда является группой (объединением). Содержимое группы зависит от типа входной формы и режима работы. Это означает, что вы не можете сразу получить доступ к отдельным частям результата - они остаются сгруппированными вместе. Отдельные части могут быть извлечены путём разрыва соединения (Даунгрейд).
У инструмента три режима: "Standard (Стандарт)", "Split (Разделить)", и "CompSolid (Группа)".
«Стандарт» и «Разделить» различаются действием инструмента на кривые, оболочки и группы (составные тела). Если выбран режим «Разделить», они разделяются. Если «Стандарт», то они сохраняются вместе (получаются дополнительные сегменты).
Объединённая структура (группа) в режимах «Стандарт» и «Разделить» повторяет структуру на входе. То есть если вы работаете с двумя объединениями, каждое из которых содержит сферу, как в примере выше, результат также будет содержать два объединения, каждый из которых будет содержать части первоначально содержащейся сферы. То есть общий элемент будет повторён в результате дважды. Только если обе входных сферы не находятся в соединениях (в группе), результат будет содержать общий элемент один раз.
В режиме «Группа (CompSolid)» твёрдые тела объединяются в составное твёрдое тело (составное твердое тело (группа) - это набор твёрдых тел, соединенных гранями; они связаны с твёрдыми телами, как кривые связаны с рёбрами, а оболочки - с гранями; название, вероятно, является сокращением фразы «составное твёрдое тело (composite solid)»). На выходе получается невложенная группа составных твёрдых тел.
Применение
- Выбрать объекты для пересечения.
Порядок выделения не важен, поскольку действие инструмента симметрично. Достаточно выделить по одному элементу каждого объекта (например, грани). Вы также можете выбрать группу, содержащую все соединяемые фигуры, например Ортогональный Массив. - Есть несколько способов вызвать инструмент:
- Нажмите кнопку
Булево разделение.
- Выберите в меню Деталь → Разделить →
Логические фрагменты.
- Нажмите кнопку
- Создаётся параметрический объект Boolean Fragments. Исходные объекты скрываются, а результат пересечения отображается в 3D виде.
Свойства
Булево разделение
- ДанныеObjects (Объекты): Список объектов для пересечения. Обычно требуется как минимум два объекта, но подойдет и группа (объединение), содержащее пересекаемые формы. (начиная с FreeCAD v0.17.8053, это свойство не отображается в редакторе свойств и доступно только через Python).
- ДанныеMode (Режим): «Standard (Стандарт)», «Split (Разделить)» или «CompSolid (Группа)». «Стандарт» - по умолчанию. «Стандарт» и «Разделить» отличаются действием инструмента на фигуры типа объединение: если выбран режим «Разделить», то они разделяются; в противном случае они хранятся вместе (получаются дополнительные сегменты).
- ДанныеTolerance (Точность): Значение "нечёткости". Это дополнительный допуск, применяемый при поиске пересечений, в дополнение к допускам, хранящимся во входных фигурах.
Детали реализации
Инструмент «Булево разделение» в «Стандартном режиме» - это общий оператор Fuse (Разрушить) (GFA) из OpenCascade. Он принимает комбинацию, вероятно, всех типов фигур, а логика вывода довольно запутанная. Смотрите Руководство пользователя OpenCascade: булевы операции.
Для режимов «Разделить» и «Группа» FreeCAD выполняет дополнительную постобработку.
Написание скриптов
Инструмент можно использовать в макросах и из консоли Python, используя следующую функцию:
BOPTools.SplitFeatures.makeBooleanFragments(name)
- Создает пустую функцию BooleanFragments. Свойство «Объекты» должно быть назначено впоследствии явно.
- Возвращает вновь созданный объект.
BooleanFragments также может применяться к простым формам, без необходимости наличия объекта документа, с помощью:
import BOPTools.SplitAPI
BOPTools.SplitAPI.booleanFragments(list_of_shapes, mode, tolerance = 0.0)
# OR, for Standard mode:
list_of_shapes = [App.ActiveDocument.Sphere.Shape, App.ActiveDocument.Sphere001.Shape]
pieces, map = list_of_shapes[0].generalFuse(list_of_shapes[1:], tolerance)
# pieces receives a compound of shapes; map receives a list of lists of shapes, defining list_of_shapes <--> pieces correspondence
Это может быть полезно для создания пользовательских сценариев Python.
Пример:
import BOPTools.SplitFeatures
j = BOPTools.SplitFeatures.makeBooleanFragments(name= 'BooleanFragments')
j.Objects = FreeCADGui.Selection.getSelection()
Инструмент сам реализован на Python, см. /Mod/Part/BOPTools/SplitFeatures.py там, где установлен FreeCAD.
Примечания
Инструмент появился в FreeCAD v0.17.8053. FreeCAD необходимо скомпилировать с OCC 6.9.0 или новее, иначе инструмент будет недоступен.
Эта страница получена от https://wiki.freecad.org/Part_BooleanFragments