Python scripting tutorial/pl: Difference between revisions

From FreeCAD Documentation
(Updating to match new version of source page)
(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.")
 
(90 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<languages/>
{{TutorialInfo/pl

|Topic=Programming
{{Docnav/pl
|Level=Intermediate
|[[Introduction_to_Python/pl|Wprowadzenie do środowiska Python]]
|Time=
|[[FreeCAD_Scripting_Basics/pl|Podstawy tworzenia skryptów FreeCAD]]
|Author=
|FCVersion=
|Files=
}}
}}


{{TOCright}}

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

[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.


Na przykład, ze skryptu Python można:
[http://en.wikipedia.org/wiki/Python_%28programming_language%29 Python] is a programming language, very simple to use and very fast to learn. It is open-source, multi-platform, and can be used alone for a wide array of things, from programming simple shell scripts to very complex programs. But one of its most widespread uses is as a scripting language, since it is easy to embed in other applications. That's exactly how it is used inside FreeCAD. From the python console, or from your custom scripts, you can pilot FreeCAD, and make it perform very complex actions for which there is still no graphical user interface tool.
* 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:
For example, from a python script, you can:
* Z [[FreeCAD_Scripting_Basics/pl|Podstawy tworzenia skryptów FreeCAD]], gdzie można wydawać polecenia w interfejsie w stylu "wiersza poleceń".
* create new objects
* Z [[Macros/pl|makrodefinicji]], które są wygodnym sposobem na szybkie dodanie brakującego narzędzia do interfejsu FreeCAD.
* modify existing objects
* 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]].
* modify the 3D representation of those objects
* modify the FreeCAD interface


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]].
There are also several different ways to use python in FreeCAD:
* From the [[FreeCAD Scripting Basics|FreeCAD python interpreter]], where you can issue simple commands like in a "command line"-style interface
* From [[macros]], which are a convenient way to quickly add a missing tool to the FreeCAD interface
* From external scripts, which can be used to program much more complex things. like entire [[Workbenches]].


Przed przystąpieniem do tworzenia skryptów w Pythonie, przejdź do {{MenuCommand|Edycja → Preferencje ... → Ogólne → Widok raportu}} i zaznacz dwa pola:
In this tutorial, we'll work on a couple of simple examples to get you started, but there is also 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]].
* {{MenuCommand|Przekieruj wiadomości wewnętrzne środowiska Python do Widoku raportu}}.
* {{MenuCommand|Przekieruj błędy wewnętrzne środowiska Python do Widoku raportu}}.
Następnie przejdź do {{MenuCommand|Widok → Panele}} i zaznacz:
* {{MenuCommand|Widoku raportu}}.


<span id="Writing_Python_code"></span>
'''Important!''' Before proceeding with Python scripting, go to {{MenuCommand|Edit->Prefences->General->Output}} window and check 2 boxes:
==Pisanie kodu Python==
* Redirect internal Python output to report view
* Redirect internal Python errors to report view
Then go to {{MenuCommand|View->Panels}} and check:
* Report view
This will save you a lot of aggravation!


Istnieją dwa sposoby pisania kodu Python w FreeCAD. W [[Python_console/pl|konsoli Python]] ''(wybierz z menu {{MenuCommand|Widok → Panele → Konsola Python}})'' lub w [[Std_DlgMacroExecute/pl|Edytorze makrodefinicji]] ''(wybierz z menu {{MenuCommand|Makrodefinicje → Makrodefinicje ...}})''. 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.
== Writing python code ==
There are two easy ways to write python code in FreeCAD: From the python console (available from the View -> Panels -> Python console menu) or from the Macro editor (Tools -> Macros). In the console, you write python commands one by one, which are executed when you press return, while the macros can contain a more complex script made of several lines, which is executed only when the macro is executed.


