|
Расположение в меню |
---|
Деталь → Разделить → Логические фрагменты |
Верстаки |
Деталь |
Быстрые клавиши |
Нет |
Представлено в версии |
0.17 |
См. также |
Разрезать и сгруппировать, Булева XOR, Разгруппировать объединение, Булевы |
Инструмент Булево разделение вычисляет все фрагменты, которые могут получиться в результате применения булевых операций между исходными фигурами. Например, для двух пересекающихся сфер генерируются три непересекающихся, но соприкасающихся тёрдых тела.
На изображении выше части были раздвинуты вручную, чтобы показать нарезку
.
Выходная форма всегда является группой (объединением). Содержимое группы зависит от типа входной формы и режима работы. Это означает, что вы не можете сразу получить доступ к отдельным частям результата - они остаются сгруппированными вместе. Отдельные части могут быть извлечены путём разрыва соединения (Даунгрейд).
У инструмента три режима: "Standard (Стандарт)", "Split (Разделить)", и "CompSolid (Группа)".
«Стандарт» и «Разделить» различаются действием инструмента на кривые, оболочки и группы (составные тела). Если выбран режим «Разделить», они разделяются. Если «Стандарт», то они сохраняются вместе (получаются дополнительные сегменты).
Объединённая структура (группа) в режимах «Стандарт» и «Разделить» повторяет структуру на входе. То есть если вы работаете с двумя объединениями, каждое из которых содержит сферу, как в примере выше, результат также будет содержать два объединения, каждый из которых будет содержать части первоначально содержащейся сферы. То есть общий элемент будет повторён в результате дважды. Только если обе входных сферы не находятся в соединениях (в группе), результат будет содержать общий элемент один раз.
В режиме «Группа (CompSolid)» твёрдые тела объединяются в составное твёрдое тело (составное твердое тело (группа) - это набор твёрдых тел, соединенных гранями; они связаны с твёрдыми телами, как кривые связаны с рёбрами, а оболочки - с гранями; название, вероятно, является сокращением фразы «составное твёрдое тело (composite solid)»). На выходе получается невложенная группа составных твёрдых тел.
Булево разделение
Инструмент «Булево разделение» в «Стандартном режиме» - это общий оператор Fuse (Разрушить) (GFA) из OpenCascade. Он принимает комбинацию, вероятно, всех типов фигур, а логика вывода довольно запутанная. Смотрите Руководство пользователя OpenCascade: булевы операции.
Для режимов «Разделить» и «Группа» FreeCAD выполняет дополнительную постобработку.
Инструмент можно использовать в макросах и из консоли Python, используя следующую функцию:
BOPTools.SplitFeatures.makeBooleanFragments(name)
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 или новее, иначе инструмент будет недоступен.