Python scripting tutorial/pl: Difference between revisions

From FreeCAD Documentation
(Created page with "Możesz przejść do strony Podstawy tworzenia skryptów FreeCAD lub uzyskać dostęp do tej strony i innych odpowiednich stron na Centrum Power użytkowników.")
 
(80 intermediate revisions by 2 users not shown)
Line 2: Line 2:


{{Docnav/pl
{{Docnav/pl
|[[Introduction_to_Python/pl|prowadzenie do środowiska Python]]
|[[Introduction_to_Python/pl|Wprowadzenie do środowiska Python]]
|[[FreeCAD_Scripting_Basics/pl|Podstawy tworzenia skryptów FreeCAD]]
|[[FreeCAD_Scripting_Basics/pl|Podstawy tworzenia skryptów FreeCAD]]
}}
}}
Line 8: Line 8:
{{TOCright}}
{{TOCright}}


==Introduction==
<span id="Introduction"></span>
==Wprowadzenie==


[https://en.wikipedia.org/wiki/Python_%28programming_language%29 Python] is a programming language that it relatively easy to learn and understand. It is open-source and multi-platform, and can be used for many purposes: from simple shell scripts to very complex programs. But its most widespread use is as a scripting language embedded in other applications. That is how it is used inside FreeCAD. From the [[Python_console|Python console]], or from custom scripts, you can control FreeCAD and make it perform very complex operations.
[https://en.wikipedia.org/wiki/Python_%28programming_language%29 Python] to język programowania, który jest stosunkowo łatwy do nauczenia i zrozumienia. Jest open-source i wieloplatformowy i może być używany do wielu celów: od prostych skryptów powłoki do bardzo złożonych programów. Ale jego najbardziej rozpowszechnionym zastosowaniem jest język skryptowy osadzony w innych aplikacjach. W ten sposób jest on używany wewnątrz FreeCAD. Z poziomu [[Python_console/pl|konsoli Python]] lub niestandardowych skryptów można kontrolować FreeCAD i wykonywać bardzo złożone operacje.


For example, from a Python script, you can:
Na przykład, ze skryptu Python można:
* Create new objects.
* Tworzyć nowe obiekty.
* Modyfikować istniejące obiekty.
* Modify existing objects.
* Modyfikować reprezentację 3D tych obiektów.
* Modify the 3D representation of those objects.
* Modify the FreeCAD interface.
* Modyfikować interfejs FreeCAD.


There are several ways to use Python in FreeCAD:
Istnieje kilka sposobów korzystania ze środowiska Python w FreeCAD:
* Z [[FreeCAD_Scripting_Basics/pl|Podstawy tworzenia skryptów FreeCAD]], gdzie można wydawać polecenia w interfejsie w stylu "wiersza poleceń".
* From the [[FreeCAD Scripting Basics|FreeCAD Python interpreter]], where you can issue commands in a "command line"-style interface.
* Z [[Macros/pl|makrodefinicji]], które są wygodnym sposobem na szybkie dodanie brakującego narzędzia do interfejsu FreeCAD.
* From [[macros|macros]], which are a convenient way to quickly add a missing tool to the FreeCAD interface.
* From external scripts, which can used to create quite complex solutions, even entire [[Workbenches|Workbenches]].
* Z zewnętrznych skryptów, które mogą być używane do tworzenia dość złożonych rozwiązań, nawet całych [[Workbenches/pl|środowisk pracy]].


W tym samouczku będziemy pracować nad kilkoma podstawowymi przykładami, aby zacząć, ale jest o wiele więcej [[Power_users_hub/pl|dokumentacji na temat skryptów]] dostępnych na tej Wiki. Jeśli jesteś zupełnie nowy w środowisku Python i chcesz zrozumieć, jak ono działa, mamy również podstawowe [[Introduction_to_Python/pl|wprowadzenie do środowiska Python]].
In this tutorial, we'll work on a couple of basic examples to get you started, but there is much more [[Power users hub|documentation about Python scripting]] available on this wiki. If you are totally new to Python and want to understand how it works, we also have a basic [[introduction to Python|introduction to Python]].


Before proceeding with Python scripting, go to {{MenuCommand|EditPreferencesGeneralOutput window}} and check two boxes:
Przed przystąpieniem do tworzenia skryptów w Pythonie, przejdź do {{MenuCommand|EdycjaPreferencje ...OgólneWidok raportu}} i zaznacz dwa pola:
* {{MenuCommand|Redirect internal Python output to report view}}.
* {{MenuCommand|Przekieruj wiadomości wewnętrzne środowiska Python do Widoku raportu}}.
* {{MenuCommand|Redirect internal Python errors to report view}}.
* {{MenuCommand|Przekieruj błędy wewnętrzne środowiska Python do Widoku raportu}}.
Then go to {{MenuCommand|ViewPanels}} and check:
Następnie przejdź do {{MenuCommand|WidokPanele}} i zaznacz:
* {{MenuCommand|Report view}}.
* {{MenuCommand|Widoku raportu}}.


<span id="Writing_Python_code"></span>
==Writing Python code==
==Pisanie kodu Python==


There are two ways to write Python code in FreeCAD. In the [[Python console|Python console]] (select {{MenuCommand|ViewPanels → Python console}} from the menu) or in the [[Std_DlgMacroExecute|Macro editor]] (select {{MenuCommand|MacroMacros...}} from the menu). In the console you write Python commands one by one, executing them by pressing {{KEY|Enter}}, while macros can contain more complex code made up of several lines, executed only when the macro is executed.
Istnieją dwa sposoby pisania kodu Python w FreeCAD. W [[Python_console/pl|konsoli Python]] ''(wybierz z menu {{MenuCommand|WidokPanele Konsola Python}})'' lub w [[Std_DlgMacroExecute/pl|Edytorze makrodefinicji]] ''(wybierz z menu {{MenuCommand|MakrodefinicjeMakrodefinicje ...}})''. W konsoli piszesz komendy Python jedna po drugiej, wykonując je poprzez naciśnięcie {{KEY|Enter}}, podczas gdy makra mogą zawierać bardziej złożony kod składający się z kilku linii, wykonywany tylko wtedy, gdy makro jest wykonywane.


[[Image:Screenshot_pythoninterpreter.jpg]]
[[Image:Screenshot_pythoninterpreter.jpg]]
{{Caption|The FreeCAD Python console}}
{{Caption|Konsola Python programu FreeCAD}}


In this tutorial you can use both methods. You can copy-paste each line in the Python console and then press {{KEY|Enter}}, or copy-paste the entire code in a new Macro window.
W tym samouczku możesz użyć obu metod. Możesz skopiować i wkleić każdą linię w konsoli Python, a następnie nacisnąć {{KEY|Enter}}, lub skopiować i wkleić cały kod w nowym oknie Makrodefinicji.
{{Top}}
<span id="Exploring_FreeCAD"></span>
==Poznaj program FreeCAD od środka==


Zacznijmy od utworzenia nowego pustego dokumentu:
[[#top|top]]

==Exploring FreeCAD==

Let's start by creating a new empty document:


{{Code|code=
{{Code|code=
Line 50: Line 51:
}}
}}


If you type this in the FreeCAD Python console, you will notice that as soon as you type {{incode|FreeCAD.}} a windows pops up, allowing to quickly autocomplete the rest of your line. Even better, each entry in the autocomplete list has a tooltip explaining what it does. This makes it easier to explore the available functionality. Before choosing {{incode|newDocument}}, have a look at the other options.
Jeśli wpiszesz to w konsoli FreeCAD Python, zauważysz, że jak tylko wpiszesz {{incode|FreeCAD.}}, pojawi się okno, pozwalające na szybkie autouzupełnianie reszty linii. Co więcej, każdy wpis na liście autouzupełniania ma etykietkę wyjaśniającą, co robi. Ułatwia to zapoznanie się z dostępnymi funkcjami. Zanim wybierzesz {{incode|newDocument}}, zapoznaj się z innymi opcjami.


[[Image:Screenshot_classbrowser.jpg]]
[[Image:Screenshot_classbrowser.jpg]]
{{Caption|The autocomplete mechanism of the FreeCAD Python console}}
{{Caption|Mechanizm autouzupełniania dostępny w konsoli FreeCAD dla Python.}}


Now our new document will be created. This is similar to pressing the {{Button|[[Image:Std_New.svg|16px]] [[Std_New|Std New]]}} button on the toolbar. In fact most buttons in FreeCAD do nothing more than execute one or more lines of Python code. Even better, you can set an option in {{MenuCommand|EditPreferencesGeneralMacro}} to {{MenuCommand|Show script commands in python console}}. This will print in the console all Python code executed when you press buttons. Very useful for learning how to reproduce actions in Python.
Teraz nasz nowy dokument zostanie utworzony. Jest to podobne do naciśnięcia przycisku {{Button|[[Image:Std_New.svg|16px]] [[Std_New/pl|Nowy]]}} na pasku narzędzi. W rzeczywistości większość przycisków w FreeCAD nie robi nic więcej niż wykonanie jednej lub więcej linii kodu Pythona. Co więcej, można ustawić opcję w {{MenuCommand|EdycjaPreferencjePythonMakrodefinicje }} na {{MenuCommand|Pokaż polecenia skryptu w konsoli Python}}. Spowoduje to wypisanie w konsoli całego kodu Python wykonanego po naciśnięciu przycisków. Bardzo przydatne do nauki odtwarzania akcji w Pythonie.


Wróćmy teraz do naszego dokumentu i zobaczmy, co możemy z nim zrobić:
Now let's get back to our document and see what we can do with it:


{{Code|code=
{{Code|code=
Line 63: Line 64:
}}
}}


Zapoznaj się z dostępnymi opcjami. Zazwyczaj nazwy rozpoczynające się wielką literą są atrybutami, zawierają wartość, podczas gdy nazwy rozpoczynające się małą literą są funkcjami (zwanymi również metodami), "robią coś". Nazwy zaczynające się od podkreślenia są zwykle przeznaczone do wewnętrznego działania modułu i nie należy się nimi przejmować. Użyjmy jednej z metod, aby dodać nowy obiekt do naszego dokumentu:
Explore the available options. Usually names that begin with a capital letter are attributes, they contain a value, while names that begin with a lower case letter are functions (also called methods), they "do something". Names that begin with an underscore are usually there for the internal working of the module, and you shouldn't care about them. Let's use one of the methods to add a new object to our document:


{{Code|code=
{{Code|code=
Line 69: Line 70:
}}
}}


Nic się nie dzieje. Dlaczego? Ponieważ FreeCAD został stworzony z myślą o dużym obrazie. Pewnego dnia będzie pracował z setkami złożonych obiektów, z których wszystkie będą od siebie zależne. Dokonanie gdzieś małej zmiany może mieć duży wpływ. Może być konieczne ponowne obliczenie całego dokumentu, co może zająć dużo czasu. Z tego powodu prawie żadne polecenie nie aktualizuje sceny automatycznie. Trzeba to robić samodzielnie:
Nothing happens. Why? Because FreeCAD is made for the big picture. One day, it will work with hundreds of complex objects, all depending each other. Making a small change somewhere could have a big impact, you may need to recalculate the whole document which could take a long time. For that reason almost no command updates the scene automatically. You must do it manually:


{{Code|code=
{{Code|code=
Line 75: Line 76:
}}
}}


Teraz pojawił się nasz prostopadłościan. Wiele przycisków dodających obiekty w FreeCAD wykonuje w rzeczywistości dwie czynności: dodanie obiektu i ponowne obliczenie. Jeśli włączyłeś opcję {{MenuCommand|Pokaż polecenia skryptu w konsoli Python}} powyżej, spróbuj dodać kulę za pomocą przycisku GUI. Zobaczysz dwie linie kodu Python wykonywane jedna po drugiej.
Now our box appeared. Many of the buttons that add objects in FreeCAD actually do two things: add the object, and recompute. If you turned on the {{MenuCommand|Show script commands in python console}} option above, try adding a sphere with the GUI button, you'll see the two lines of Python code being executed one after the other.


Teraz przyjrzyjmy się zawartości naszego prostopadłościanu:
Now let's explore the contents of our box:


{{Code|code=
{{Code|code=
Line 83: Line 84:
}}
}}


Od razu zobaczysz kilka bardzo interesujących rzeczy, takich jak:
You'll immediately see a couple of very interesting things such as:


{{Code|code=
{{Code|code=
Line 89: Line 90:
}}
}}


Spowoduje to wyświetlenie bieżącej wysokości naszego prostopadłościanu. Teraz spróbujmy to zmienić:
This will print the current height of our box. Now let's try to change that:


{{Code|code=
{{Code|code=
Line 95: Line 96:
}}
}}


If you select your box with the mouse, you'll see that in the [[Property_editor|Property editor]], on the {{MenuCommand|Data}} tab, our {{PropertyData|Height}} property appears. All properties of a FreeCAD object that appear there (and also on the {{MenuCommand|View}} tab, more about that later), are directly accessible by Python too, by their names, like we did with the {{PropertyData|Height}} property. Try changing the other dimensions of the box.
Jeśli wybierzesz swój prostopadłościan za pomocą myszy, zobaczysz, że w [[Property_editor/pl|Edytorze właściwości]], na karcie {{MenuCommand|Dane}}, pojawi się nasza właściwość {{PropertyData|Wysokość}}. Wszystkie właściwości obiektu FreeCAD, które się tam pojawiają (a także w zakładce {{MenuCommand|Widok}}, więcej o tym później), również bezpośrednio dostępne w Python, poprzez ich nazwy, tak jak zrobiliśmy to z właściwością {{PropertyData|Wysokość}}. Spróbuj zmienić inne wymiary prostopadłościanu.
{{Top}}
<span id="Vectors_and_placements"></span>
==Wektory i umiejscowienia==


[https://en.wikipedia.org/wiki/Euclidean_vector Wektory] to bardzo podstawowe pojęcie w każdej aplikacji 3D. Wektor to lista 3 liczb (x, y i z) opisujących punkt lub pozycję w przestrzeni 3D. Z wektorami można zrobić wiele rzeczy, takich jak dodawanie, odejmowanie, rzutowanie i [https://en.wikipedia.org/wiki/Vector_space wiele więcej]. W FreeCAD wektory działają w następujący sposób:
[[#top|top]]

==Vectors and placements==

[http://en.wikipedia.org/wiki/Euclidean_vector Vectors] are a very fundamental concept in any 3D application. A vector is a list of 3 numbers (x, y and z), describing a point or position in 3D space. Many things can be done with vectors, such as additions, subtractions, projections and [http://en.wikipedia.org/wiki/Vector_space much more]. In FreeCAD vectors work like this:


{{Code|code=
{{Code|code=
Line 111: Line 111:
}}
}}


Another common feature of FreeCAD objects is their [[Placement|placement]]. Each object has a {{PropertyData|Placement}} property, which contains the {{PropertyData|Base}} (position) and {{PropertyData|Rotation}} (orientation) of the object. It is easy to manipulate, for example to move our object:
Inną wspólną cechą obiektów FreeCAD jest ich [[Placement/pl|umiejscowienie]]. Każdy obiekt posiada właściwość {{PropertyData|Umiejscowienie}}, która zawiera {{PropertyData|Baze}} ''(położenie)'' i {{PropertyData|Obrót}} ''(orientacja)'' obiektu. Jest to łatwe do manipulowania, na przykład w celu przesunięcia naszego obiektu:


{{Code|code=
{{Code|code=
Line 122: Line 122:
}}
}}


Zanim przejdziemy dalej, musisz zrozumieć kilka ważnych pojęć.
Now you must understand a couple of important concepts before we get further.
{{Top}}
<span id="App_and_Gui"></span>
==Aplikacja i interfejs graficzny==


FreeCAD został zaprojektowany tak, aby mógł być również używany bez interfejsu użytkownika, jako aplikacja wiersza poleceń. Prawie każdy obiekt w FreeCAD składa się z dwóch części: {{incode|Object}}, jego komponentu "geometrii" oraz {{incode|ViewObject}}, jego komponentu "wizualnego". Podczas pracy w trybie wiersza poleceń część geometryczna jest obecna, ale część wizualna jest wyłączona.
[[#top|top]]


Aby zilustrować tę koncepcję, spójrzmy na nasz obiekt sześcianu. Właściwości geometryczne sześcianu, takie jak jego wymiary, położenie itp. są przechowywane w {{incode|Object}}. Podczas gdy jego właściwości wizualne, takie jak kolor, grubość linii itp. są przechowywane w {{incode|ViewObject}}. Odpowiada to zakładkom '''Dane''' i '''Widok''' w [[Property_editor/pl|Edytorze właściwości]]. Dostęp do obiektu widoku obiektu można uzyskać w następujący sposób:
==App and Gui==

FreeCAD has been designed so that it can also be used without its user interface, as a command-line application. Almost every object in FreeCAD therefore consists of two parts: an {{incode|Object}}, its "geometry" component, and a {{incode|ViewObject}}, its "visual" component. When you work in command-line mode, the geometry part is present, but the visual part is disabled.

To illustrate the concept let's look at our cube object. The geometric properties of the cube, such as its dimensions, position, etc. are stored in the {{incode|Object}}. While its visual properties, such as its color, line thickness, etc. are stored in the {{incode|ViewObject}}. This corresponds to the '''Data''' and '''View''' tabs in the [[Property_editor|Property editor]]. The view object of an object is accessed like this:


{{Code|code=
{{Code|code=
vo = box.ViewObject
vo = box.ViewObject
}}
}}
Teraz możesz także zmienić właściwości w zakładce '''Widok''':
Now you can also change the properties on the '''View''' tab:


{{Code|code=
{{Code|code=
Line 143: Line 142:
}}
}}


When you start FreeCAD, the Python console already loads two base modules: {{incode|FreeCAD}} and {{incode|FreeCADGui}} (which can also be accessed by their shortcuts {{incode|App}} and {{incode|Gui}}). They contain all kinds of generic functionality to work with documents and their objects. To illustrate our concept, see that both {{incode|FreeCAD}} and {{incode|FreeCADGui}} contain an {{incode|ActiveDocument}} attribute, which is the currently opened document. {{incode|FreeCAD.ActiveDocument}} and {{incode|FreeCADGui.ActiveDocument}} are not the same object however. They are the two components of a FreeCAD document, and they contain different attributes and methods. For example, {{incode|FreeCADGui.ActiveDocument}} contains {{incode|ActiveView}}, which is the currently opened [[3D_view|3D view]].
Po uruchomieniu FreeCAD konsola Python ładuje już dwa moduły bazowe: {{incode|FreeCAD}} i {{incode|FreeCADGui}} (do których można również uzyskać dostęp za pomocą ich skrótów {{incode|App}} i {{incode|Gui}}). Zawierają one wszelkiego rodzaju ogólne funkcje do pracy z dokumentami i ich obiektami. Aby zilustrować naszą koncepcję, zobacz, że zarówno {{incode|FreeCAD}}, jak i {{incode|FreeCADGui}} zawierają atrybut {{incode|ActiveDocument}}, który jest aktualnie otwartym dokumentem. {{incode|FreeCAD.ActiveDocument}} i {{incode|FreeCADGui.ActiveDocument}} nie jednak tym samym obiektem. to dwa składniki dokumentu FreeCAD i zawierają różne atrybuty i metody. Na przykład {{incode|FreeCADGui.ActiveDocument}} zawiera {{incode|ActiveView}}, który jest aktualnie otwartym oknem [[3D_view/pl|widoku 3D]].
{{Top}}
<span id="Modules"></span>
==Moduły==


Prawdziwa moc FreeCAD leży w jego wiernych modułach, z ich odpowiednimi środowiskami pracy. Podstawowa aplikacja FreeCAD jest mniej więcej pustym kontenerem. Bez swoich modułów może zrobić niewiele więcej niż tworzyć nowe, puste dokumenty. Każdy moduł nie tylko dodaje nowe środowiska pracy do interfejsu, ale także nowe polecenia Pythona i nowe typy obiektów. W rezultacie kilka różnych, a nawet całkowicie niekompatybilnych typów obiektów może współistnieć w tym samym dokumencie. Najważniejsze moduły FreeCAD, którym przyjrzymy się w tym samouczku to: [[Part_Workbench/pl|Część]], [[Mesh_Workbench/pl|Siatka]], [[Sketcher_Workbench/pl|Szkicownik]] i [[Draft_Workbench/pl|Rysunek Roboczy]].
[[#top|top]]


[[Sketcher_Workbench/pl|Szkicownik]] i [[Draft_Workbench/pl|Rysunek Roboczy]] używają modułu [[Part_Workbench/pl|Część]] do tworzenia i obsługi swojej geometrii. Natomiast [[Mesh_Workbench/pl|Siatka]] jest całkowicie niezależny i obsługuje własne obiekty. Więcej na ten temat poniżej.
==Modules==


W ten sposób można sprawdzić wszystkie dostępne typy obiektów bazowych dla bieżącego dokumentu:
The true power of FreeCAD lies in its faithful modules. The FreeCAD base application is more or less an empty container. Without its modules it can do little more than create new, empty documents. Each module not only adds new workbenches to the interface, but also new Python commands and new object types. As a result several different, and even totally incompatible, object types can coexist in the same document. The most important modules in FreeCAD that we'll look at in this tutorial are: [[Part_Module|Part]], [[Mesh_Module|Mesh]], [[Sketcher_Workbench|Sketcher]] and [[Draft_Module|Draft]].

[[Sketcher_Workbench|Sketcher]] and [[Draft_Module|Draft]] both use the [[Part_Module|Part]] module to create and handle their geometry. While [[Mesh_Module|Mesh]] is totally independent, and handles its own objects. More about that below.

You can check all the available base object types for the current document like this:


{{Code|code=
{{Code|code=
Line 159: Line 157:
}}
}}


The different FreeCAD modules are not automatically loaded in the Python console. This is to avoid having a very slow startup. Modules are loaded only when you need them. So, for example, to explore what's inside the Part module:
Różne moduły FreeCAD nie automatycznie ładowane w konsoli Python. Ma to na celu uniknięcie bardzo powolnego uruchamiania. Moduły ładowane tylko wtedy, gdy potrzebne. Na przykład, aby zbadać, co znajduje się w module Part:


{{Code|code=
{{Code|code=
Line 166: Line 164:
}}
}}


But we'll talk more about the Part module below.
Ale więcej o module Part powiemy poniżej.
{{Top}}

<span id="Mesh_module"></span>
[[#top|top]]
==Moduł Siatka==

==Mesh==


[http://en.wikipedia.org/wiki/Polygon_mesh Meshes] are a very simple kind of 3D object, used for example by [http://en.wikipedia.org/wiki/SketchUp Sketchup], [http://en.wikipedia.org/wiki/Blender_%28software%29 Blender] and [http://en.wikipedia.org/wiki/Autodesk_3ds_Max 3D studio Max]. They are composed of 3 elements: points (also called vertices), lines (also called edges) and faces. In many applications, FreeCAD included, faces can have only 3 vertices. Of course, nothing prevents you from having a bigger face made up of several coplanar triangles.
[https://en.wikipedia.org/wiki/Polygon_mesh Siatki] bardzo prostym rodzajem obiektów 3D, używanym na przykład przez [https://en.wikipedia.org/wiki/SketchUp Sketchup], [https://en.wikipedia.org/wiki/Blender_(software) Blender] i [https://en.wikipedia.org/wiki/Autodesk_3ds_Max 3D Studio Max]. Składają się one z 3 elementów: punktów ''(zwanych również wierzchołkami)'', linii ''(zwanych również krawędziami)'' i powierzchni. W wielu aplikacjach, w tym FreeCAD, ściany mogą mieć tylko 3 wierzchołki. Oczywiście nic nie stoi na przeszkodzie, aby mieć większą ścianę składającą się z kilku współpłaszczyznowych trójkątów.


Meshes are simple, but because they are simple you can easily have millions of them in a single document. However, in FreeCAD they have less use and are mostly there so you can import objects in mesh formats ({{FileName|.stl}}, {{FileName|.obj}}) from other applications. The Mesh module was also used extensively as the main test module in the first month of FreeCAD's life.
Siatki proste, ale dlatego, że proste, można łatwo mieć ich miliony w jednym dokumencie. Jednak w FreeCAD mają one mniejsze zastosowanie i głównie po to, aby można było importować obiekty w formatach siatki ({{FileName|.stl}}, {{FileName|.obj}}) z innych aplikacji. Moduł Siatka był również intensywnie wykorzystywany jako główny moduł testowy w pierwszym miesiącu życia FreeCAD.


Mesh objects and FreeCAD objects are different things. You can see the FreeCAD object as a container for a Mesh object (and as we'll see below, for Part objects also). So in order to add a mesh object to FreeCAD, we must first create a FreeCAD object and a Mesh object, then add the Mesh object to the FreeCAD object:
Obiekty Siatki i obiekty FreeCAD to różne rzeczy. Możesz zobaczyć obiekt FreeCAD jako kontener dla obiektu Siatka ''(i jak zobaczymy poniżej, również dla obiektów Części)''. Aby dodać obiekt siatkowy do FreeCAD, musimy najpierw utworzyć obiekt FreeCAD i obiekt Siatki, a następnie dodać obiekt Siatki do obiektu FreeCAD:


{{Code|code=
{{Code|code=
Line 189: Line 186:
}}
}}


This is a standard example that uses the {{incode|createSphere()}} method to create a sphere, but you can also create custom meshes from scratch by defining their vertices and faces.
Jest to standardowy przykład wykorzystujący metodę {{incode|createSphere()}} do utworzenia sfery, ale można również tworzyć niestandardowe siatki od podstaw, definiując ich wierzchołki i ściany.


[[Mesh_Scripting/pl|Więcej informacji o skryptach siatek ...]]
[[Mesh Scripting|Read more about mesh scripting...]]
{{Top}}
<span id="Part_module"></span>
==Moduł Część==


Moduł [[Part_Workbench/pl|Część]] jest najpotężniejszym modułem w całym FreeCAD. Pozwala on na tworzenie i manipulowanie obiektami [https://en.wikipedia.org/wiki/Boundary_representation BRep]. BREP to skrót od "Boundary Representation". Obiekt BREP jest definiowany przez powierzchnie, które otaczają i definiują wewnętrzną objętość. W przeciwieństwie do siatek, obiekty BREP mogą mieć wiele różnych komponentów, od płaskich powierzchni po bardzo złożone powierzchnie NURBS.
[[#top|top]]


Moduł Część oparty jest na potężnej bibliotece [https://en.wikipedia.org/wiki/Open_CASCADE_Technology OpenCasCade], która umożliwia wykonywanie szerokiej gamy złożonych operacji na tych obiektach, takich jak operacje logiczne, zaokrąglanie, przeciąganie itp.
==Part==


Moduł Część działa w taki sam sposób jak moduł Siatka: Tworzysz obiekt FreeCAD, obiekt Część, a następnie dodajesz obiekt Część do obiektu FreeCAD:
The [[Part Module|Part Module]] is the most powerful module in the whole of FreeCAD. It allows you to create and manipulate [http://en.wikipedia.org/wiki/Boundary_representation BRep] objects. BRep stands for "Boundary Representation". A BRep object is defined by surfaces that enclose and define an inner volume. Unlike meshes, BRep objects can have a wide variety of components from planar faces to very complex NURBS surfaces.

The Part module is based on the powerful [http://en.wikipedia.org/wiki/Open_CASCADE_Technology OpenCasCade] library, which allows a wide range of complex operations to be performed on those objects, such as boolean operations, filleting, lofts, etc.

The Part module works the same way as the Mesh module: You create a FreeCAD object, a Part object, then add the Part object to the FreeCAD object:


{{Code|code=
{{Code|code=
Line 214: Line 210:
}}
}}


Moduł części (podobnie jak moduł siatki) ma również skrót, który automatycznie tworzy obiekt FreeCAD i dodaje do niego kształt, dzięki czemu można skrócić ostatnie trzy linie do:
The Part module (like the Mesh module) also has a shortcut that automatically creates a FreeCAD object and adds a shape to it, so you can shorten the last three lines to:


{{Code|code=
{{Code|code=
Line 220: Line 216:
}}
}}


By exploring the contents of myshape, you will notice many interesting subcomponents such as {{incode|Faces}}, {{incode|Edges}}, {{incode|Vertexes}}, {{incode|Solids}} and {{incode|Shells}}, and a wide range of geometry operations such as {{incode|cut}} (subtraction), {{incode|common}} (intersection) or {{incode|fuse}} (union). The [[Topological_data_scripting|Topological data scripting]] page explains all that in detail.
Eksplorując zawartość myshape, można zauważyć wiele interesujących komponentów podrzędnych, takich jak {{incode|Faces}}, {{incode|Edges}}, {{incode|Vertexes}}, {{incode|Solids}} i {{incode|Shells}}, a także szeroki zakres operacji geometrii, takich jak {{incode|cut}} ''(odejmowanie)'', {{incode|common}} ''(przecinanie)'' lub {{incode|fuse}} ''(łączenie)''. Strona [[Topological_data_scripting/pl|Skrypty danych topologicznych]] wyjaśnia to wszystko w szczegółach.


[[Topological_data_scripting|Read more about part scripting...]]
[[Topological_data_scripting/pl|Więcej informacji na temat skryptów części ...]]
{{Top}}
<span id="Draft_module"></span>
==Moduł rysunku Roboczego==


FreeCAD posiada wiele innych modułów, takich jak [[Sketcher_Workbench/pl|Szkicownik]] i [[Draft_Workbench/pl|Rysunek Roboczy]], które również tworzą obiekty Części. Moduły te dodają dodatkowe parametry do tworzonych obiektów, a nawet implementują zupełnie nowy sposób obsługi geometrii części. Nasz powyższy przykład prostopadłościanu jest doskonałym przykładem obiektu parametrycznego. Aby zdefiniować prostopadłościan, wystarczy określić parametry wysokości, szerokości i długości. Na ich podstawie obiekt automatycznie obliczy kształt części. FreeCAD pozwala na [[Scripted_objects/pl|tworzenie takich obiektów w środowisku Python]].
[[#top|top]]


Moduł [[Draft_Workbench/pl|Rysunek Roboczy]] dodaje parametryczne typy obiektów 2D ''(które są obiektami Części)'', takie jak linie i okręgi, a także zapewnia pewne ogólne funkcje, które działają nie tylko na obiektach Rysunek Roboczy, ale na każdym obiekcie Części. Aby zapoznać się z dostępnymi funkcjami, wystarczy wykonać następujące czynności:
==Draft==

FreeCAD features many more modules, such as [[Sketcher_Workbench|Sketcher]] and [[Draft_Module|Draft]], that also create Part objects. These modules add additional parameters to the objects created, or even implement a whole new way to handle the Part geometry in them. Our box example above is a perfect example of a parametric object. All you need to define the box is to specify the parameters height, width and length. Based on those, the object will automatically calculate its Part shape. FreeCAD allows you to [[Scripted_objects|create such objects in Python]].

The [[Draft Module|Draft Module]] adds 2D parametric object types (which are all Part objects) such as lines and circles, and also provides some generic functions that not only work on Draft objects, but on any Part object. To explore what is available, simply do:


{{Code|code=
{{Code|code=
Line 239: Line 234:
Draft.move(box, mvec)
Draft.move(box, mvec)
}}
}}
{{Top}}
<span id="Interface"></span>
==Interfejs==


Interfejs użytkownika FreeCAD jest wykonany przy użyciu [https://en.wikipedia.org/wiki/Qt_(software) Qt], potężnego systemu interfejsu graficznego, odpowiedzialnego za rysowanie i obsługę wszystkich elementów sterujących, menu, pasków narzędzi i przycisków wokół [[3D_view/pl|widoku 3D]]. Qt udostępnia moduł [[PySide/pl|PySide]], który pozwala środowisku Pyton na dostęp i modyfikację interfejsów Qt, takich jak FreeCAD. Spróbujmy pobawić się interfejsem Qt i stworzyć proste okno dialogowe:
[[#top|top]]

==Interface==

The FreeCAD user interface is made with [http://en.wikipedia.org/wiki/Qt_%28framework%29 Qt], a powerful graphical interface system, responsible for drawing and handling all the controls, menus, toolbars and buttons around the [[3D_view|3D view]]. Qt provides a module, [[PySide]], which allows Python to access and modify Qt interfaces such as FreeCAD's. Let's try to fiddle with the Qt interface and produce a simple dialog:


{{Code|code=
{{Code|code=
Line 251: Line 245:
}}
}}


Zauważ, że pojawiające się okno dialogowe ma ikonę FreeCAD na pasku narzędzi, co oznacza, że Qt wie, że polecenie zostało wydane z poziomu aplikacji FreeCAD. Możliwe jest manipulowanie dowolną częścią interfejsu FreeCAD.
Notice that the dialog that appears has the FreeCAD icon in its toolbar, meaning that Qt knows that the order has been issued from inside the FreeCAD application. It is possible to manipulate any part of the FreeCAD interface.


Qt is a very powerful interface system that allows you to do very complex things. It also has some easy-to-use tools such as the Qt Designer with which you can design dialogs graphically and then add them to the FreeCAD interface with a few lines of Python code.
Qt to bardzo potężny system interfejsu, który pozwala robić bardzo złożone rzeczy. Posiada również kilka łatwych w użyciu narzędzi, takich jak Qt Designer, za pomocą którego można projektować okna dialogowe graficznie, a następnie dodawać je do interfejsu FreeCAD za pomocą kilku linii kodu Python.


[[PySide|Read more about PySide here...]]
[[PySide/pl|Przeczytaj więcej o PySide tutaj ...]]
{{Top}}
<span id="Macros"></span>
==Makrodefinicje==


Teraz, gdy dobrze zrozumiałeś podstawy, gdzie będziemy przechowywać nasze skrypty Python i jak będziemy je uruchamiać wewnątrz FreeCAD? Istnieje do tego prosty mechanizm o nazwie [[Macros/pl|Makrodefinicje]]. Makro to skrypt Pythona, który można dodać do paska narzędzi i uruchomić za pomocą kliknięcia myszą. FreeCAD zapewnia prosty edytor tekstu ({{MenuCommand|Makrodefinicje → Makrodefinicje ... → Utwórz}}), w którym można pisać lub wklejać skrypty. Gdy skrypt jest gotowy, użyj {{MenuCommand|Przybory → Dostosuj ... → Makrodefinicje}}, aby zdefiniować dla niego przycisk, który można dodać do pasków narzędzi.
[[#top|top]]


<span id="External_scripts"></span>
==Macros==
==Skrypty zewnętrzne==


Alternatywną metodą tworzenia, zapisywania i uruchamiania własnych skryptów Python jest tworzenie ich poza FreeCAD, przy użyciu wybranego edytora (na przykład Vim). Aby uruchomić skrypt Python wewnątrz FreeCAD, należy zapisać go z rozszerzeniem {{FileName|.py}}.
Now that you have a good understanding of the basics, where are we going to keep our Python scripts, and how are we going to launch them inside FreeCAD? There is an easy mechanism for that, called [[Macros|Macros]]. A macro is a Python script that can be added to a toolbar and launched via a mouse click. FreeCAD provides you with a simple text editor ({{MenuCommand|Macro → Macros... → Create}}) where you can write or paste scripts. Once the script is done, use {{MenuCommand|Tools → Customize... → Macros}} to define a button for it that can be added to toolbars.


Następnie użyj polecenia {{MenuCommand|Plik → Otwórz}}, aby otworzyć skrypt. Zostanie on załadowany do nowej karty w [[Main_view_area/pl|Głównyn obszarze widoku]]. Skrypt można uruchomić, klikając przycisk {{Button|[[Image:Std_DlgMacroExecuteDirect.svg|16px]] [[Std_DlgMacroExecuteDirect/pl|Wykonaj makro]]}}. Wszelkie błędy lub dane wyjściowe skryptu zostaną wyświetlone w oknie [[Report_view|Widoku raportu]].
Now you are ready for more in-depth FreeCAD scripting. So head on to the [[Power_users_hub|Power users hub]]!


Po wprowadzeniu i zapisaniu jakichkolwiek modyfikacji w już załadowanym skrypcie, pojawi się okno dialogowe z pytaniem, czy chcesz ponownie załadować zmodyfikowany skrypt do FreeCAD.
[[#top|top]]


Możesz przejść do strony [[FreeCAD_Scripting_Basics/pl|Podstawy tworzenia skryptów FreeCAD]] lub uzyskać dostęp do tej strony i innych odpowiednich stron na [[Power_users_hub/pl|Centrum Power użytkowników]].
{{Docnav
{{Top}}
|[[Introduction_to_Python|Introduction to Python]]

|[[FreeCAD_Scripting_Basics|FreeCAD Scripting Basics]]
{{Docnav/pl
|[[Introduction_to_Python/pl|Wprowadzenie do środowiska Python]]
|[[FreeCAD_Scripting_Basics/pl|Podstawy tworzenia skryptów FreeCAD]]
}}
}}


{{Powerdocnavi{{#translation:}}}}
{{Powerdocnavi{{#translation:}}}}
[[Category:Python_Code{{#translation:}}]]
[[Category:Developer Documentation{{#translation:}}]]
[[Category:Python Code{{#translation:}}]]
{{clear}}

Latest revision as of 20:03, 29 January 2024

Wprowadzenie

Python to język programowania, który jest stosunkowo łatwy do nauczenia i zrozumienia. Jest open-source i wieloplatformowy i może być używany do wielu celów: od prostych skryptów powłoki do bardzo złożonych programów. Ale jego najbardziej rozpowszechnionym zastosowaniem jest język skryptowy osadzony w innych aplikacjach. W ten sposób jest on używany wewnątrz FreeCAD. Z poziomu konsoli Python lub niestandardowych skryptów można kontrolować FreeCAD i wykonywać bardzo złożone operacje.

Na przykład, ze skryptu Python można:

  • Tworzyć nowe obiekty.
  • Modyfikować istniejące obiekty.
  • Modyfikować reprezentację 3D tych obiektów.
  • Modyfikować interfejs FreeCAD.

Istnieje kilka sposobów korzystania ze środowiska Python w FreeCAD:

  • Z Podstawy tworzenia skryptów FreeCAD, gdzie można wydawać polecenia w interfejsie w stylu "wiersza poleceń".
  • Z makrodefinicji, które są wygodnym sposobem na szybkie dodanie brakującego narzędzia do interfejsu FreeCAD.
  • Z zewnętrznych skryptów, które mogą być używane do tworzenia dość złożonych rozwiązań, nawet całych środowisk pracy.

W tym samouczku będziemy pracować nad kilkoma podstawowymi przykładami, aby zacząć, ale jest o wiele więcej dokumentacji na temat skryptów dostępnych na tej Wiki. Jeśli jesteś zupełnie nowy w środowisku Python i chcesz zrozumieć, jak ono działa, mamy również podstawowe wprowadzenie do środowiska Python.

Przed przystąpieniem do tworzenia skryptów w Pythonie, przejdź do Edycja → Preferencje ... → Ogólne → Widok raportu i zaznacz dwa pola:

  • Przekieruj wiadomości wewnętrzne środowiska Python do Widoku raportu.
  • Przekieruj błędy wewnętrzne środowiska Python do Widoku raportu.

Następnie przejdź do Widok → Panele i zaznacz:

  • Widoku raportu.

Pisanie kodu Python

Istnieją dwa sposoby pisania kodu Python w FreeCAD. W konsoli Python (wybierz z menu Widok → Panele → Konsola Python) lub w Edytorze makrodefinicji (wybierz z menu Makrodefinicje → Makrodefinicje ...). W konsoli piszesz komendy Python jedna po drugiej, wykonując je poprzez naciśnięcie Enter, podczas gdy makra mogą zawierać bardziej złożony kod składający się z kilku linii, wykonywany tylko wtedy, gdy makro jest wykonywane.

Konsola Python programu FreeCAD

W tym samouczku możesz użyć obu metod. Możesz skopiować i wkleić każdą linię w konsoli Python, a następnie nacisnąć Enter, lub skopiować i wkleić cały kod w nowym oknie Makrodefinicji.

Przewiń na górę strony

Poznaj program FreeCAD od środka

Zacznijmy od utworzenia nowego pustego dokumentu:

doc = FreeCAD.newDocument()

Jeśli wpiszesz to w konsoli FreeCAD Python, zauważysz, że jak tylko wpiszesz FreeCAD., pojawi się okno, pozwalające na szybkie autouzupełnianie reszty linii. Co więcej, każdy wpis na liście autouzupełniania ma etykietkę wyjaśniającą, co robi. Ułatwia to zapoznanie się z dostępnymi funkcjami. Zanim wybierzesz newDocument, zapoznaj się z innymi opcjami.

Mechanizm autouzupełniania dostępny w konsoli FreeCAD dla Python.

Teraz nasz nowy dokument zostanie utworzony. Jest to podobne do naciśnięcia przycisku Nowy na pasku narzędzi. W rzeczywistości większość przycisków w FreeCAD nie robi nic więcej niż wykonanie jednej lub więcej linii kodu Pythona. Co więcej, można ustawić opcję w Edycja → Preferencje → Python → Makrodefinicje na Pokaż polecenia skryptu w konsoli Python. Spowoduje to wypisanie w konsoli całego kodu Python wykonanego po naciśnięciu przycisków. Bardzo przydatne do nauki odtwarzania akcji w Pythonie.

Wróćmy teraz do naszego dokumentu i zobaczmy, co możemy z nim zrobić:

doc.

Zapoznaj się z dostępnymi opcjami. Zazwyczaj nazwy rozpoczynające się wielką literą są atrybutami, zawierają wartość, podczas gdy nazwy rozpoczynające się małą literą są funkcjami (zwanymi również metodami), "robią coś". Nazwy zaczynające się od podkreślenia są zwykle przeznaczone do wewnętrznego działania modułu i nie należy się nimi przejmować. Użyjmy jednej z metod, aby dodać nowy obiekt do naszego dokumentu:

box = doc.addObject("Part::Box", "myBox")

Nic się nie dzieje. Dlaczego? Ponieważ FreeCAD został stworzony z myślą o dużym obrazie. Pewnego dnia będzie pracował z setkami złożonych obiektów, z których wszystkie będą od siebie zależne. Dokonanie gdzieś małej zmiany może mieć duży wpływ. Może być konieczne ponowne obliczenie całego dokumentu, co może zająć dużo czasu. Z tego powodu prawie żadne polecenie nie aktualizuje sceny automatycznie. Trzeba to robić samodzielnie:

doc.recompute()

Teraz pojawił się nasz prostopadłościan. Wiele przycisków dodających obiekty w FreeCAD wykonuje w rzeczywistości dwie czynności: dodanie obiektu i ponowne obliczenie. Jeśli włączyłeś opcję Pokaż polecenia skryptu w konsoli Python powyżej, spróbuj dodać kulę za pomocą przycisku GUI. Zobaczysz dwie linie kodu Python wykonywane jedna po drugiej.

Teraz przyjrzyjmy się zawartości naszego prostopadłościanu:

box.

Od razu zobaczysz kilka bardzo interesujących rzeczy, takich jak:

box.Height

Spowoduje to wyświetlenie bieżącej wysokości naszego prostopadłościanu. Teraz spróbujmy to zmienić:

box.Height = 5

Jeśli wybierzesz swój prostopadłościan za pomocą myszy, zobaczysz, że w Edytorze właściwości, na karcie Dane, pojawi się nasza właściwość DANEWysokość. Wszystkie właściwości obiektu FreeCAD, które się tam pojawiają (a także w zakładce Widok, więcej o tym później), są również bezpośrednio dostępne w Python, poprzez ich nazwy, tak jak zrobiliśmy to z właściwością DANEWysokość. Spróbuj zmienić inne wymiary prostopadłościanu.

Przewiń na górę strony

Wektory i umiejscowienia

Wektory to bardzo podstawowe pojęcie w każdej aplikacji 3D. Wektor to lista 3 liczb (x, y i z) opisujących punkt lub pozycję w przestrzeni 3D. Z wektorami można zrobić wiele rzeczy, takich jak dodawanie, odejmowanie, rzutowanie i wiele więcej. W FreeCAD wektory działają w następujący sposób:

myvec = FreeCAD.Vector(2, 0, 0)
myvec.x
myvec.y
othervec = FreeCAD.Vector(0, 3, 0)
sumvec = myvec.add(othervec)

Inną wspólną cechą obiektów FreeCAD jest ich umiejscowienie. Każdy obiekt posiada właściwość DANEUmiejscowienie, która zawiera DANEBaze (położenie) i DANEObrót (orientacja) obiektu. Jest to łatwe do manipulowania, na przykład w celu przesunięcia naszego obiektu:

box.Placement
box.Placement.Base
box.Placement.Base = sumvec
 
otherpla = FreeCAD.Placement()
box.Placement = otherpla

Zanim przejdziemy dalej, musisz zrozumieć kilka ważnych pojęć.

Przewiń na górę strony

Aplikacja i interfejs graficzny

FreeCAD został zaprojektowany tak, aby mógł być również używany bez interfejsu użytkownika, jako aplikacja wiersza poleceń. Prawie każdy obiekt w FreeCAD składa się z dwóch części: Object, jego komponentu "geometrii" oraz ViewObject, jego komponentu "wizualnego". Podczas pracy w trybie wiersza poleceń część geometryczna jest obecna, ale część wizualna jest wyłączona.

Aby zilustrować tę koncepcję, spójrzmy na nasz obiekt sześcianu. Właściwości geometryczne sześcianu, takie jak jego wymiary, położenie itp. są przechowywane w Object. Podczas gdy jego właściwości wizualne, takie jak kolor, grubość linii itp. są przechowywane w ViewObject. Odpowiada to zakładkom Dane i Widok w Edytorze właściwości. Dostęp do obiektu widoku obiektu można uzyskać w następujący sposób:

vo = box.ViewObject

Teraz możesz także zmienić właściwości w zakładce Widok:

vo.Transparency = 80
vo.hide()
vo.show()

Po uruchomieniu FreeCAD konsola Python ładuje już dwa moduły bazowe: FreeCAD i FreeCADGui (do których można również uzyskać dostęp za pomocą ich skrótów App i Gui). Zawierają one wszelkiego rodzaju ogólne funkcje do pracy z dokumentami i ich obiektami. Aby zilustrować naszą koncepcję, zobacz, że zarówno FreeCAD, jak i FreeCADGui zawierają atrybut ActiveDocument, który jest aktualnie otwartym dokumentem. FreeCAD.ActiveDocument i FreeCADGui.ActiveDocument nie są jednak tym samym obiektem. Są to dwa składniki dokumentu FreeCAD i zawierają różne atrybuty i metody. Na przykład FreeCADGui.ActiveDocument zawiera ActiveView, który jest aktualnie otwartym oknem widoku 3D.

Przewiń na górę strony

Moduły

Prawdziwa moc FreeCAD leży w jego wiernych modułach, z ich odpowiednimi środowiskami pracy. Podstawowa aplikacja FreeCAD jest mniej więcej pustym kontenerem. Bez swoich modułów może zrobić niewiele więcej niż tworzyć nowe, puste dokumenty. Każdy moduł nie tylko dodaje nowe środowiska pracy do interfejsu, ale także nowe polecenia Pythona i nowe typy obiektów. W rezultacie kilka różnych, a nawet całkowicie niekompatybilnych typów obiektów może współistnieć w tym samym dokumencie. Najważniejsze moduły FreeCAD, którym przyjrzymy się w tym samouczku to: Część, Siatka, Szkicownik i Rysunek Roboczy.

Szkicownik i Rysunek Roboczy używają modułu Część do tworzenia i obsługi swojej geometrii. Natomiast Siatka jest całkowicie niezależny i obsługuje własne obiekty. Więcej na ten temat poniżej.

W ten sposób można sprawdzić wszystkie dostępne typy obiektów bazowych dla bieżącego dokumentu:

doc.supportedTypes()

Różne moduły FreeCAD nie są automatycznie ładowane w konsoli Python. Ma to na celu uniknięcie bardzo powolnego uruchamiania. Moduły są ładowane tylko wtedy, gdy są potrzebne. Na przykład, aby zbadać, co znajduje się w module Part:

import Part
Part.

Ale więcej o module Part powiemy poniżej.

Przewiń na górę strony

Moduł Siatka

Siatki są bardzo prostym rodzajem obiektów 3D, używanym na przykład przez Sketchup, Blender i 3D Studio Max. Składają się one z 3 elementów: punktów (zwanych również wierzchołkami), linii (zwanych również krawędziami) i powierzchni. W wielu aplikacjach, w tym FreeCAD, ściany mogą mieć tylko 3 wierzchołki. Oczywiście nic nie stoi na przeszkodzie, aby mieć większą ścianę składającą się z kilku współpłaszczyznowych trójkątów.

Siatki są proste, ale dlatego, że są proste, można łatwo mieć ich miliony w jednym dokumencie. Jednak w FreeCAD mają one mniejsze zastosowanie i są głównie po to, aby można było importować obiekty w formatach siatki (.stl, .obj) z innych aplikacji. Moduł Siatka był również intensywnie wykorzystywany jako główny moduł testowy w pierwszym miesiącu życia FreeCAD.

Obiekty Siatki i obiekty FreeCAD to różne rzeczy. Możesz zobaczyć obiekt FreeCAD jako kontener dla obiektu Siatka (i jak zobaczymy poniżej, również dla obiektów Części). Aby dodać obiekt siatkowy do FreeCAD, musimy najpierw utworzyć obiekt FreeCAD i obiekt Siatki, a następnie dodać obiekt Siatki do obiektu FreeCAD:

import Mesh
mymesh = Mesh.createSphere()
mymesh.Facets
mymesh.Points
 
meshobj = doc.addObject("Mesh::Feature", "MyMesh")
meshobj.Mesh = mymesh
doc.recompute()

Jest to standardowy przykład wykorzystujący metodę createSphere() do utworzenia sfery, ale można również tworzyć niestandardowe siatki od podstaw, definiując ich wierzchołki i ściany.

Więcej informacji o skryptach siatek ...

Przewiń na górę strony

Moduł Część

Moduł Część jest najpotężniejszym modułem w całym FreeCAD. Pozwala on na tworzenie i manipulowanie obiektami BRep. BREP to skrót od "Boundary Representation". Obiekt BREP jest definiowany przez powierzchnie, które otaczają i definiują wewnętrzną objętość. W przeciwieństwie do siatek, obiekty BREP mogą mieć wiele różnych komponentów, od płaskich powierzchni po bardzo złożone powierzchnie NURBS.

Moduł Część oparty jest na potężnej bibliotece OpenCasCade, która umożliwia wykonywanie szerokiej gamy złożonych operacji na tych obiektach, takich jak operacje logiczne, zaokrąglanie, przeciąganie itp.

Moduł Część działa w taki sam sposób jak moduł Siatka: Tworzysz obiekt FreeCAD, obiekt Część, a następnie dodajesz obiekt Część do obiektu FreeCAD:

import Part
myshape = Part.makeSphere(10)
myshape.Volume
myshape.Area

shapeobj = doc.addObject("Part::Feature", "MyShape")
shapeobj.Shape = myshape
doc.recompute()

Moduł części (podobnie jak moduł siatki) ma również skrót, który automatycznie tworzy obiekt FreeCAD i dodaje do niego kształt, dzięki czemu można skrócić ostatnie trzy linie do:

Part.show(myshape)

Eksplorując zawartość myshape, można zauważyć wiele interesujących komponentów podrzędnych, takich jak Faces, Edges, Vertexes, Solids i Shells, a także szeroki zakres operacji geometrii, takich jak cut (odejmowanie), common (przecinanie) lub fuse (łączenie). Strona Skrypty danych topologicznych wyjaśnia to wszystko w szczegółach.

Więcej informacji na temat skryptów części ...

Przewiń na górę strony

Moduł rysunku Roboczego

FreeCAD posiada wiele innych modułów, takich jak Szkicownik i Rysunek Roboczy, które również tworzą obiekty Części. Moduły te dodają dodatkowe parametry do tworzonych obiektów, a nawet implementują zupełnie nowy sposób obsługi geometrii części. Nasz powyższy przykład prostopadłościanu jest doskonałym przykładem obiektu parametrycznego. Aby zdefiniować prostopadłościan, wystarczy określić parametry wysokości, szerokości i długości. Na ich podstawie obiekt automatycznie obliczy kształt części. FreeCAD pozwala na tworzenie takich obiektów w środowisku Python.

Moduł Rysunek Roboczy dodaje parametryczne typy obiektów 2D (które są obiektami Części), takie jak linie i okręgi, a także zapewnia pewne ogólne funkcje, które działają nie tylko na obiektach Rysunek Roboczy, ale na każdym obiekcie Części. Aby zapoznać się z dostępnymi funkcjami, wystarczy wykonać następujące czynności:

import Draft
rec = Draft.makeRectangle(5, 2)
mvec = FreeCAD.Vector(4, 4, 0)
Draft.move(rec, mvec)
Draft.move(box, mvec)

Przewiń na górę strony

Interfejs

Interfejs użytkownika FreeCAD jest wykonany przy użyciu Qt, potężnego systemu interfejsu graficznego, odpowiedzialnego za rysowanie i obsługę wszystkich elementów sterujących, menu, pasków narzędzi i przycisków wokół widoku 3D. Qt udostępnia moduł PySide, który pozwala środowisku Pyton na dostęp i modyfikację interfejsów Qt, takich jak FreeCAD. Spróbujmy pobawić się interfejsem Qt i stworzyć proste okno dialogowe:

from PySide import QtGui
QtGui.QMessageBox.information(None, "Apollo program", "Houston, we have a problem")

Zauważ, że pojawiające się okno dialogowe ma ikonę FreeCAD na pasku narzędzi, co oznacza, że Qt wie, że polecenie zostało wydane z poziomu aplikacji FreeCAD. Możliwe jest manipulowanie dowolną częścią interfejsu FreeCAD.

Qt to bardzo potężny system interfejsu, który pozwala robić bardzo złożone rzeczy. Posiada również kilka łatwych w użyciu narzędzi, takich jak Qt Designer, za pomocą którego można projektować okna dialogowe graficznie, a następnie dodawać je do interfejsu FreeCAD za pomocą kilku linii kodu Python.

Przeczytaj więcej o PySide tutaj ...

Przewiń na górę strony

Makrodefinicje

Teraz, gdy dobrze zrozumiałeś podstawy, gdzie będziemy przechowywać nasze skrypty Python i jak będziemy je uruchamiać wewnątrz FreeCAD? Istnieje do tego prosty mechanizm o nazwie Makrodefinicje. Makro to skrypt Pythona, który można dodać do paska narzędzi i uruchomić za pomocą kliknięcia myszą. FreeCAD zapewnia prosty edytor tekstu (Makrodefinicje → Makrodefinicje ... → Utwórz), w którym można pisać lub wklejać skrypty. Gdy skrypt jest gotowy, użyj Przybory → Dostosuj ... → Makrodefinicje, aby zdefiniować dla niego przycisk, który można dodać do pasków narzędzi.

Skrypty zewnętrzne

Alternatywną metodą tworzenia, zapisywania i uruchamiania własnych skryptów Python jest tworzenie ich poza FreeCAD, przy użyciu wybranego edytora (na przykład Vim). Aby uruchomić skrypt Python wewnątrz FreeCAD, należy zapisać go z rozszerzeniem .py.

Następnie użyj polecenia Plik → Otwórz, aby otworzyć skrypt. Zostanie on załadowany do nowej karty w Głównyn obszarze widoku. Skrypt można uruchomić, klikając przycisk Wykonaj makro. Wszelkie błędy lub dane wyjściowe skryptu zostaną wyświetlone w oknie Widoku raportu.

Po wprowadzeniu i zapisaniu jakichkolwiek modyfikacji w już załadowanym skrypcie, pojawi się okno dialogowe z pytaniem, czy chcesz ponownie załadować zmodyfikowany skrypt do FreeCAD.

Możesz przejść do strony Podstawy tworzenia skryptów FreeCAD lub uzyskać dostęp do tej strony i innych odpowiednich stron na Centrum Power użytkowników.

Przewiń na górę strony