[[Image:Screenshot_pythoninterpreter.jpg|center|frame|The FreeCAD python console]]
[[Image:Screenshot_pythoninterpreter.jpg]]
{{Caption|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ąć {{KEY|Enter}}, lub skopiować i wkleić cały kod w nowym oknie Makrodefinicji.
In this tutorial, you will be able to use both methods, either by copying/pasting each line one by one in the python console and pressing {{KEY|Return}} after each line, or by copying/pasting the entire code in a new Macro window.
{{Top}}
<span id="Exploring_FreeCAD"></span>
==Poznaj program FreeCAD od środka==


Zacznijmy od utworzenia nowego pustego dokumentu:
== Exploring FreeCAD ==
Let's start by creating a new empty document:


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


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.
If you type this in the FreeCAD python console, you will notice that as soon as you type "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 very easy to explore the functionality available. Before choosing "newDocument", have a look at the other options available.


[[Image:Screenshot_classbrowser.jpg|center|frame|The autocomplete mechanism of the FreeCAD python console]]
[[Image:Screenshot_classbrowser.jpg]]
{{Caption|Mechanizm autouzupełniania dostępny w konsoli FreeCAD dla 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|Edycja → Preferencje → Python → Makrodefinicje }} 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.
Now our new document will be created. This is similar to pressing the "new document" button on the toolbar. In fact, most buttons in FreeCAD do nothing else than executing a line or two of python code. Even better, you can set an option in {{MenuCommand|Edit->Preferences->General->Macro}} to "show script commands in python console". This will print in the console all python code executed when you press buttons. Very useful to learn how to reproduce actions in python.


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


{{Code|code=
{{Code|code=
Line 57: 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 small 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=
box = doc.addObject("Part::Box","myBox")
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:
Nothing happens. Why? Because FreeCAD is made for the big picture. One day, it will work with hundreds of complex objects, all depending one from another. 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 69: 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.
See? Now our box appeared! Many of the buttons that add objects in FreeCAD actually do 2 things: add the object, and recompute. If you turned on the "show script commands in python console" option above, try now 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:
What about the "Part::Box" will you ask? How can I know what other kind of objects can be added? It's all here:

{{Code|code=
doc.supportedTypes()
}}

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:
}}
}}


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), są 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.
If you select your box with the mouse, you'll see that in the properties panel, in the "Data" tab, our "Height" property appears. All properties of a FreeCAD object that appear there (and also in the "View" tab, more about that later), are directly accessible by python too, by their names, like we did with the "Height" property. Try changing the other dimensions of that box.
{{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:
== Vectors and Placements ==
[http://en.wikipedia.org/wiki/Euclidean_vector Vectors] are a very fundamental concept in any 3D application. It is a list of 3 numbers (x, y and z), describing a point or position in the 3D space. A lot of 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=
myvec = FreeCAD.Vector(2,0,0)
myvec = FreeCAD.Vector(2, 0, 0)
myvec
myvec.x
myvec.x
myvec.y
myvec.y
othervec = FreeCAD.Vector(0,3,0)
othervec = FreeCAD.Vector(0, 3, 0)
sumvec = myvec.add(othervec)
sumvec = myvec.add(othervec)
}}
}}


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:
Another common feature of FreeCAD objects is their [[Placement|placement]]. Each object has a Placement attributes, which contains the position (Base) and orientation (Rotation) of the object. It is easy to manipulate, for example to move our object:


{{Code|code=
{{Code|code=
box.Placement.
box.Placement
box.Placement.Base
box.Placement.Base
box.Placement.Base = sumvec
box.Placement.Base = sumvec
Line 120: 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.
== App and Gui ==
FreeCAD is made from the beginning to work as a command-line application, without its user interface. As a result, almost everything is separated between a "geometry" component and a "visual" component. When you work in command-line mode, the geometry part is present, but all the visual part is simply disabled. Almost any object in FreeCAD therefore is made of two parts, an Object and a ViewObject.


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:
To illustrate the concept, see our cube object, the geometric properties of the cube, such as its dimensions, position, etc... are stored in the object, while its visual properties, such as its color, line thickness, etc... are stored in the viewobject. This corresponds to the "Data" and "View" tabs in the property window. 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 of the "View" tab:


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


When you start FreeCAD, the python console already loads 2 base modules: FreeCAD and FreeCADGui (which can also be accessed by their shortcuts App and Gui). They contain all kinds of generic functionality to work with documents and their objects. To illustrate our concept, see that both FreeCAD and FreeCADGui contain an ActiveDocument attribute, which is the currently opened document. FreeCAD.ActiveDocument and FreeCADGui.ActiveDocument are not the same object. They are the two components of a FreeCAD document, and they contain different attributes and methods. For example, FreeCADGui.ActiveDocument contains ActiveView, which is the currently opened 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]].
== Modules ==
Now, you must be wondering, what, other than "Part::Box", can I do? The FreeCAD base application is more or less an empty container. Without its modules, it can do little more than create new, empty documents. The true power of FreeCAD is in its faithful modules. Each of them adds not only new workbenches to the interface, but also new python commands and new object types. As a result, several different or 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]] or [[Draft Module|Draft]].


