Part BooleanFragments/ru: Difference between revisions

From FreeCAD Documentation
(Created page with "==Свойства==")
(Updating to match new version of source page)
 
(39 intermediate revisions by 4 users not shown)
Line 1: Line 1:
<languages/>
<languages/>

<div class="mw-translate-fuzzy">
{{Docnav/ru
{{Docnav/ru
|[[Part_CompSplittingTools/ru|CompSplittingTools]]
|[[Part_CompSplittingTools/ru|Инструменты разделения]]
|[[Part_SliceApart/ru|Slice a part]]
|[[Part_SliceApart/ru|Slice to compoundApart]]
|[[Part_Module/ru|Part]]
|[[Part_Workbench/ru|Верстак Part]]
|IconL=Part_CompSplittingTools.png
|IconL=Part_CompSplittingTools.png
|IconC=Workbench_Part.svg
|IconR=Part_SliceApart.svg
|IconR=Part_SliceApart.svg
|IconC=Workbench_Part.svg
}}
}}
</div>


<div class="mw-translate-fuzzy">
{{GuiCommand/ru
{{GuiCommand/ru
|Name=Part BooleanFragments
|Name=Part BooleanFragments
|Name/ru=Part BooleanFragments
|Name/ru=Part BooleanFragments
|MenuLocation=Деталь → Разделить → Boolean Fragments
|MenuLocation=Деталь → Разделить → Boolean Fragments
|Workbenches=[[Part Module/ru|Part]]
|Workbenches=[[Part_Workbench/ru|Part]]
|SeeAlso=[[Part_Slice/ru|Part Slice]], [[Part_XOR/ru|Part XOR]], [[Part_CompJoinFeatures/ru|Join features]], [[Part Boolean/ru|Part Boolean]]|Version=0.17.8053
|SeeAlso=[[Part_Slice/ru|Part Slice]], [[Part_XOR/ru|Part XOR]], [[Part_CompJoinFeatures/ru|Join features]], [[Part Boolean/ru|Part Boolean]]|Version=0.17.8053
}}
}}
</div>


<span id="Description"></span>
==Описание==
==Описание==


Инструмент для вычисления всех фрагментов, которые могут возникнуть в результате применения логических операций между входными фигурами. Например, для двух пересекающихся сфер создаются три неперекрывающихся, но соприкасающихся твердых тела.
Tool to compute all fragments that can result from applying Boolean operations between input shapes. For example, for two intersecting spheres, three non-overlapping but touching solids are generated.


[[image:Part_BooleanFragments_Demo.png|600px]]
[[image:Part_BooleanFragments_Demo.png|600px]]


<div class="mw-translate-fuzzy">
(on the picture above, the pieces were moved apart manually afterwards, to reveal the slicing)
(на картинке выше части были впоследствии раздвинуты вручную, чтобы показать разрез)
</div>


<div class="mw-translate-fuzzy">
The output shape is always a compound. The content of the compound depends on input shape types and operation mode. That means, you don't immediately get access to individual pieces of the result - the pieces remain grouped together. The individual pieces can be extracted by exploding the compound ([[Draft Downgrade]]).
Итоговая форма всегда является компаундом. Состав компаунда зависит от типов входных фигур и режима работы. Это означает, что вы не сразу получаете доступ к отдельным частям результата - части остаются сгруппированными вместе. Отдельные части могут быть извлечены путем применения разбивки соединения ([[Draft_Downgrade/ru|Draft Downgrade]]).
</div>


The tool has three modes: "Standard", "Split", and "CompSolid".
У инструмента три режима: "Standard", "Split", and "CompSolid".


«Standard» и «Split» различаются действием инструмента на рёбра, оболочки и составные тела: если «Split», они разделяются; если «Standard», они остаются вместе (получают дополнительные сегменты).
"Standard" and "Split" differ by the action of the tool on wires, shells and compsolids: if "Split", those are separated; if "Standard", they are kept together (get extra segments).


