Part scripting/pl: Difference between revisions
(Updating to match new version of source page) |
(Created page with "{{Docnav/pl |Podstawy tworzenia skryptów FreeCAD |Skrypty danych topologicznych }}") |
||
(27 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
<languages/> |
<languages/> |
||
{{Docnav |
{{Docnav/pl |
||
|[[FreeCAD_Scripting_Basics| |
|[[FreeCAD_Scripting_Basics/pl|Podstawy tworzenia skryptów FreeCAD]] |
||
|[[Topological_data_scripting| |
|[[Topological_data_scripting/pl|Skrypty danych topologicznych]] |
||
}} |
}} |
||
{{TOCright}} |
{{TOCright}} |
||
<span id="Introduction"></span> |
|||
==Wprowadzenie== |
==Wprowadzenie== |
||
Główną strukturą danych używaną w środowisku Część jest typ danych [http://en.wikipedia.org/wiki/Boundary_representation BRep] z [[OpenCASCADE/pl|OpenCASCADE]]. Prawie cała zawartość i typy obiektów środowiska Część są dostępne w skryptach [[Python|Python]]. Obejmuje to geometryczne elementy pierwotne, takie jak Linie, Okręgi i Łuki, a także całą gamę Kształtów Topologicznych, takich jak Wierzchołki, Krawędzie, Polilinie, Ściany, Bryły i Złożenia. Dla każdego z tych obiektów istnieje kilka metod tworzenia, a dla niektórych z nich, zwłaszcza Kształtów Topologicznych, dostępne są również zaawansowane operacje, takie jak operacje logiczne połączenie / różnica / przecięcie. Zapoznaj się z zawartością środowiska Część, jak opisano na stronie [[FreeCAD_Scripting_Basics/pl|Podstawy tworzenia skryptów FreeCAD]], aby dowiedzieć się więcej. |
|||
Najbardziej podstawowym obiektem, który można utworzyć jest [[Part_Feature/pl|cecha]], który posiada prostą właściwość {{PropertyData|Umiejscowienie}}, oraz podstawowe cechy określające jego kolor i wygląd. |
|||
Innym prostym obiektem używanym w obiektach geometrycznych 2D jest obiekt [[Part_Part2DObject/pl|Część na obiekt 2D]], który jest podstawą [[Sketcher_Workbench/pl|szkicu]], oraz większości [[Draft_Workbench/pl|rysunków roboczych]]. |
|||
<span id="See_also"></span> |
|||
⚫ | |||
==Zobacz również== |
|||
* [[Topological_data_scripting| |
* [[Topological_data_scripting/pl|Skrypty danych topologicznych]] |
||
* [[OpenCASCADE|OpenCASCADE]] |
* [[OpenCASCADE/pl|OpenCASCADE]] |
||
<span id="Test_script"></span> |
|||
==Test script== |
|||
===Skrypt testowy=== |
|||
Przetestuj tworzenie [[Part_Primitives/pl|elementów pierwotnych]] za pomocą skryptu. |
|||
{{Code|code= |
{{Code|code= |
||
Line 30: | Line 33: | ||
}} |
}} |
||
Skrypt ten znajduje się w katalogu instalacyjnym programu i może być badany w celu sprawdzenia, jak budowane są podstawowe elementy pierwotne. |
|||
This script is located in the installation directory of the program, and can be examined to see how the basic primitives are built. |
|||
{{Code|code= |
{{Code|code= |
||
Line 36: | Line 39: | ||
}} |
}} |
||
= |
<span id="Examples"></span> |
||
==Przykłady== |
|||
= |
<span id="Line"></span> |
||
⚫ | |||
Aby utworzyć element linii, przełącz się na [[Python_console/pl|konsolę Python]] i wpisz: |
|||
{{Code|code= |
{{Code|code= |
||
Line 57: | Line 62: | ||
}} |
}} |
||
Prześledźmy powyższy przykład Pyton krok po kroku: |
|||
Let's go through the above Python example step by step: |
|||
{{Code|code= |
{{Code|code= |
||
Line 65: | Line 70: | ||
}} |
}} |
||
Spowoduje to załadowanie modułów FreeCAD i Część oraz utworzenie nowego dokumentu. |
|||
This loads the FreeCAD and Part modules and creates a new document. |
|||
{{Code|code= |
{{Code|code= |
||
Line 73: | Line 78: | ||
}} |
}} |
||
Linia to w rzeczywistości odcinek, stąd punkt początkowy i końcowy. |
|||
Line is actually a line segment, hence the start and endpoint. |
|||
{{Code|code= |
{{Code|code= |
||
Line 80: | Line 85: | ||
}} |
}} |
||
Dodaje to typ obiektu Część do dokumentu i przypisuje reprezentację kształtu segmentu linii do właściwości {{Incode|Kształt}} dodanego obiektu. Ważne jest, aby zrozumieć tutaj, że użyliśmy geometrycznego elementu pierwotnego ''(Part.LineSegment)'', aby utworzyć z niego '''TopoShape''' ''(metoda toShape ())''. Do dokumentu można dodawać tylko kształty. W programie FreeCAD prymitywy geometrii są używane jako '''„budowle konstrukcyjne”''' dla kształtów. |
|||
This adds a Part object type to the document and assigns the shape representation of the line segment to the {{Incode|Shape}} property of the added object. It is important to understand here that we use a geometric primitive (the {{Incode|Part.LineSegment}}) to create a TopoShape out of it (with the {{Incode|toShape()}} method). Only shapes can be added to the document. In FreeCAD geometric primitives are used as "building structures" for shapes. |
|||
{{Code|code= |
{{Code|code= |
||
Line 86: | Line 91: | ||
}} |
}} |
||
Aktualizuje dokument. Także przygotowuje wizualizację nowego obiektu środowiska Część. |
|||
Updates the document. This also prepares the visual representation of the new Part object. |
|||
Zauważ, że segment linii może być utworzony poprzez określenie jego punktu początkowego i końcowego bezpośrednio w konstruktorze, na przykład {{Incode|Part.LineSegment(point1,point2)}}. Możemy też utworzyć linię domyślną i ustawić jej właściwości później, tak jak zrobiliśmy to tutaj. |
|||
Linię można również utworzyć za pomocą: |
|||
A Line can also be created using: |
|||
{{Code|code= |
{{Code|code= |
||
Line 112: | Line 117: | ||
}} |
}} |
||
= |
<span id="Circle"></span> |
||
⚫ | |||
Okrąg może być stworzony w podobny sposób: |
|||
A circle can be created in a similar way: |
|||
{{Code|code= |
{{Code|code= |
||
Line 130: | Line 136: | ||
}} |
}} |
||
lub z użyciem: |
|||
Or using: |
|||
{{Code|code= |
{{Code|code= |
||
Line 146: | Line 152: | ||
}} |
}} |
||
Alternatywnie możemy utworzyć okrąg, definiując jego środek, oś i promień: |
|||
Alternatively we can create a circle by defining its center, axis and radius: |
|||
{{Code|code= |
{{Code|code= |
||
Line 164: | Line 170: | ||
}} |
}} |
||
Lub definiując trzy punkty na jego obwodzie: |
|||
Or by defining three points on its circumference: |
|||
{{Code|code= |
{{Code|code= |
||
Line 182: | Line 188: | ||
}} |
}} |
||
Zauważ ponownie, użyliśmy okręgu ''(geometria pierwotna)'' do skonstruowania z niego kształtu. Oczywiście nadal możemy uzyskać dostęp do naszej geometrii konstrukcyjnej później, wykonując to zadanie: |
|||
Note again, we used the circle (geometric primitive) to construct a shape. We can of course still access our construction geometry afterwards, by doing: |
|||
{{Code|code= |
{{Code|code= |
||
Line 190: | Line 196: | ||
}} |
}} |
||
Tutaj bierzemy {{Incode|Kształt}} naszego obiektu {{Incode|obj}}, a następnie jego listę {{Incode|Krawędzi}}. W tym przypadku będzie tylko jedna krawędź, ponieważ utworzyliśmy kształt z pojedynczego okręgu. Bierzemy więc tylko pierwszy element z listy {{Incode|Edges}}, a następnie jego krzywą. Każda krawędź ma {{Incode|Curve}}, który jest geometrycznym prymitywem, na którym jest oparta. |
|||
<span id="Arc"></span> |
|||
⚫ | |||
===Łuk=== |
|||
Łuk może być utworzony w ten sposób: |
|||
An arc can be created like this: |
|||
{{Code|code= |
{{Code|code= |
||
Line 212: | Line 219: | ||
}} |
}} |
||
Spowoduje to narysowanie półkola. Środek znajduje się w punkcie (0, 0, 0). Promień wynosi 10. P1 jest punktem początkowym na osi +X. P2 to punkt środkowy na osi +Y, a P3 to punkt końcowy na osi -X. |
|||
Możesz również utworzyć łuk na podstawie okręgu: |
|||
You can also create an arc from a circle: |
|||
{{Code|code= |
{{Code|code= |
||
Line 233: | Line 240: | ||
}} |
}} |
||
Wymaga on okręgu oraz kąta początkowego i końcowego w radianach. |
|||
It needs a circle, and a start angle and end angle in radians. |
|||
{{Docnav |
{{Docnav/pl |
||
|[[FreeCAD_Scripting_Basics| |
|[[FreeCAD_Scripting_Basics/pl|Podstawy tworzenia skryptów FreeCAD]] |
||
|[[Topological_data_scripting| |
|[[Topological_data_scripting/pl|Skrypty danych topologicznych]] |
||
}} |
}} |
||
Latest revision as of 18:57, 6 July 2023
Wprowadzenie
Główną strukturą danych używaną w środowisku Część jest typ danych BRep z OpenCASCADE. Prawie cała zawartość i typy obiektów środowiska Część są dostępne w skryptach Python. Obejmuje to geometryczne elementy pierwotne, takie jak Linie, Okręgi i Łuki, a także całą gamę Kształtów Topologicznych, takich jak Wierzchołki, Krawędzie, Polilinie, Ściany, Bryły i Złożenia. Dla każdego z tych obiektów istnieje kilka metod tworzenia, a dla niektórych z nich, zwłaszcza Kształtów Topologicznych, dostępne są również zaawansowane operacje, takie jak operacje logiczne połączenie / różnica / przecięcie. Zapoznaj się z zawartością środowiska Część, jak opisano na stronie Podstawy tworzenia skryptów FreeCAD, aby dowiedzieć się więcej.
Najbardziej podstawowym obiektem, który można utworzyć jest cecha, który posiada prostą właściwość DANEUmiejscowienie, oraz podstawowe cechy określające jego kolor i wygląd.
Innym prostym obiektem używanym w obiektach geometrycznych 2D jest obiekt Część na obiekt 2D, który jest podstawą szkicu, oraz większości rysunków roboczych.
Zobacz również
Skrypt testowy
Przetestuj tworzenie elementów pierwotnych za pomocą skryptu.
import parttests.part_test_objects as pto
pto.create_test_file("example_file")
Skrypt ten znajduje się w katalogu instalacyjnym programu i może być badany w celu sprawdzenia, jak budowane są podstawowe elementy pierwotne.
$INSTALL_DIR/Mod/Part/parttests/part_test_objects.py
Przykłady
Linia
Aby utworzyć element linii, przełącz się na konsolę Python i wpisz:
import FreeCAD as App
import Part
doc = App.newDocument()
line = Part.LineSegment()
line.StartPoint = (0.0, 0.0, 0.0)
line.EndPoint = (1.0, 1.0, 1.0)
obj = doc.addObject("Part::Feature", "Line")
obj.Shape= line.toShape()
doc.recompute()
Prześledźmy powyższy przykład Pyton krok po kroku:
import FreeCAD as App
import Part
doc = App.newDocument()
Spowoduje to załadowanie modułów FreeCAD i Część oraz utworzenie nowego dokumentu.
line = Part.LineSegment()
line.StartPoint = (0.0, 0.0, 0.0)
line.EndPoint = (1.0, 1.0, 1.0)
Linia to w rzeczywistości odcinek, stąd punkt początkowy i końcowy.
obj = doc.addObject("Part::Feature", "Line")
obj.Shape= line.toShape()
Dodaje to typ obiektu Część do dokumentu i przypisuje reprezentację kształtu segmentu linii do właściwości Kształt
dodanego obiektu. Ważne jest, aby zrozumieć tutaj, że użyliśmy geometrycznego elementu pierwotnego (Part.LineSegment), aby utworzyć z niego TopoShape (metoda toShape ()). Do dokumentu można dodawać tylko kształty. W programie FreeCAD prymitywy geometrii są używane jako „budowle konstrukcyjne” dla kształtów.
doc.recompute()
Aktualizuje dokument. Także przygotowuje wizualizację nowego obiektu środowiska Część.
Zauważ, że segment linii może być utworzony poprzez określenie jego punktu początkowego i końcowego bezpośrednio w konstruktorze, na przykład Part.LineSegment(point1,point2)
. Możemy też utworzyć linię domyślną i ustawić jej właściwości później, tak jak zrobiliśmy to tutaj.
Linię można również utworzyć za pomocą:
import FreeCAD as App
import Part
def my_create_line(pt1, pt2, obj_name):
obj = App.ActiveDocument.addObject("Part::Line", obj_name)
obj.X1 = pt1[0]
obj.Y1 = pt1[1]
obj.Z1 = pt1[2]
obj.X2 = pt2[0]
obj.Y2 = pt2[1]
obj.Z2 = pt2[2]
App.ActiveDocument.recompute()
return obj
line = my_create_line((0, 0, 0), (0, 10, 0), "LineName")
Okrąg
Okrąg może być stworzony w podobny sposób:
import FreeCAD as App
import Part
doc = App.activeDocument()
circle = Part.Circle()
circle.Radius = 10.0
obj = doc.addObject("Part::Feature", "Circle")
obj.Shape = circle.toShape()
doc.recompute()
lub z użyciem:
import FreeCAD as App
import Part
def my_create_circle(rad, obj_name):
obj = App.ActiveDocument.addObject("Part::Circle", obj_name)
obj.Radius = rad
App.ActiveDocument.recompute()
return obj
circle = my_create_circle(5.0, "CircleName")
Alternatywnie możemy utworzyć okrąg, definiując jego środek, oś i promień:
import FreeCAD as App
import Part
doc = App.activeDocument()
center = App.Vector(1, 2, 3)
axis = App.Vector(1, 1, 1)
radius = 10
circle = Part.Circle(center, axis, radius)
obj = doc.addObject("Part::Feature", "Circle")
obj.Shape = circle.toShape()
doc.recompute()
Lub definiując trzy punkty na jego obwodzie:
import FreeCAD as App
import Part
doc = App.activeDocument()
p1 = App.Vector(10, 0, 0)
p2 = App.Vector(0, 10, 0)
p3 = App.Vector(0, 0, 10)
circle = Part.Circle(p1, p2, p3)
obj = doc.addObject("Part::Feature", "Circle")
obj.Shape = circle.toShape()
doc.recompute()
Zauważ ponownie, użyliśmy okręgu (geometria pierwotna) do skonstruowania z niego kształtu. Oczywiście nadal możemy uzyskać dostęp do naszej geometrii konstrukcyjnej później, wykonując to zadanie:
shape = obj.Shape
edge = shape.Edges[0]
curve = edge.Curve
Tutaj bierzemy Kształt
naszego obiektu obj
, a następnie jego listę Krawędzi
. W tym przypadku będzie tylko jedna krawędź, ponieważ utworzyliśmy kształt z pojedynczego okręgu. Bierzemy więc tylko pierwszy element z listy Edges
, a następnie jego krzywą. Każda krawędź ma Curve
, który jest geometrycznym prymitywem, na którym jest oparta.
Łuk
Łuk może być utworzony w ten sposób:
import FreeCAD as App
import Part
doc = App.activeDocument()
p1 = App.Vector(10, 0, 0)
p2 = App.Vector(0, 10, 0)
p3 = App.Vector(-10, 0, 0)
arc = Part.Arc(p1, p2, p3)
obj = doc.addObject("Part::Feature", "Arc")
obj.Shape = arc.toShape()
doc.recompute()
Spowoduje to narysowanie półkola. Środek znajduje się w punkcie (0, 0, 0). Promień wynosi 10. P1 jest punktem początkowym na osi +X. P2 to punkt środkowy na osi +Y, a P3 to punkt końcowy na osi -X.
Możesz również utworzyć łuk na podstawie okręgu:
import FreeCAD as App
import Part
doc = App.activeDocument()
p1 = App.Vector(10, 0, 0)
p2 = App.Vector(0, 10, 0)
p3 = App.Vector(-10, 0, 0)
circle = Part.Circle(p1, p2, p3)
arc = Part.ArcOfCircle(circle, 0.0, 0.7854)
obj = doc.addObject("Part::Feature", "Arc")
obj.Shape = arc.toShape()
doc.recompute()
Wymaga on okręgu oraz kąta początkowego i końcowego w radianach.
- Tworzenie skryptów FreeCAD: Python, Wprowadzenie do środowiska Python, Poradnik: Tworzenie skryptów Python, Podstawy tworzenia skryptów FreeCAD
- Moduły: Moduły wbudowane, Jednostki miar, Ilość
- Środowiska pracy: Tworzenie Środowiska pracy, Polecenia Gui, Polecenia, Instalacja większej liczby Środowisk pracy
- Siatki i elementy: Skrytpy w Środowisku Siatek, v, Konwerska Mesh na Part, PythonOCC
- Obiekty parametryczne: Obiekty tworzone skryptami, Obsługa obrazu (Ikonka niestandardowa w widoku drzewa)
- Scenegraph: Coin (Inventor) scenegraph, Pivy
- Interfejs graficzny: Stworzenie interfejsu, Kompletne stworzenie interfejsu w środowisku Python (1, 2, 3, 4, 5), PySide, PySide examples początkujący, średniozaawansowany, zaawansowany
- Makrodefinicje: Makrodefinicje, Instalacja makrodefinicji
- Osadzanie programu: Osadzanie programu FreeCAD, Osadzanie GUI FreeCAD
- Pozostałe: Wyrażenia, Wycinki kodu, Funkcja kreślenia linii, Biblioteka matematyczna FreeCAD dla wektorów (deprecated)
- Węzły użytkowników: Centrum użytkownika, Centrum Power użytkowników, Centrum programisty
- Bryły pierwotne: Prostopadłościan, Walec, Sfera, Stożek, Torus, Rura, Bryły pierwotne, Konstruktor kształtu
- Tworzenie i modyfikacja: Wyciągnij, Wyciągnij przez obrót, Odbicie lustrzane, Zaokrąglenie, Fazka, Utwórz ścianę z linii łamanych, Powierzchnia prostokreślna, Wyciągnięcie przez profile, Wyciągnięcie po ścieżce, Przecięcie, Przekrój poprzeczny, Odsunięcie 3D, Odsunięcie 2D, Grubość, Rzutowanie na powierzchnię, Mocowanie
- Funkcje logiczne: Utwórz złożenie, Rozbij złożenie, Filtr złożeń, Funkcje logiczne, Wytnij, Połączenie, Część wspólna, Przyłącz, Dołącz do osadzenia, Wycięcie połączenia, Funkcja logiczna rozdzielająca, Pokrój część, Krojenie, XOR
- Wymiarowanie: Wymiarowanie liniowe, Wymiarowanie kątowe, Odśwież wymiary, Usuń wymiary, Przełącz widoczność wymiaru, Przełącz widoczność wymiarów przestrzennych, Przełącz widoczność wymiarów przyrostowych