[[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.
[[Sketcher Workbench|Sketcher]] and [[Draft Module|Draft]] both use the [[Part Module|Part]] module to create and handle their geometry, which are BRep while [[Mesh Module|Mesh]] is totally independent, and handles its own objects. More about that below.


W ten sposób można sprawdzić wszystkie dostępne typy obiektów bazowych dla bieżącego dokumentu:
You can check all the available base object types for the current document like this:


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


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:
The different FreeCAD modules, although they added their object types to FreeCAD, 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:


{{Code|code=
{{Code|code=
Line 158: 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>
==Moduł Siatka==


[https://en.wikipedia.org/wiki/Polygon_mesh Siatki] są 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.
By now, you know a bit more about the different modules of FreeCAD: The core modules (FreeCAD, FreeCADGui), and the workbenches modules (Part, Mesh, Sketcher). The other important modules are the 3d scene module (pivy) and the interface module (pyside), we'll talk about them too below.


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 ({{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.
Now it's time to explore a bit deeper the important ones, which are the workbench modules.


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:
== Mesh ==

[http://en.wikipedia.org/wiki/Polygon_mesh Meshes] are a very simple kind of 3D objects, used for example by [http://en.wikipedia.org/wiki/SketchUp Sketchup], [http://en.wikipedia.org/wiki/Blender_%28software%29 Blender] or [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. But of course nothing prevents you from having a bigger plane face made of several coplanar triangles.

Meshes are simple, this can be a bad thing, but for many applications such as those mentioned above, it turns to be an advantage, because they are so simple that you can easily have millions of them in a single document. In FreeCAD, though, they have less use, and are mostly there so you can import objects in mesh formats (.stl, .obj) from other applications. It was also used extensively as the main test module in the first month of FreeCAD's life.

Mesh objects and FreeCAD objects are different things. You can see the FreeCAD object as a container for a Mesh object (like, we'll see below, for Part objects too). 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:


{{Code|code=
{{Code|code=
import Mesh
import Mesh
mymesh = Mesh.createSphere()
mymesh = Mesh.createSphere()
mymesh.
mymesh.Facets
mymesh.Facets
mymesh.Points
mymesh.Points
meshobj = doc.addObject("Mesh::Feature","MyMesh")
meshobj = doc.addObject("Mesh::Feature", "MyMesh")
meshobj.Mesh = mymesh
meshobj.Mesh = mymesh
doc.recompute()
doc.recompute()
}}
}}


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.
This is a standard example, that uses the createSphere() method to automatically create a sphere, but you can very well create custom meshes from scratch, by defining their vertices and faces.


[[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.
== Part ==
The [[Part Module]] is the most powerful module of the whole FreeCAD. It allows to create and manipulate [http://en.wikipedia.org/wiki/Boundary_representation BRep] objects. This kind of object, unlike meshes, can have a wide variety of components. To resume a bit, Brep means Boundary Representation. which means that they are defined by their surfaces, which enclose and define an inner volume. These surface can be a variety of things, such as plane faces or very complex NURBS surfaces. They also carry the concept of volume.


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 easily performed on those objects, such as boolean operations, filleting, lofts, etc...
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.


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:
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:


{{Code|code=
{{Code|code=
import Part
import Part
myshape = Part.makeSphere(10)
myshape = Part.makeSphere(10)
myshape.
myshape.Volume
myshape.Volume
myshape.Area
myshape.Area


shapeobj = doc.addObject("Part::Feature","MyShape")
shapeobj = doc.addObject("Part::Feature", "MyShape")
shapeobj.Shape = myshape
shapeobj.Shape = myshape
doc.recompute()
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:
The Part module (like the Mesh module) also has a shortcut that automatically creates a FreeCAD object and add a shape to it, so you can skip the 3 last lines above:


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


By exploring the contents of myshape, you will notice many interesting available subcomponents such as Faces, Edges, Vertexes, Solids or Shells, and a wide range of geometry operations such as cut (subtraction), common (intersection) or fuse (union). The [[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/pl|Więcej informacji na temat skryptów części ...]]
[[Topological data scripting|Read more about part scripting...]]
{{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]].
== Draft ==
FreeCAD features many more modules, such as [[Sketcher Workbench|Sketcher]] or [[Draft Module|Draft]], which also create Part objects, but add parameters to it, or even carry a whole new way to handle the Part geometry in them. Our box example above, is a perfect example of parametric object. All you need, to define the box, is to specify a couple of parameters, such as 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]].


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


{{Code|code=
{{Code|code=
import Draft
import Draft
rec = Draft.makeRectangle(5, 2)
Draft.
mvec = FreeCAD.Vector(4, 4, 0)
rec = Draft.makeRectangle(5,2)
Draft.move(rec, mvec)
mvec = FreeCAD.Vector(4,4,0)
Draft.move(rec,mvec)
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:
== 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, buttons around the 3D view. Qt provides a module, called PySide, which allows python to access and modify Qt interfaces, such as FreeCAD. Let's try to fiddle with the Qt interface and produce a simple dialog:


{{Code|code=
{{Code|code=
from PySide import QtGui
from PySide import QtGui
QtGui.QMessageBox.information(None,"Apollo program","Houston, we have a problem")
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.
See 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. We can therefore easily directly manipulate any part of the FreeCAD interface.


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.
Qt is a very powerful interface system, that allows you to do very complex things, but also has a couple of very 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 couple of lines of 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.
== Macros ==
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 easily from FreeCAD? There is an easy mechanism for that, called [[Macros]]. A macro is simply a python script, that can then be added to a toolbar and be launched from a simple mouse click. FreeCAD provides you with a simple text editor (Macro -> Macros -> Create) where you can write or paste scripts. Once it is done, the Tools -> Customize -> Macros allow you to define a button for it, that can be added to toolbars.


<span id="External_scripts"></span>
Now you are ready for more in-depth FreeCAD scripting. Head on to the [[Power users hub]]!
==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}}.
{{docnav|Introduction to Python|FreeCAD Scripting Basics}}


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]].
{{clear}}

<languages/>
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 [[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]].
{{Top}}

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

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

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