Компаундная структура в режимах «Standard» и «Split» следует компаундной структуре на входе. То есть, если вы обработаете два компаунда, каждый из которых содержит сферу, как в примере выше, результат также будет содержать два компаунда, каждый из которых содержит куски изначально входившей в них сферы. Это значит, что общий кусок будет повторен в результате дважды. Только если обе входные сферы не входят в компаунды, результат будет содержать общий кусок единожды.
Compounding structure in "Standard" and "Split" modes follows the compounding structure of inputs. That is, if you feed in two compounds, each containing a sphere like on example above, the result will also contain two compounds, each containing the pieces of the originally contained sphere. That means, the common piece will be repeated twice in the result. Only if the input spheres are both not in compounds, the result will contain the common piece once.


В режиме «CompSolid» твердые тела объединяются в compsolid (compsolid - это набор твердых тел, соединенных гранями; они связаны с твердыми телами, как полилинии связаны с ребрами, а оболочки связаны с гранями; название, вероятно, является сокращенной фразой «композитное твердое тело»). На выходе получается невложенное соединение compsolids.
In "CompSolid" mode, the solids are joined into a compsolid (compsolid is a set of solids connected by faces; they are related to solids like wires are related to edges, and shells are related to faces; the name is probably a shortened phrase "composite solid"). The output is a non-nested compound of compsolids


<span id="Usage"></span>
==Использование==
==Применение==


<div class="mw-translate-fuzzy">
# Select objects to be intersected. <br /> The order of selection is not important, since the action of the tool is symmetric. It is enough to select one sub-shape of each object (e.g., faces). You can also select a compound containing all the shapes to be connected, e.g. [[Draft Array]].
# Выбрать объекты для пересечения. <br /> Порядок выделения не важен, поскольку действие инструмента симметрично. Достаточно выделить по одной подфигуре каждого объекта (например, лица). Вы также можете выбрать соединение, содержащее все соединяемые фигуры, например [[Draft_Array/ru|Массив]].
# Invoke the Part BooleanFragments command several ways:
# Вызвать команду Part BooleanFragments несколькими способами:
#* Pressing the [[Image:Part_BooleanFragments.svg|24px|link=Part_BooleanFragments]] button in the toolbar
#* Нажатие кнопки [[Image:Part_BooleanFragments.svg|24px|link=Part_BooleanFragments/ru]] на панели инструментов
#* Using the {{MenuCommand|Part → Split → Boolean Fragments}} entry in the Part menu
#* Использование пункта {{MenuCommand|Деталь → Разделить → Boolean Fragments}} в меню Деталь
</div>


<div class="mw-translate-fuzzy">
A Boolean Fragments parametric object is created. Original objects are hidden, and the result of intersection is shown in [[3D view]].
Создается параметрический объект Boolean Fragments. Исходные объекты скрываются, а результат пересечения показываются в [[3D_view/ru|Окне трёхмерного вида]].
</div>


<span id="Properties"></span>
==Свойства==
==Свойства==


{{TitleProperty|Boolean Fragments}}
{{TitleProperty|Boolean Fragments}}
* {{PropertyData|Objects}}: список объектов для пересечения. Обычно требуется как минимум два объекта, но подойдет и одно соединение, содержащее пересекаемые формы. (начиная с FreeCAD v0.17.8053, это свойство не отображается в редакторе свойств и доступно только через Python).
* {{PropertyData|Objects}}: List of objects to be intersected. Generally, at least two objects are needed, but a single compound containing the shapes to intersect will do as well. (as of FreeCAD v0.17.8053, this property is not displayed in property editor, and can only be accessed via Python).
* {{PropertyData|Mode}}: "Standard", "Split", or "CompSolid". "Standard" is default. Standard and Split differ by the action of the tool on aggregation type shapes: if Split, those are separated; otherwise they are kept together (get extra segments).
* {{PropertyData|Mode}}: «Standard», «Split» или «CompSolid». «Standard» - по умолчанию. «Standard» и «Split» отличаются действием инструмента на фигуры типа агрегирования: если «Split», они разделяются; в противном случае они хранятся вместе (получаются дополнительные сегменты).
* {{PropertyData|Tolerance}}: значение "нечеткости". Это дополнительный допуск, который следует применять при поиске пересечений в дополнение к допускам, сохраненным во входных формах.
* {{PropertyData|Tolerance}}: "fuzziness" value. This is an extra tolerance to apply when searching for intersections, in addition to tolerances stored in the input shapes.


