Part BooleanFragments/fr: Difference between revisions

From FreeCAD Documentation
(Created page with "==== Détails d'implémentation ==== Boolean Fragments tool in "Standard mode" is OpenCascade's General Fuse Operator (GFA). It accepts a combination of probably all shape typ...")
No edit summary
Line 31: Line 31:
* {{PropertyData|Tolerance}}: "fuzziness" value. This is an extra tolerance to apply when searching for intersections, in addition to tolerances stored in the input shapes.
* {{PropertyData|Tolerance}}: "fuzziness" value. This is an extra tolerance to apply when searching for intersections, in addition to tolerances stored in the input shapes.


==== Détails d'implémentation ====
== Détails d'implémentation==
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].
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].



Revision as of 18:41, 25 October 2018

Fragments Booléens Part

Emplacement du menu
Part → Découper → Fragments Booléens
Ateliers
Part
Raccourci par défaut
Aucun
Introduit dans la version
-
Voir aussi
TranchagePart, Part XOR, Join features, Part Booleans

Description

Outil permettant de calculer tous les fragments pouvant résulter de l'application d'opérations booléennes entre des formes d'entrée. Par exemple, pour deux sphères entrecroisées, trois solides non chevauchants mais touchants sont générés.

(sur l'image ci-dessus, les pièces ont été déplacées manuellement après, pour révéler le tranchage)

La forme de sortie est toujours un composé. Le contenu du composé dépend des types de forme et du mode de fonctionnement. Cela signifie que vous n'avez pas immédiatement accès aux éléments individuels du résultat - ceux-ci restent regroupés. Les pieces individuels peuvent être extraits en faisant exploser le composé (Draft Downgrade).

L'outil comporte trois modes: "Standard", "Split" et "CompSolid".

"Standard" et "Split" diffèrent par l'action de l'outil sur les fils, les shells et les compsolids: Pour "Split", ceux-ci sont séparés; Pour «Standard», ils sont conservés ensemble (on obtient des segments supplémentaires).

La structure de composition en modes "Standard" et "Fractionné" suit la structure de composition des entrées. Autrement dit, si vous introduisez deux composés, chacun contenant une sphère comme dans l'exemple ci-dessus, le résultat contiendra également deux composés, chacun contenant les pieces de la sphère contenue à l'origine. Cela signifie que la pièce commune sera répétée deux fois dans le résultat. Ce n’est que si les sphère d’entrée ne sont pas dans des composés que le résultat contient la pièce commune une fois.

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

Comment l'utiliser

  1. Sélectionner les objets à connecter.
    L'ordre de sélection n'a pas d'importance, l'action est symétrique. Il suffit de sélectionner un élément de chaque objet (par ex. leurs faces). Il est aussi possible de sélectionner un composé contenant toutes les formes à connecter, par ex. un Réseau Draft.
  2. Lancer la commande Part BooleanFragments.

Un objet paramétrique Boolean Fragments est créé. Les objets d'origine sont cachés et le résultat de l'intersection est affiché en 3D.

Properties

Boolean Fragments

  • DonnéesObjects: 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).
  • DonnéesMode: "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).
  • DonnéesTolerance: "fuzziness" value. This is an extra tolerance to apply when searching for intersections, in addition to tolerances stored in the input shapes.

Détails d'implémentation

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 OpenCascade user guide: Boolean operations.

Pour les modes "Split" et "CompSolid", FreeCAD effectue un post-traitement supplémentaire.

Programmation

L'outil peut être utilisé dans une macros et à partir de la console python en utilisant la fonction suivante:

BOPTools.SplitFeatures.makeBooleanFragments(name)
  • Crée une fonction BooleanFragments vide. Les propriétés 'Objects' doit être attribuées explicitement, par la suite.
  • Renvoi l'objet nouvellement créé.

BooleanFragments peut également être appliqué à des formes simples, sans avoir besoin d'un objet de document via :

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

Cela peut être utile pour créer des fonctionnalités de script personnalisées Python.


Exemple :

import BOPTools.SplitFeatures
j = BOPTools.SplitFeatures.makeBooleanFragments(name= 'BooleanFragments')
j.Objects = FreeCADGui.Selection.getSelection()

L'outil lui-même est implémenté en Python, voir /Mod/Part/BOPTools/SplitFeatures.py la où FreeCAD est installé.

Version

L'outil a été introduit dans FreeCAD v0.17.8053. FreeCAD doit être compilé avec OCC 6.9.0 ou version ultérieure; Sinon, l'outil n'est pas disponible.