Part BooleanFragments/pl: Difference between revisions

From FreeCAD Documentation
(Created page with "Funkcja Fragmentacja funkcją logiczną może być również stosowana do zwykłych kształtów, bez konieczności posiadania obiektu dokumentu:")
(Created page with "Przykład:")
Line 84: Line 84:
# 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
}}
}}
Może to być przydatne do tworzenia niestandardowych funkcji skryptowych Python.
This can be useful for making custom Python scripted features.


Przykład:
Example:
{{code|code=
{{code|code=
import BOPTools.SplitFeatures
import BOPTools.SplitFeatures

Revision as of 04:25, 4 July 2023

Część: Fragmentacja funkcją logiczną

Lokalizacja w menu
Część → Rozdziel → Fragmentacja funkcją logiczną
Środowisko pracy
Część
Domyślny skrót
brak
Wprowadzono w wersji
0.17
Zobacz także
Krojenie, Logiczny XOR, Połącz obiekty, Operacje logiczne na bryłach

Opis

Narzędzie do obliczania wszystkich fragmentów, które mogą wynikać z zastosowania operacji logicznych między kształtami wejściowymi. Na przykład dla dwóch przenikających się kul generowane są trzy nienakładające się, ale stykające się bryły.

Na powyższym obrazku poszczególne elementy zostały ręcznie rozsunięte, aby uwidocznić cięcie.

Kształt wyjściowy jest zawsze złożony. Zawartość złożenia zależy od typu kształtu wejściowego i trybu działania. Oznacza to, że nie masz natychmiastowego dostępu do poszczególnych elementów wyniku - elementy pozostają zgrupowane. Poszczególne elementy można wyodrębnić poprzez rozbicie złożenia funkcją (Rozbij kształt).

Narzędzie ma trzy tryby pracy: "Standartowy", "Podziel" i "BryłaZłożona".

Standard i Podziel różnią się działaniem narzędzia na linach, powłokach i bryłach. W przypadku opcji "Podziel " są one rozdzielane. W przypadku opcji "Standard" są one utrzymywane razem (otrzymują dodatkowe segmenty).

Struktura mieszania w trybach "Standard" i "Podziel" jest zgodna ze strukturą mieszania danych wejściowych. Oznacza to, że jeśli wprowadzisz dwa złożenia, każde zawierające kulę, jak w powyższym przykładzie, wynik będzie również zawierał dwa złożenia, każde zawierające kawałki pierwotnie zawartej kuli. Oznacza to, że wspólny element zostanie powtórzony dwukrotnie w wyniku. Tylko jeśli kule wejściowe nie są częścią złożenia, wynik będzie zawierał wspólny element tylko raz.

W trybie "BryłaZłożona" bryły są łączone w bryłę złożoną (bryła złożona to zestaw brył połączonych ścianami. Są one powiązane z bryłami tak, jak linie są powiązane z krawędziami, a powłoki są powiązane ze ścianami. Nazwa pochodzi więc od wyrażenia "bryła złożona"). Wynikiem jest nie zagnieżdżony zbiór brył złożonych

Użycie

  1. Wybierz obiekty do przecięcia.


Kolejność wyboru nie ma znaczenia, ponieważ działanie narzędzia jest symetryczne. Wystarczy wybrać jeden kształt podrzędny każdego obiektu (np. ściany). Możesz także wybrać złożenie zawierające wszystkie kształty do połączenia, np. w Szyku ortogonalnym.

  1. Polecenie Fragmentacja funkcją logiczną można wywołać na kilka sposobów:
    • Naciskając przycisk na pasku narzędzi.
    • Używając pozycji Część → Podziel → Fragmentacja funkcją logiczną w menu głównym.

Tworzony jest obiekt parametryczny ```FragmentyLogiczne```. Oryginalne obiekty są ukrywane, a wynik połączenia jest wyświetlany w oknie widoku 3D.

Właściwości

Boolean Fragments

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

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

For "Split" and "CompSolid" modes, extra post-processing is done by FreeCAD.

Tworzenie skryptów

Narzędzie Fragmentacja funkcją logiczną może być używane w makrodefinicjach i z konsoli Python za pomocą następującej funkcji:

BOPTools.SplitFeatures.makeBooleanFragments(name)
  • Tworzy pustą cechę Fragmentacja funkcją logiczną. Właściwość "Obiekty" musi zostać przypisana jawnie, a następnie.
  • Zwraca nowo utworzony obiekt.

Funkcja Fragmentacja funkcją logiczną może być również stosowana do zwykłych kształtów, bez konieczności posiadania obiektu dokumentu:

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

Może to być przydatne do tworzenia niestandardowych funkcji skryptowych Python.

Przykład:

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

The tool itself is implemented in Python, see /Mod/Part/BOPTools/SplitFeatures.py under where FreeCAD is installed.

Notes

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.