<span id="Implementation_details"></span>
==Implementation details==
==Детали реализации==
Boolean Fragments tool in "Standard mode" is OpenCascade's General Fuse Operator (GFA). It accepts a combination of probably all shape types, and the logic of output is quite convoluted. See [https://www.opencascade.com/doc/occt-7.0.0/overview/html/occt_user_guides__boolean_operations.html OpenCascade user guide: Boolean operations].


<div class="mw-translate-fuzzy">
For "Split" and "CompSolid" modes, extra post-processing is done by FreeCAD.
Инструмент «Boolean Fragments» в «Стандартном режиме» - это общий оператор Fuse (GFA) из OpenCascade. Он принимает комбинацию, вероятно, всех типов фигур, а логика вывода довольно запутанная. Смотрите [https://www.opencascade.com/doc/occt-7.0.0/overview/html/occt_user_guides__boolean_operations.html Руководство пользователя OpenCascade: логические операции].
</div>


Для режимов «Split» и «CompSolid» FreeCAD выполняет дополнительную постобработку.
==Scripting==


<span id="Scripting"></span>
The tool can by used in [[macros]] and from the python console by using the following function:
==Программирование==

Инструмент можно использовать в [[macros/ru|макросах]] и из консоли Python, используя следующую функцию:
'''BOPTools.SplitFeatures.makeBooleanFragments(name)'''
'''BOPTools.SplitFeatures.makeBooleanFragments(name)'''


* Создает пустую функцию BooleanFragments. Свойство «Объекты» должно быть назначено впоследствии явно.
* Creates an empty BooleanFragments feature. The 'Objects' property must be assigned explicitly, afterwards.
* Возвращает вновь созданный объект.
* Returns the newly created object.

BooleanFragments также может применяться к простым формам, без необходимости наличия объекта документа, с помощью:


BooleanFragments can also be applied to plain shapes, without the need to have a document object, via:
{{code|code=
{{code|code=
import BOPTools.SplitAPI
import BOPTools.SplitAPI
Line 75: Line 97:
# pieces receives a compound of shapes; map receives a list of lists of shapes, defining list_of_shapes <--> pieces correspondence
# pieces receives a compound of shapes; map receives a list of lists of shapes, defining list_of_shapes <--> pieces correspondence
}}
}}
Это может быть полезно для создания пользовательских сценариев Python.
This can be useful for making custom Python scripted features.


Пример:

Example:
{{code|code=
{{code|code=
import BOPTools.SplitFeatures
import BOPTools.SplitFeatures
Line 85: Line 106:
}}
}}


The tool itself is implemented in Python, see /Mod/Part/BOPTools/SplitFeatures.py under where FreeCAD is installed.
Инструмент сам реализован на Python, см. /Mod/Part/BOPTools/SplitFeatures.py там, где установлен FreeCAD.


==Notes==
<span id="Notes"></span>
==Примечания==


The tool was introduced in FreeCAD v0.17.8053. FreeCAD needs to be compiled with OCC 6.9.0 or later; otherwise, the tool is unavailable.
Инструмент появился в FreeCAD v0.17.8053. FreeCAD необходимо скомпилировать с OCC 6.9.0 или новее, иначе инструмент будет недоступен.



{{Docnav
<div class="mw-translate-fuzzy">
|[[Part_CompSplittingTools|CompSplittingTools]]
{{Docnav/ru
|[[Part_SliceApart|Slice a part]]
|[[Part_CompSplittingTools/ru|CompSplittingTools]]
|[[Part_Module|Part]]
|[[Part_SliceApart/ru|SliceApart]]
|[[Part_Workbench/ru|Part]]
|IconL=Part_CompSplittingTools.png
|IconL=Part_CompSplittingTools.png
|IconC=Workbench_Part.svg
|IconR=Part_SliceApart.svg
|IconR=Part_SliceApart.svg
|IconC=Workbench_Part.svg
}}
}}
</div>


{{Part Tools navi{{#translation:}}}}
{{Part Tools navi{{#translation:}}}}

Latest revision as of 15:48, 26 January 2023

Part BooleanFragments

Системное название
Part BooleanFragments
Расположение в меню
Деталь → Разделить → Boolean Fragments
Верстаки
Part
Быстрые клавиши
Нет
Представлено в версии
0.17.8053
См. также
Part Slice, Part XOR, Join features, Part Boolean

Описание

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

(на картинке выше части были впоследствии раздвинуты вручную, чтобы показать разрез)

Итоговая форма всегда является компаундом. Состав компаунда зависит от типов входных фигур и режима работы. Это означает, что вы не сразу получаете доступ к отдельным частям результата - части остаются сгруппированными вместе. Отдельные части могут быть извлечены путем применения разбивки соединения (Draft Downgrade).

У инструмента три режима: "Standard", "Split", and "CompSolid".

«Standard» и «Split» различаются действием инструмента на рёбра, оболочки и составные тела: если «Split», они разделяются; если «Standard», они остаются вместе (получают дополнительные сегменты).

Компаундная структура в режимах «Standard» и «Split» следует компаундной структуре на входе. То есть, если вы обработаете два компаунда, каждый из которых содержит сферу, как в примере выше, результат также будет содержать два компаунда, каждый из которых содержит куски изначально входившей в них сферы. Это значит, что общий кусок будет повторен в результате дважды. Только если обе входные сферы не входят в компаунды, результат будет содержать общий кусок единожды.

В режиме «CompSolid» твердые тела объединяются в compsolid (compsolid - это набор твердых тел, соединенных гранями; они связаны с твердыми телами, как полилинии связаны с ребрами, а оболочки связаны с гранями; название, вероятно, является сокращенной фразой «композитное твердое тело»). На выходе получается невложенное соединение compsolids.

Применение

  1. Выбрать объекты для пересечения.
    Порядок выделения не важен, поскольку действие инструмента симметрично. Достаточно выделить по одной подфигуре каждого объекта (например, лица). Вы также можете выбрать соединение, содержащее все соединяемые фигуры, например Массив.
  2. Вызвать команду Part BooleanFragments несколькими способами:
    • Нажатие кнопки на панели инструментов
    • Использование пункта Деталь → Разделить → Boolean Fragments в меню Деталь

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

Свойства

Boolean Fragments

  • ДанныеObjects: список объектов для пересечения. Обычно требуется как минимум два объекта, но подойдет и одно соединение, содержащее пересекаемые формы. (начиная с FreeCAD v0.17.8053, это свойство не отображается в редакторе свойств и доступно только через Python).
  • ДанныеMode: «Standard», «Split» или «CompSolid». «Standard» - по умолчанию. «Standard» и «Split» отличаются действием инструмента на фигуры типа агрегирования: если «Split», они разделяются; в противном случае они хранятся вместе (получаются дополнительные сегменты).
  • ДанныеTolerance: значение "нечеткости". Это дополнительный допуск, который следует применять при поиске пересечений в дополнение к допускам, сохраненным во входных формах.

Детали реализации

Инструмент «Boolean Fragments» в «Стандартном режиме» - это общий оператор Fuse (GFA) из OpenCascade. Он принимает комбинацию, вероятно, всех типов фигур, а логика вывода довольно запутанная. Смотрите Руководство пользователя OpenCascade: логические операции.

Для режимов «Split» и «CompSolid» 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 или новее, иначе инструмент будет недоступен.