Python scripting tutorial/ro: Difference between revisions

From FreeCAD Documentation
No edit summary
(Updating to match new version of source page)
(43 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<languages/>
<languages/>

{{TutorialInfo/ro
{{Docnav
|Topic=Programming
|[[Introduction_to_Python|Introduction to Python]]
|Level=Intermediate
|[[FreeCAD_Scripting_Basics|FreeCAD Scripting Basics]]
|Time=
|Author=
|FCVersion=
|Files=
}}
}}


{{TOCright}}

==Introduction==


<div class="mw-translate-fuzzy">
[http://en.wikipedia.org/wiki/Python_%28programming_language%29 Python] este un limbaj de programare, foarte simplu de utilizat și foarte rapid de învățat. Este open-source, multi-platformă și poate fi folosit singur pentru o gamă largă de lucruri, de la programarea scripturilor simple shell la programele foarte complexe. Dar una dintre cele mai răspândite utilizări este ca un limbaj de scripting, deoarece este ușor de încorporat în alte aplicații. Exact așa este folosit în interiorul FreeCAD. Din consola Python sau din scripturile personalizate, puteți încerca FreeCAD și o puteți face să efectueze acțiuni foarte complexe pentru care nu există încă un instrument grafic de interfață cu utilizatorul.
[http://en.wikipedia.org/wiki/Python_%28programming_language%29 Python] este un limbaj de programare, foarte simplu de utilizat și foarte rapid de învățat. Este open-source, multi-platformă și poate fi folosit singur pentru o gamă largă de lucruri, de la programarea scripturilor simple shell la programele foarte complexe. Dar una dintre cele mai răspândite utilizări este ca un limbaj de scripting, deoarece este ușor de încorporat în alte aplicații. Exact așa este folosit în interiorul FreeCAD. Din consola Python sau din scripturile personalizate, puteți încerca FreeCAD și o puteți face să efectueze acțiuni foarte complexe pentru care nu există încă un instrument grafic de interfață cu utilizatorul.
</div>


<div class="mw-translate-fuzzy">
Dintr-un script Python, de exemplu, puteți:
Dintr-un script Python, de exemplu, puteți:
* crea obiecte noi
* crea obiecte noi
Line 17: Line 20:
* modifica reprezentarea 3D a acestor obiecte
* modifica reprezentarea 3D a acestor obiecte
* modifica interfața FreeCAD
* modifica interfața FreeCAD
</div>


<div class="mw-translate-fuzzy">
Există, de asemenea, mai multe moduri diferite de a folosi Python în FreeCAD:
Există, de asemenea, mai multe moduri diferite de a folosi Python în FreeCAD:
* Din [[FreeCAD Scripting Basics|FreeCAD python interpreter]], unde puteți emite comenzi simple ca într-o interfață "command line"-style interface
* Din [[FreeCAD Scripting Basics|FreeCAD python interpreter]], unde puteți emite comenzi simple ca într-o interfață "command line"-style interface
* Din [[macros]], care sunt o modalitate convenabilă de a adăuga rapid o unealtă lipsă la interfața FreeCAD
* Din [[macros]], care sunt o modalitate convenabilă de a adăuga rapid o unealtă lipsă la interfața FreeCAD
* De la scripturi externe, care pot fi folosite pentru a programa lucruri mult mai complexe. ca întreg sistemul de ateliere [[Workbenches]].
* De la scripturi externe, care pot fi folosite pentru a programa lucruri mult mai complexe. ca întreg sistemul de ateliere [[Workbenches]].
</div>


<div class="mw-translate-fuzzy">
În acest tutorial, vom lucra pentru început pe câteva exemple simple, dar există, de asemenea, mult mai multă documentație [[Power users hub|documentation about python scripting]] disponibilă pe acest wiki. Dacă sunteți total nou la Python și doriți să înțelegeți cum funcționează, avem de asemenea o bază [[introduction to Python]].
În acest tutorial, vom lucra pentru început pe câteva exemple simple, dar există, de asemenea, mult mai multă [[Power users hub|documentation about python scripting]] disponibilă pe acest wiki. Dacă sunteți total novice în limbajul Python și doriți să înțelegeți cum funcționează, avem de asemenea o bază [[introduction to Python]].
</div>


<div class="mw-translate-fuzzy">
'''Important!''' Înainte de a continua scriptul Python, mergeți la fereastra {{MenuCommand|Edit->Prefences->General->Output}} și verificați 2 boxe:
'''Important!''' Înainte de a continua scriptul Python, mergeți la fereastra {{MenuCommand|Edit->Prefences->General->Output}} și bifați 2 căsuțe:
*Redirecționați ieșirea internă Python către vizualizarea raportului
*Redirecționați ieșirea internă Python către vizualizarea raportului
* Redirecționați erorile interne Python către vizualizarea raportului
* Redirecționați erorile interne Python către vizualizarea raportului
Line 31: Line 40:
* Report view
* Report view
Acest lucru vă va feri de o mulțime de probleme grave!
Acest lucru vă va feri de o mulțime de probleme grave!
</div>


<div class="mw-translate-fuzzy">
== Scrierea codului python ==
== Scrierea codului python ==
Există două modalități ușoare de a scrie codul python în FreeCAD: Din consola python (disponibilă din View -> Panels -> Python console menu) ori din Macro editor (Tools -> Macros). In consolă, scrieți comenzi python una câte una, care sunt executate atunci când apăsați retur de car (Enter), în timp ce macrocomenzile pot conține un script mai complex compus din mai multe linii care se execută numai când macro-ul este executat.
Există două modalități ușoare de a scrie codul python în FreeCAD: Din consola python (disponibilă din View -> Panels -> Python console menu) ori din Macro editor (Tools -> Macros). In consolă, scrieți comenzi python una câte una, care sunt executate atunci când apăsați retur de car (Enter), în timp ce macrocomenzile pot conține un script mai complex compus din mai multe linii care se execută numai când macro-ul este executat.
</div>


There are two ways to write Python code in FreeCAD. In the [[Python console|Python console]] (select {{MenuCommand|View → Panels → Python console}} from the menu) or in the [[Std_DlgMacroExecute|Macro editor]] (select {{MenuCommand|Macro → Macros...}} 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.

[[Image:Screenshot_pythoninterpreter.jpg]]
<div class="mw-translate-fuzzy">
[[Image:Screenshot_pythoninterpreter.jpg|center|frame|The FreeCAD python console]]
[[Image:Screenshot_pythoninterpreter.jpg|center|frame|The FreeCAD python console]]
</div>


<div class="mw-translate-fuzzy">
În acest tutorial, veți putea utiliza ambele metode fie prin copierea / lipirea fiecărei linii una câte una în consola python și apăsând {{KEY|Return}} după fiecare linie, ori prin copy/paste întregul cod într-o nouă fereastră Macro.
În acest tutorial, veți putea utiliza ambele metode fie prin copierea / lipirea fiecărei linii una câte una în consola python și apăsând {{KEY|Return}} după fiecare linie, ori prin copy/paste întregul cod într-o nouă fereastră Macro.
</div>


[[#top|top]]

<div class="mw-translate-fuzzy">
== Explorând FreeCAD ==
== Explorând FreeCAD ==
Hai să începem prin crearea unui nou document vid:
Hai să începem prin crearea unui nou document vid:
</div>

Let's start by creating a new empty document:


{{Code|code=
{{Code|code=
Line 46: Line 71:
}}
}}


<div class="mw-translate-fuzzy">
Dacă introduceți acest lucru în consola Python FreeCAD, veți observa că, de îndată ce tastați "FreeCAD.", Se va afișa un fereastră, permițând rapid completarea automată a restului liniei. Chiar mai bine, fiecare intrare din lista de auto-complete are o sugestie care explică ce face. Acest lucru face foarte ușoară explorarea funcționalității disponibile. Înainte de a alege "newDocument", aruncați o privire asupra celorlalte opțiuni disponibile.
Dacă introduceți acest lucru în consola Python FreeCAD, veți observa că, de îndată ce tastați "FreeCAD.", Se va afișa un fereastră, permițând rapid completarea automată a restului liniei. Chiar mai bine, fiecare intrare din lista de auto-complete are o sugestie care explică ce face. Acest lucru face foarte ușoară explorarea funcționalității disponibile. Înainte de a alege "newDocument", aruncați o privire asupra celorlalte opțiuni disponibile.
</div>


[[Image:Screenshot_classbrowser.jpg]]
<div class="mw-translate-fuzzy">
[[Image:Screenshot_classbrowser.jpg|center|frame|The autocomplete mechanism of the FreeCAD python console]]
[[Image:Screenshot_classbrowser.jpg|center|frame|The autocomplete mechanism of the FreeCAD python console]]
</div>


<div class="mw-translate-fuzzy">
Acum, noul nostru document va fi creat. Acest lucru este similar cu apăsarea butonului "document nou" de pe bara de instrumente. De fapt, majoritatea butoanelor din FreeCAD nu fac decât să execute o linie sau două coduri Python. Chiar mai bine, puteți seta o opțiune în {{MenuCommand|Edit->Preferences->General->Macro}} pentru a "show script commands in python console". Aceasta va afișa în consolă tot codul python executat când apăsați butoanele. Foarte util pentru a afla cum să reproduceți acțiunile în Python.
Acum, noul nostru document va fi creat. Acest lucru este similar cu apăsarea butonului "document nou" de pe bara de instrumente. De fapt, majoritatea butoanelor din FreeCAD nu fac decât să execute o linie sau două coduri Python. Chiar mai bine, puteți seta o opțiune în {{MenuCommand|Edit->Preferences->General->Macro}} pentru a "show script commands in python console". Aceasta va afișa în consolă tot codul python executat când apăsați butoanele. Foarte util pentru a afla cum să reproduceți acțiunile în Python.
</div>


<div class="mw-translate-fuzzy">
Now let's get back to our document. Let's see what we can do with it:
Acum să ne întoarcem la documentul nostru. Să vedem ce putem face cu el:
</div>


{{Code|code=
{{Code|code=
Line 58: Line 92:
}}
}}


<div class="mw-translate-fuzzy">
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:
Explorați opțiunile disponibile. De obicei, numele care încep cu o literă de capital sunt atribute, ele conțin o valoare, în timp ce numele care încep cu litera subliniată arată că sunt funcții (numite și metode), fac "ceva". Numele care încep cu un subliniere sunt de obicei acolo pentru funcționarea internă a modulului și nu ar trebui să le pese de ele. Să folosim una dintre metodele de adăugare a unui obiect nou în documentul nostru:
</div>


{{Code|code=
{{Code|code=
box = doc.addObject("Part::Box","myBox")
box = doc.addObject("Part::Box", "myBox")
}}
}}


<div class="mw-translate-fuzzy">
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:
Nu se întâmplă nimic. De ce? Deoarece FreeCAD este creat pentru imaginea de ansamblu. Într-o zi, va funcționa cu sute de obiecte complexe, toate depinzând unul de altul. Efectuarea unei mici schimbări ar putea avea un impact mare, ar putea să trebuiască să recalculați tot documentul, ceea ce ar putea dura mult timp/ Trebuie să o faceți manual:
</div>


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


<div class="mw-translate-fuzzy">
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.
Vedeți? Acum, caseta noastră a apărut! Multe dintre butoanele care adaugă obiecte în FreeCAD fac de fapt 2 lucruri: adăugă obiectul și recalculaează. Dacă ați activat opțiunea "show script commands in python console" "comenzile scriptului de prezentare din consola python" de mai sus, încercați acum să adăugați o sferă cu butonul GUI, veți vedea că cele două linii de cod python sunt executate una după alta.
</div>


Acum, să explorăm conținutul casetei noastre:
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 84: Line 118:
}}
}}


Veți vedea imediat câteva lucruri foarte interesante, cum ar fi:
You'll immediately see a couple of very interesting things such as:


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


Aceasta va tipări înălțimea curentă a casetei noastre. Acum, să încercăm să schimbăm acest lucru:
This will print the current height of our box. Now let's try to change that:


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


<div class="mw-translate-fuzzy">
Dacă selectați o casetă cu mouse-ul, veți vedea că în panoul proprietăților, în fila "Date", apare proprietatea noastră "Înălțime". Toate proprietățile unui obiect FreeCAD care apar acolo (și, de asemenea, în fila "Vizualizare", mai multe despre asta mai târziu), sunt direct accesibile și prin Python, prin numele lor, așa cum am făcut-o cu proprietatea "Height". Încercați să modificați celelalte dimensiuni ale căsuței.
Dacă selectați o casetă cu mouse-ul, veți vedea că în panoul proprietăților, în fila "Data", apare proprietatea noastră "Height". Toate proprietățile unui obiect FreeCAD care apar acolo (și, de asemenea, în fila "Vizualizare", mai multe despre asta mai târziu), sunt direct accesibile și prin Python, prin numele lor, așa cum am făcut-o cu proprietatea "Height". Încercați să modificați celelalte dimensiuni ale căsuței.
</div>


[[#top|top]]

<div class="mw-translate-fuzzy">
== Vectori și Plasamente ==
== Vectori și Plasamente ==
[http://en.wikipedia.org/wiki/Euclidean_vector Vectors] sunt un concept foarte fundamental în orice aplicație 3D. Este o listă cu 3 numere (x, y și z), care descriu un punct sau o poziție în spațiul 3D. O mulțime de lucruri se pot face cu vectori, cum ar fi adăugiri, scăderi, proiecții și [http://en.wikipedia.org/wiki/Vector_space much more]. In FreeCAD vectorii lucrează cam așa:
[http://en.wikipedia.org/wiki/Euclidean_vector Vectors] sunt un concept foarte fundamental în orice aplicație 3D. Este o listă cu 3 numere (x, y și z), care descriu un punct sau o poziție în spațiul 3D. O mulțime de lucruri se pot face cu vectori, cum ar fi adăugiri, scăderi, proiecții și [http://en.wikipedia.org/wiki/Vector_space much more]. In FreeCAD vectorii lucrează cam așa:
</div>

[https://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 [https://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)
}}
}}


<div class="mw-translate-fuzzy">
O altă caracteristică comună a obiectelor FreeCAD este [[Placement|placement]]. Fiecare obiect are atribute de plasare, care conține poziția (baza) și orientarea (rotirea) obiectului. Este ușor de manipulat, de exemplu pentru a ne mișca obiectul:
O altă caracteristică comună a obiectelor FreeCAD este [[Placement|placement]]. Fiecare obiect are atribute de plasare, care conține poziția (baza) și orientarea (rotirea) obiectului. Este ușor de manipulat, de exemplu pentru a ne mișca obiectul:
</div>


{{Code|code=
{{Code|code=
Line 123: Line 166:
Acum trebuie să înțelegeți câteva concepte importante înainte de a ajunge mai departe.
Acum trebuie să înțelegeți câteva concepte importante înainte de a ajunge mai departe.


[[#top|top]]

<div class="mw-translate-fuzzy">
== Apicații și Interfață grafică==
== Apicații și Interfață grafică==
FreeCAD de la început a fost conceput pentru a funcționa ca o aplicație pe linie de comandă, fără interfața sa de utilizator. Ca rezultat, aproape totul este separat între o componentă "geometrie" și o componentă "vizuală". Când lucrați în modul de comandă, partea de geometrie este prezentă, dar toată partea vizuală este pur și simplu dezactivată. Aproape orice obiect din FreeCAD este compus din două părți, an Object and a ViewObject.
FreeCAD de la început a fost conceput pentru a funcționa ca o aplicație pe linie de comandă, fără interfața sa de utilizator. Ca rezultat, aproape totul este separat între o componentă "geometrie" și o componentă "vizuală". Când lucrați în modul de comandă, partea de geometrie este prezentă, dar toată partea vizuală este pur și simplu dezactivată. Aproape orice obiect din FreeCAD este compus din două părți, an Object and a ViewObject.
</div>


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.
Pentru a ilustra conceptul, a se vedea obiectul nostru cub, proprietățile geometrice ale cubului, cum ar fi dimensiunile, poziția etc., sunt stocate în obiect, în timp ce proprietățile sale vizuale, cum ar fi culoarea, grosimea liniei etc. sunt stocate în obiectul de vizualizare. Aceasta corespunde fișierelor "Data" și "Veww" din fereastra de proprietăți. Obiectul de vizualizare al unui obiect este accesat astfel:

<div class="mw-translate-fuzzy">
Pentru a ilustra conceptul, a se vedea obiectul nostru cub, proprietățile geometrice ale cubului, cum ar fi dimensiunile, poziția etc., sunt stocate în obiect, în timp ce proprietățile sale vizuale, cum ar fi culoarea, grosimea liniei etc. sunt stocate în obiectul de vizualizare. Aceasta corespunde fișierelor "Data" și "Vew" din fereastra de proprietăți. Obiectul de vizualizare al unui obiect este accesat astfel:
</div>


{{Code|code=
{{Code|code=
vo = box.ViewObject
vo = box.ViewObject
}}
}}
<div class="mw-translate-fuzzy">
Acum, puteți schimba și proprietățile filei "View":
Acum, puteți schimba și proprietățile filei "View":
</div>


{{Code|code=
{{Code|code=
Line 139: Line 192:
}}
}}


<div class="mw-translate-fuzzy">
Când porniți FreeCAD, consola python are încarcate deja 2 module de bază: FreeCAD și FreeCADGui (care pot fi accesate și prin comenzile rapide App și Gui). Acestea conțin toate tipurile de funcții generice pentru a lucra cu documentele și obiectele acestora. Pentru a ilustra conceptul nostru, a se vedea că atât FreeCAD cât și FreeCADGui conțin un atribut ActiveDocument, care este documentul deschis în prezent. FreeCAD.ActiveDocument și FreeCADGui.ActiveDocument nu sunt același obiect. Acestea sunt cele două componente ale unui document FreeCAD și conțin atribute și metode diferite. De exemplu, FreeCADGui.ActiveDocument conține ActiveView, care este vizualizarea 3D curentă/actuală
Când porniți FreeCAD, consola python are încarcate deja 2 module de bază: FreeCAD și FreeCADGui (care pot fi accesate și prin comenzile rapide App și Gui). Acestea conțin toate tipurile de funcții generice pentru a lucra cu documentele și obiectele acestora. Pentru a ilustra conceptul nostru, a se vedea că atât FreeCAD cât și FreeCADGui conțin un atribut ActiveDocument, care este documentul deschis în prezent. FreeCAD.ActiveDocument și FreeCADGui.ActiveDocument nu sunt același obiect. Acestea sunt cele două componente ale unui document FreeCAD și conțin atribute și metode diferite. De exemplu, FreeCADGui.ActiveDocument conține ActiveView, care este vizualizarea 3D curentă/actuală
</div>


[[#top|top]]

<div class="mw-translate-fuzzy">
== Module ==
== Module ==
Acum, ar trebui să te întrebi ce, se poate face cu "Part::Box"? Aplicația de bază FreeCAD este mai mult sau mai puțin un container gol. Fără modulele sale, acesta nu poate face decât să creeze noi documente goale. Adevărata putere a FreeCAD este în modulele sale credincioase. Fiecare dintre ele adaugă la interfață nu numai noi aateliere de lucru, ci și noi comenzi python și tipuri noi de obiecte. Ca rezultat, mai multe tipuri de obiecte diferite sau chiar total incompatibile pot coexista în același document. Cele mai importante module din FreeCAD, pe care le vom analiza în acest tutorial, sunt [[Part Module|Part]], [[Mesh Module|Mesh]], [[Sketcher Workbench|Sketcher]] ori [[Draft Module|Draft]].
Acum, ar trebui să te întrebi ce, se poate face cu "Part::Box"? Aplicația de bază FreeCAD este mai mult sau mai puțin un container gol. Fără modulele sale, acesta nu poate face decât să creeze noi documente goale. Adevărata putere a FreeCAD este în modulele sale credincioase. Fiecare dintre ele adaugă la interfață nu numai noi ateliere de lucru, ci și noi comenzi python și tipuri noi de obiecte. Ca rezultat, mai multe tipuri de obiecte diferite sau chiar total incompatibile pot coexista în același document. Cele mai importante module din FreeCAD, pe care le vom analiza în acest tutorial, sunt [[Part Module|Part]], [[Mesh Module|Mesh]], [[Sketcher Workbench|Sketcher]] ori [[Draft Module|Draft]].
</div>

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


<div class="mw-translate-fuzzy">
[[Sketcher Workbench|Sketcher]] și [[Draft Module|Draft]] amândouă utilizează modulul [[Part Module|Part]] pentru a crea și manipulageometria lor, care este Boundary Representation - BRep [[Mesh Module|Mesh]] este total independentă și își ocupă propriile obiecte. Mai multe despre acestea sunt în cele de mai jos.
[[Sketcher Workbench|Sketcher]] și [[Draft Module|Draft]] amândouă utilizează modulul [[Part Module|Part]] pentru a crea și manipula geometria lor, care este Boundary Representation - BRep [[Mesh Module|Mesh]] este total independentă și își ocupă propriile obiecte. Mai multe despre acestea sunt în cele de mai jos.
</div>


Puteți verifica toate tipurile de obiecte de bază disponibile pentru documentul curent, după cum urmează:
You can check all the available base object types for the current document like this:


{{Code|code=
{{Code|code=
Line 152: Line 215:
}}
}}


<div class="mw-translate-fuzzy">
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:
Diferitele module FreeCAD, deși și-au adăugat tipurile de obiecte în FreeCAD, nu sunt încărcate automat în consola python. Aceasta este pentru a evita o pornire foarte lentă. Modulele sunt încărcate numai atunci când aveți nevoie de ele. De exemplu, pentru a explora ce se află în interiorul modulului Piese:
</div>


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


Dar vom vorbi mai multe despre modulul Piese mai jos.
But we'll talk more about the Part module below.


[[#top|top]]
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.

Now it's time to explore a bit deeper the important ones, which are the workbench modules.


<div class="mw-translate-fuzzy">
== Plase ==
== Plase ==
</div>


<div class="mw-translate-fuzzy">
[http://en.wikipedia.org/wiki/Polygon_mesh Meshes] sunt un tip foarte simplu de obiecte 3D, folosite de exemplu de [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]. Ele sunt compuse din 3 elemente: puncte (numite și vârfuri), linii (numite și margini) și fațete. În multe aplicații, inclusiv în FreeCAD, fațetele pot avea doar 3 noduri. Dar, desigur, nimic nu vă împiedică să aveți o față mai mare plană făcută din mai multe triunghiuri coplanare.
[http://en.wikipedia.org/wiki/Polygon_mesh Meshes] sunt un tip foarte simplu de obiecte 3D, folosite de exemplu de [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]. Ele sunt compuse din 3 elemente: puncte (numite și vârfuri), linii (numite și margini) și fațete. În multe aplicații, inclusiv în FreeCAD, fațetele pot avea doar 3 noduri. Dar, desigur, nimic nu vă împiedică să aveți o față mai mare plană făcută din mai multe triunghiuri coplanare.
</div>


<div class="mw-translate-fuzzy">
Mesh-urile sunt simple, acest lucru poate fi un lucru rău, însă pentru multe aplicații, cum ar fi cele menționate mai sus, se dovedește a fi un avantaj, deoarece acestea sunt atât de simple încât puteți avea cu ușurință milioane dintr-un singur document. În FreeCAD, totuși, acestea au mai puțină utilizare și sunt mai mult acolo, astfel încât să puteți importa obiecte în formate de plasă (.stl, .obj) din alte aplicații. De asemenea, a fost utilizat extensiv ca modul principal de testare în prima lună a vieții FreeCAD.
Mesh-urile sunt simple, acest lucru poate fi un lucru rău, însă pentru multe aplicații, cum ar fi cele menționate mai sus, se dovedește a fi un avantaj, deoarece acestea sunt atât de simple încât puteți avea cu ușurință milioane dintr-un singur document. În FreeCAD, totuși, acestea au mai puțină utilizare și sunt mai mult acolo, astfel încât să puteți importa obiecte în formate de plasă (.stl, .obj) din alte aplicații. De asemenea, a fost utilizat extensiv ca modul principal de testare în prima lună a vieții FreeCAD.
</div>


<div class="mw-translate-fuzzy">
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:
Obiectele tip Plasă/rețea de discretizare/meshes și obiectele FreeCAD sunt lucruri diferite. Puteți vedea obiectul FreeCAD ca un container pentru un obiect Mesh (cum ar fi, vom vedea mai jos, și pentru obiectele Piese de asemenea). Deci, pentru a adăuga un obiect tip plasă la FreeCAD, trebuie mai întâi să creăm un obiect FreeCAD și un obiect Mesh, apoi să adăugăm obiectul Mesh la obiectul FreeCAD:
</div>


{{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()
}}
}}


<div class="mw-translate-fuzzy">
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.
Acesta este un exemplu standard, care folosește metoda createSphere() pentru a crea automat o sferă, dar puteți crea foarte bine plase/mesh-uri personalizate de la zero, definindu-le vârfurile și fețele.
</div>


[[Mesh Scripting|Read more about mesh scripting...]]
[[Mesh Scripting|Read more about mesh scripting...]]


[[#top|top]]

<div class="mw-translate-fuzzy">
== Piese ==
== Piese ==
The [[Part Module]] este modulul cel mai puternic al întregului FreeCAD. Permite crearea și manipularea obeictelor [http://en.wikipedia.org/wiki/Boundary_representation BRep]. Acest tip de obiect, spre deosebire de Plase cu ochiuri, poate avea o mare varietate de componente. Pentru a rezuma, Brep înseamnă Boundary Representation-Reprezentarea limitelor, ceea ce înseamnă că ele sunt definite de către suprafețele lor, care cuprind și definesc un volum interior. Aceste suprafețe pot fi o varietate de lucruri, cum ar fi fațetele plane sau suprafețele NURBS foarte complexe. Ele poartă, de asemenea, conceptul de volum.
[[Part Module]] este modulul cel mai puternic din întregul FreeCAD. Permite crearea și manipularea obeictelor [http://en.wikipedia.org/wiki/Boundary_representation BRep]. Acest tip de obiect, spre deosebire de Plase cu ochiuri, poate avea o mare varietate de componente. Pentru a rezuma, Brep înseamnă Boundary Representation-Reprezentarea limitelor, ceea ce înseamnă că ele sunt definite de către suprafețele lor, care cuprind și definesc un volum interior. Aceste suprafețe pot fi o varietate de lucruri, cum ar fi fațetele plane sau suprafețele NURBS foarte complexe. Ele poartă, de asemenea, conceptul de volum.
</div>

The [[Part Module|Part Module]] is the most powerful module in the whole of FreeCAD. It allows you to create and manipulate [https://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.


<div class="mw-translate-fuzzy">
Modulul /Atelierul Piese se bazeză pe putrnica bilbiotecă [http://en.wikipedia.org/wiki/Open_CASCADE_Technology OpenCasCade] bibliotecă, care permite o gamă largă de operații complexe să fie ușor de realizat pe acele obiecte, cum ar fi operațiile booleene, filetarea, lofts etc.
Modulul /Atelierul Piese se bazeză pe putrnica bilbiotecă [http://en.wikipedia.org/wiki/Open_CASCADE_Technology OpenCasCade] bibliotecă, care permite o gamă largă de operații complexe să fie ușor de realizat pe acele obiecte, cum ar fi operațiile booleene, filetarea, lofts etc.
</div>


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:
Modulul Part/Piese funcționează la fel ca modulul Mesh/Plase: Creați un obiect FreeCAD, un obiect Part, apoi adăugați obiectul Part la obiectul 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()
}}
}}


<div class="mw-translate-fuzzy">
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:
Modulul Part (cum ar fi modulul Mesh) are, de asemenea, o comandă rapidă care creează automat un obiect FreeCAD și adaugă o formă pentru acesta, astfel încât să puteți sări peste cele trei linii de mai sus:
</div>


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


<div class="mw-translate-fuzzy">
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.
Prin explorarea conținutului myshape, veți observa multe subcomponente interesante cum ar fi Faces/Fațete, margini/muchii, vârfuri, solide sau forme coji și o gamă largă de operații de geometrie, cum ar fi substractivitatea (scăderea), comunitatea (intersecția) sau fuziunea (uniunea). Pagina cu [[Topological data scripting/ro|Scriptarea datelor topologice]] explică toate detaliile.
</div>


<div class="mw-translate-fuzzy">
[[Topological data scripting|Read more about part scripting...]]
[[Topological data scripting|Read more about part scripting...]]
</div>


[[#top|top]]

<div class="mw-translate-fuzzy">
== Desen 2 D ==
== Desen 2 D ==
FreeCAD features many more modules, such as [[Sketcher Workbench|Sketcher]] or [[Draft Module|Draft]],
Careacteristicile FreeCAD features sunt în multe module, ca de exemplu [[Sketcher Workbench|Sketcher]] ori [[Draft Module|Draft]],
care creează, de asemenea, obiecte Piese, dar adaugă parametri sau chiar abordează o nouă modalitate de a gestiona geometria pieselor în ele. Exemplul casetei de mai sus este un exemplu perfect de obiect parametric. Tot ce aveți nevoie, pentru a defini caseta, este să specificați câțiva parametri, cum ar fi înălțimea, lățimea și lungimea. Pe baza acestora, obiectul va calcula automat forma piesei sale. FreeCAD vă permite să [[Scripted objects|create such objects in python]].
care creează, de asemenea, obiecte Piese, dar adaugă parametri sau chiar abordează o nouă modalitate de a gestiona geometria pieselor în ele. Exemplul casetei de mai sus este un exemplu perfect de obiect parametric. Tot ce aveți nevoie, pentru a defini caseta, este să specificați câțiva parametri, cum ar fi înălțimea, lățimea și lungimea. Pe baza acestora, obiectul va calcula automat forma piesei sale. FreeCAD vă permite să [[Scripted objects|create such objects in python]].
</div>


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

<div class="mw-translate-fuzzy">
[[Draft Module]] adaugă câteva tipuri de obiecte parametrice 2D parametric (care sunt toate obiecte Part) ca de exemplu linile și cercurile, și oferă, de asemenea, câteva funcții generice care funcționează nu numai pe obiectele create de Draft, ci și pe orice obiect Part. Pentru a explora ceea ce este disponibil, pur și simplu faceți:
</div>


{{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|top]]

<div class="mw-translate-fuzzy">
== Interfață ==
== Interfață ==
The FreeCAD user interface is made with [http://en.wikipedia.org/wiki/Qt_%28framework%29 Qt], un sistem puternic de interfață grafică, responsabil pentru desenarea și manipularea tuturor comenzilor, meniurilor, barelor de instrumente, butoanelor în jurul vizualizării 3D. Qt oferă un modul, numit PySide, care permite Python-ului să acceseze și să modifice interfețele Qt, cum ar fi FreeCAD. Să încercăm să modificăm interfața Qt și să producem un dialog simplu:
Interfața user a FreeCAD este realizată cu [http://en.wikipedia.org/wiki/Qt_%28framework%29 Qt], un sistem puternic de interfață grafică, responsabil pentru desenarea și manipularea tuturor comenzilor, meniurilor, barelor de instrumente, butoanelor în jurul vizualizării 3D. Qt oferă un modul, numit PySide, care permite Python-ului să acceseze și să modifice interfețele Qt, cum ar fi FreeCAD. Să încercăm să modificăm interfața Qt și să producem un dialog simplu:
</div>

The FreeCAD user interface is made with [https://en.wikipedia.org/wiki/Qt_(software) 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=
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")
}}
}}


<div class="mw-translate-fuzzy">
Vedeți că dialogul care apare are pictograma FreeCAD din bara de instrumente, ceea ce înseamnă că Qt știe că ordinul a fost emis din interiorul aplicației FreeCAD. Prin urmare, putem manipula direct orice parte a interfeței FreeCAD.
Vedeți că dialogul care apare are pictograma FreeCAD din bara de instrumente, ceea ce înseamnă că Qt știe că ordinul a fost emis din interiorul aplicației FreeCAD. Prin urmare, putem manipula direct orice parte a interfeței FreeCAD.
</div>


<div class="mw-translate-fuzzy">
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.
Qt este un sistem de interfață foarte puternic, care vă permite să faceți lucruri foarte complexe, dar are și câteva instrumente foarte ușor de folosit, cum ar fi designerul Qt, cu care puteți crea dialoguri grafic și apoi le puteți adăuga la interfața FreeCAD cu câteva linii de python.
</div>


[[PySide|Read more about PySide here...]]
[[PySide|Read more about PySide here...]]


[[#top|top]]

<div class="mw-translate-fuzzy">
== Macro-uri ==
== Macro-uri ==
Acum, că aveți o bună înțelegere a principiilor de bază, unde vom păstra scripturile noastre Python și cum le vom lansa cu ușurință de pe FreeCAD? Există un mecanism ușor pentru acesta, numit [[Macros]]. O macrocomandă este pur și simplu un script python, care poate fi apoi adăugat la o bară de instrumente și poate fi lansat printr-un simplu click de mouse. FreeCAD vă oferă un editor simplu de text (Macro -> Macros -> Creare) unde puteți scrie sau lipi scripturi. După ce s-a terminat, Instrumentele -> Customize -> Macro-urile vă permit să definiți un buton pentru acesta, care poate fi adăugat la barele de instrumente.
Acum, că aveți o bună înțelegere a principiilor de bază, unde vom păstra scripturile noastre Python și cum le vom lansa cu ușurință de pe FreeCAD? Există un mecanism ușor pentru acesta, numit [[Macros]]. O macrocomandă este pur și simplu un script python, care poate fi apoi adăugat la o bară de instrumente și poate fi lansat printr-un simplu click de mouse. FreeCAD vă oferă un editor simplu de text (Macro -> Macros -> Creare) unde puteți scrie sau lipi scripturi. După ce s-a terminat, Instrumentele -> Customize -> Macro-urile vă permit să definiți un buton pentru acesta, care poate fi adăugat la barele de instrumente.
</div>


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.

<div class="mw-translate-fuzzy">
Acum sunteți gata pentru mai multă programare/script FreeCAD în profunzime. Deplasați-vă la [[Power users hub]]!
Acum sunteți gata pentru mai multă programare/script FreeCAD în profunzime. Deplasați-vă la [[Power users hub]]!
</div>

[[#top|top]]


<div class="mw-translate-fuzzy">
{{docnav|Introduction to Python|FreeCAD Scripting Basics}}
{{docnav|Introduction to Python|FreeCAD Scripting Basics}}
</div>


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

Revision as of 22:16, 5 June 2020

Introduction

Python este un limbaj de programare, foarte simplu de utilizat și foarte rapid de învățat. Este open-source, multi-platformă și poate fi folosit singur pentru o gamă largă de lucruri, de la programarea scripturilor simple shell la programele foarte complexe. Dar una dintre cele mai răspândite utilizări este ca un limbaj de scripting, deoarece este ușor de încorporat în alte aplicații. Exact așa este folosit în interiorul FreeCAD. Din consola Python sau din scripturile personalizate, puteți încerca FreeCAD și o puteți face să efectueze acțiuni foarte complexe pentru care nu există încă un instrument grafic de interfață cu utilizatorul.

Dintr-un script Python, de exemplu, puteți:
  • crea obiecte noi
  • modifica obiectele existente
  • modifica reprezentarea 3D a acestor obiecte
  • modifica interfața FreeCAD

Există, de asemenea, mai multe moduri diferite de a folosi Python în FreeCAD:

  • Din FreeCAD python interpreter, unde puteți emite comenzi simple ca într-o interfață "command line"-style interface
  • Din macros, care sunt o modalitate convenabilă de a adăuga rapid o unealtă lipsă la interfața FreeCAD
  • De la scripturi externe, care pot fi folosite pentru a programa lucruri mult mai complexe. ca întreg sistemul de ateliere Workbenches.

În acest tutorial, vom lucra pentru început pe câteva exemple simple, dar există, de asemenea, mult mai multă documentation about python scripting disponibilă pe acest wiki. Dacă sunteți total novice în limbajul Python și doriți să înțelegeți cum funcționează, avem de asemenea o bază introduction to Python.

Important! Înainte de a continua scriptul Python, mergeți la fereastra Edit->Prefences->General->Output și bifați 2 căsuțe:

  • Redirecționați ieșirea internă Python către vizualizarea raportului
  • Redirecționați erorile interne Python către vizualizarea raportului

Then go to View->Panels and check:

  • Report view

Acest lucru vă va feri de o mulțime de probleme grave!

Scrierea codului python

Există două modalități ușoare de a scrie codul python în FreeCAD: Din consola python (disponibilă din View -> Panels -> Python console menu) ori din Macro editor (Tools -> Macros). In consolă, scrieți comenzi python una câte una, care sunt executate atunci când apăsați retur de car (Enter), în timp ce macrocomenzile pot conține un script mai complex compus din mai multe linii care se execută numai când macro-ul este executat.

There are two ways to write Python code in FreeCAD. In the Python console (select View → Panels → Python console from the menu) or in the Macro editor (select Macro → Macros... from the menu). In the console you write Python commands one by one, executing them by pressing Enter, while macros can contain more complex code made up of several lines, executed only when the macro is executed.

The FreeCAD python console

În acest tutorial, veți putea utiliza ambele metode fie prin copierea / lipirea fiecărei linii una câte una în consola python și apăsând Return după fiecare linie, ori prin copy/paste întregul cod într-o nouă fereastră Macro.

top

Explorând FreeCAD

Hai să începem prin crearea unui nou document vid:

Let's start by creating a new empty document:

doc = FreeCAD.newDocument()

Dacă introduceți acest lucru în consola Python FreeCAD, veți observa că, de îndată ce tastați "FreeCAD.", Se va afișa un fereastră, permițând rapid completarea automată a restului liniei. Chiar mai bine, fiecare intrare din lista de auto-complete are o sugestie care explică ce face. Acest lucru face foarte ușoară explorarea funcționalității disponibile. Înainte de a alege "newDocument", aruncați o privire asupra celorlalte opțiuni disponibile.

The autocomplete mechanism of the FreeCAD python console

Acum, noul nostru document va fi creat. Acest lucru este similar cu apăsarea butonului "document nou" de pe bara de instrumente. De fapt, majoritatea butoanelor din FreeCAD nu fac decât să execute o linie sau două coduri Python. Chiar mai bine, puteți seta o opțiune în Edit->Preferences->General->Macro pentru a "show script commands in python console". Aceasta va afișa în consolă tot codul python executat când apăsați butoanele. Foarte util pentru a afla cum să reproduceți acțiunile în Python.

Acum să ne întoarcem la documentul nostru. Să vedem ce putem face cu el:

doc.

Explorați opțiunile disponibile. De obicei, numele care încep cu o literă de capital sunt atribute, ele conțin o valoare, în timp ce numele care încep cu litera subliniată arată că sunt funcții (numite și metode), fac "ceva". Numele care încep cu un subliniere sunt de obicei acolo pentru funcționarea internă a modulului și nu ar trebui să le pese de ele. Să folosim una dintre metodele de adăugare a unui obiect nou în documentul nostru:

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

Nu se întâmplă nimic. De ce? Deoarece FreeCAD este creat pentru imaginea de ansamblu. Într-o zi, va funcționa cu sute de obiecte complexe, toate depinzând unul de altul. Efectuarea unei mici schimbări ar putea avea un impact mare, ar putea să trebuiască să recalculați tot documentul, ceea ce ar putea dura mult timp/ Trebuie să o faceți manual:

doc.recompute()

Vedeți? Acum, caseta noastră a apărut! Multe dintre butoanele care adaugă obiecte în FreeCAD fac de fapt 2 lucruri: adăugă obiectul și recalculaează. Dacă ați activat opțiunea "show script commands in python console" "comenzile scriptului de prezentare din consola python" de mai sus, încercați acum să adăugați o sferă cu butonul GUI, veți vedea că cele două linii de cod python sunt executate una după alta.

Acum, să explorăm conținutul casetei noastre:

box.

Veți vedea imediat câteva lucruri foarte interesante, cum ar fi:

box.Height

Aceasta va tipări înălțimea curentă a casetei noastre. Acum, să încercăm să schimbăm acest lucru:

box.Height = 5

Dacă selectați o casetă cu mouse-ul, veți vedea că în panoul proprietăților, în fila "Data", apare proprietatea noastră "Height". Toate proprietățile unui obiect FreeCAD care apar acolo (și, de asemenea, în fila "Vizualizare", mai multe despre asta mai târziu), sunt direct accesibile și prin Python, prin numele lor, așa cum am făcut-o cu proprietatea "Height". Încercați să modificați celelalte dimensiuni ale căsuței.

top

Vectori și Plasamente

Vectors sunt un concept foarte fundamental în orice aplicație 3D. Este o listă cu 3 numere (x, y și z), care descriu un punct sau o poziție în spațiul 3D. O mulțime de lucruri se pot face cu vectori, cum ar fi adăugiri, scăderi, proiecții și much more. In FreeCAD vectorii lucrează cam așa:

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 much more. In FreeCAD vectors work like this:

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

O altă caracteristică comună a obiectelor FreeCAD este placement. Fiecare obiect are atribute de plasare, care conține poziția (baza) și orientarea (rotirea) obiectului. Este ușor de manipulat, de exemplu pentru a ne mișca obiectul:

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

Acum trebuie să înțelegeți câteva concepte importante înainte de a ajunge mai departe.

top

Apicații și Interfață grafică

FreeCAD de la început a fost conceput pentru a funcționa ca o aplicație pe linie de comandă, fără interfața sa de utilizator. Ca rezultat, aproape totul este separat între o componentă "geometrie" și o componentă "vizuală". Când lucrați în modul de comandă, partea de geometrie este prezentă, dar toată partea vizuală este pur și simplu dezactivată. Aproape orice obiect din FreeCAD este compus din două părți, an Object and a ViewObject.

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 Object, its "geometry" component, and a ViewObject, its "visual" component. When you work in command-line mode, the geometry part is present, but the visual part is disabled.

Pentru a ilustra conceptul, a se vedea obiectul nostru cub, proprietățile geometrice ale cubului, cum ar fi dimensiunile, poziția etc., sunt stocate în obiect, în timp ce proprietățile sale vizuale, cum ar fi culoarea, grosimea liniei etc. sunt stocate în obiectul de vizualizare. Aceasta corespunde fișierelor "Data" și "Vew" din fereastra de proprietăți. Obiectul de vizualizare al unui obiect este accesat astfel:

vo = box.ViewObject

Acum, puteți schimba și proprietățile filei "View":

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

Când porniți FreeCAD, consola python are încarcate deja 2 module de bază: FreeCAD și FreeCADGui (care pot fi accesate și prin comenzile rapide App și Gui). Acestea conțin toate tipurile de funcții generice pentru a lucra cu documentele și obiectele acestora. Pentru a ilustra conceptul nostru, a se vedea că atât FreeCAD cât și FreeCADGui conțin un atribut ActiveDocument, care este documentul deschis în prezent. FreeCAD.ActiveDocument și FreeCADGui.ActiveDocument nu sunt același obiect. Acestea sunt cele două componente ale unui document FreeCAD și conțin atribute și metode diferite. De exemplu, FreeCADGui.ActiveDocument conține ActiveView, care este vizualizarea 3D curentă/actuală

top

Module

Acum, ar trebui să te întrebi ce, se poate face cu "Part::Box"? Aplicația de bază FreeCAD este mai mult sau mai puțin un container gol. Fără modulele sale, acesta nu poate face decât să creeze noi documente goale. Adevărata putere a FreeCAD este în modulele sale credincioase. Fiecare dintre ele adaugă la interfață nu numai noi ateliere de lucru, ci și noi comenzi python și tipuri noi de obiecte. Ca rezultat, mai multe tipuri de obiecte diferite sau chiar total incompatibile pot coexista în același document. Cele mai importante module din FreeCAD, pe care le vom analiza în acest tutorial, sunt Part, Mesh, Sketcher ori Draft.

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, Mesh, Sketcher and Draft.

Sketcher și Draft amândouă utilizează modulul Part pentru a crea și manipula geometria lor, care este Boundary Representation - BRep Mesh este total independentă și își ocupă propriile obiecte. Mai multe despre acestea sunt în cele de mai jos.

Puteți verifica toate tipurile de obiecte de bază disponibile pentru documentul curent, după cum urmează:

doc.supportedTypes()

Diferitele module FreeCAD, deși și-au adăugat tipurile de obiecte în FreeCAD, nu sunt încărcate automat în consola python. Aceasta este pentru a evita o pornire foarte lentă. Modulele sunt încărcate numai atunci când aveți nevoie de ele. De exemplu, pentru a explora ce se află în interiorul modulului Piese:

import Part
Part.

Dar vom vorbi mai multe despre modulul Piese mai jos.

top

Plase

Meshes sunt un tip foarte simplu de obiecte 3D, folosite de exemplu de Sketchup, Blender or 3D studio Max. Ele sunt compuse din 3 elemente: puncte (numite și vârfuri), linii (numite și margini) și fațete. În multe aplicații, inclusiv în FreeCAD, fațetele pot avea doar 3 noduri. Dar, desigur, nimic nu vă împiedică să aveți o față mai mare plană făcută din mai multe triunghiuri coplanare.

Mesh-urile sunt simple, acest lucru poate fi un lucru rău, însă pentru multe aplicații, cum ar fi cele menționate mai sus, se dovedește a fi un avantaj, deoarece acestea sunt atât de simple încât puteți avea cu ușurință milioane dintr-un singur document. În FreeCAD, totuși, acestea au mai puțină utilizare și sunt mai mult acolo, astfel încât să puteți importa obiecte în formate de plasă (.stl, .obj) din alte aplicații. De asemenea, a fost utilizat extensiv ca modul principal de testare în prima lună a vieții FreeCAD.

Obiectele tip Plasă/rețea de discretizare/meshes și obiectele FreeCAD sunt lucruri diferite. Puteți vedea obiectul FreeCAD ca un container pentru un obiect Mesh (cum ar fi, vom vedea mai jos, și pentru obiectele Piese de asemenea). Deci, pentru a adăuga un obiect tip plasă la FreeCAD, trebuie mai întâi să creăm un obiect FreeCAD și un obiect Mesh, apoi să adăugăm obiectul Mesh la obiectul FreeCAD:

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

Acesta este un exemplu standard, care folosește metoda createSphere() pentru a crea automat o sferă, dar puteți crea foarte bine plase/mesh-uri personalizate de la zero, definindu-le vârfurile și fețele.

Read more about mesh scripting...

top

Piese

Part Module este modulul cel mai puternic din întregul FreeCAD. Permite crearea și manipularea obeictelor BRep. Acest tip de obiect, spre deosebire de Plase cu ochiuri, poate avea o mare varietate de componente. Pentru a rezuma, Brep înseamnă Boundary Representation-Reprezentarea limitelor, ceea ce înseamnă că ele sunt definite de către suprafețele lor, care cuprind și definesc un volum interior. Aceste suprafețe pot fi o varietate de lucruri, cum ar fi fațetele plane sau suprafețele NURBS foarte complexe. Ele poartă, de asemenea, conceptul de volum.

The Part Module is the most powerful module in the whole of FreeCAD. It allows you to create and manipulate 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.

Modulul /Atelierul Piese se bazeză pe putrnica bilbiotecă OpenCasCade bibliotecă, care permite o gamă largă de operații complexe să fie ușor de realizat pe acele obiecte, cum ar fi operațiile booleene, filetarea, lofts etc.

Modulul Part/Piese funcționează la fel ca modulul Mesh/Plase: Creați un obiect FreeCAD, un obiect Part, apoi adăugați obiectul Part la obiectul FreeCAD:

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

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

Modulul Part (cum ar fi modulul Mesh) are, de asemenea, o comandă rapidă care creează automat un obiect FreeCAD și adaugă o formă pentru acesta, astfel încât să puteți sări peste cele trei linii de mai sus:

Part.show(myshape)

Prin explorarea conținutului myshape, veți observa multe subcomponente interesante cum ar fi Faces/Fațete, margini/muchii, vârfuri, solide sau forme coji și o gamă largă de operații de geometrie, cum ar fi substractivitatea (scăderea), comunitatea (intersecția) sau fuziunea (uniunea). Pagina cu Scriptarea datelor topologice explică toate detaliile.

top

Desen 2 D

Careacteristicile FreeCAD features sunt în multe module, ca de exemplu Sketcher ori Draft, care creează, de asemenea, obiecte Piese, dar adaugă parametri sau chiar abordează o nouă modalitate de a gestiona geometria pieselor în ele. Exemplul casetei de mai sus este un exemplu perfect de obiect parametric. Tot ce aveți nevoie, pentru a defini caseta, este să specificați câțiva parametri, cum ar fi înălțimea, lățimea și lungimea. Pe baza acestora, obiectul va calcula automat forma piesei sale. FreeCAD vă permite să create such objects in python.

FreeCAD features many more modules, such as Sketcher and 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 create such objects in Python.

Draft Module adaugă câteva tipuri de obiecte parametrice 2D parametric (care sunt toate obiecte Part) ca de exemplu linile și cercurile, și oferă, de asemenea, câteva funcții generice care funcționează nu numai pe obiectele create de Draft, ci și pe orice obiect Part. Pentru a explora ceea ce este disponibil, pur și simplu faceți:

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

top

Interfață

Interfața user a FreeCAD este realizată cu Qt, un sistem puternic de interfață grafică, responsabil pentru desenarea și manipularea tuturor comenzilor, meniurilor, barelor de instrumente, butoanelor în jurul vizualizării 3D. Qt oferă un modul, numit PySide, care permite Python-ului să acceseze și să modifice interfețele Qt, cum ar fi FreeCAD. Să încercăm să modificăm interfața Qt și să producem un dialog simplu:

The FreeCAD user interface is made with Qt, a powerful graphical interface system, responsible for drawing and handling all the controls, menus, toolbars and buttons around the 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:

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

Vedeți că dialogul care apare are pictograma FreeCAD din bara de instrumente, ceea ce înseamnă că Qt știe că ordinul a fost emis din interiorul aplicației FreeCAD. Prin urmare, putem manipula direct orice parte a interfeței FreeCAD.

Qt este un sistem de interfață foarte puternic, care vă permite să faceți lucruri foarte complexe, dar are și câteva instrumente foarte ușor de folosit, cum ar fi designerul Qt, cu care puteți crea dialoguri grafic și apoi le puteți adăuga la interfața FreeCAD cu câteva linii de python.

Read more about PySide here...

top

Macro-uri

Acum, că aveți o bună înțelegere a principiilor de bază, unde vom păstra scripturile noastre Python și cum le vom lansa cu ușurință de pe FreeCAD? Există un mecanism ușor pentru acesta, numit Macros. O macrocomandă este pur și simplu un script python, care poate fi apoi adăugat la o bară de instrumente și poate fi lansat printr-un simplu click de mouse. FreeCAD vă oferă un editor simplu de text (Macro -> Macros -> Creare) unde puteți scrie sau lipi scripturi. După ce s-a terminat, Instrumentele -> Customize -> Macro-urile vă permit să definiți un buton pentru acesta, care poate fi adăugat la barele de instrumente.

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. 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 (Macro → Macros... → Create) where you can write or paste scripts. Once the script is done, use Tools → Customize... → Macros to define a button for it that can be added to toolbars.

Acum sunteți gata pentru mai multă programare/script FreeCAD în profunzime. Deplasați-vă la Power users hub!

top

Introduction to Python
FreeCAD Scripting Basics