FreeCAD Scripting Basics/ro: Difference between revisions

From FreeCAD Documentation
(Updating to match new version of source page)
(Updating to match new version of source page)
(8 intermediate revisions by the same user not shown)
Line 1: Line 1:
<languages/>
<languages/>
{{docnav|Python scripting tutorial|Mesh Scripting}}


{{Docnav
|[[Python_scripting_tutorial|Python scripting tutorial]]
|[[Scripting_examples|Overview of Python scripting pages]]
}}

{{TOCright}}

<div class="mw-translate-fuzzy">
== Programarea script Python in FreeCAD ==
== Programarea script Python in FreeCAD ==
FreeCAD este construit de la zero pentru a fi controlat total de scripturile Python. Aproape toate componentele FreeCAD, cum ar fi interfața, conținutul scenelor și chiar reprezentarea acestui conținut în vizualizările 3D, sunt accesibile din interpretorul Python încorporat sau din propriile dvs. scripturi. Drept urmare, FreeCAD este probabil una dintre aplicațiile de inginerie cele mai profunde disponibile astăzi.
FreeCAD este construit de la zero pentru a fi controlat total de scripturile Python. Aproape toate componentele FreeCAD, cum ar fi interfața, conținutul scenelor și chiar reprezentarea acestui conținut în vizualizările 3D, sunt accesibile din interpretorul Python încorporat sau din propriile dvs. scripturi. Drept urmare, FreeCAD este probabil una dintre aplicațiile de inginerie cele mai profunde disponibile astăzi.
</div>


FreeCAD is built from scratch to be totally controlled by Python scripts. Almost all parts of FreeCAD, such as the interface, the scene contents, and even the representation of this content in the 3D views, are accessible from the built-in Python interpreter or from your own scripts. As a result, FreeCAD is probably one of the most deeply customizable engineering applications available today.
În starea sa actuală însă, FreeCAD are foarte puține comenzi "native" pentru a interacționa cu obiectele 3D, în principal pentru că se află încă în stadiu incipient de dezvoltare, dar și pentru că filozofia din spatele ei este mai degrabă o platformă pentru dezvoltarea CAD decât o aplicație specifică de utilizare. Dar ușurința scripturilor Python din cadrul FreeCAD este o modalitate rapidă de a vedea noi funcționalități dezvoltate de "utilizatorii de putere", de obicei utilizatorii care cunosc un pic de programare Python. Python este una dintre cele mai cunoscute limbi interpretate și, în general, este considerată ușor de învățat, și tu în curând poți crea propriile script-uri de utilizator ale PowerCAD.


<div class="mw-translate-fuzzy">
Dacă nu sunteți familiarizat cu Python, vă recomandăm să căutați tutoriale pe internet și să vă aruncați o privire rapidă asupra structurii sale. Python este un limbaj de programare foarte ușor de învățat, mai ales pentru că poate fi rulat în interiorul unui interpretor, unde comenzile simple, chiar până la finalizarea programelor, pot fi executate în zbor fără a fi nevoie să compilați nimic. FreeCAD are un interpretor Python încorporat. Dacă nu vedeți fereastra etichetată "Consola Python" așa cum se arată mai jos, o puteți activa sub consola View -> Panels -> Python pentru a deschide interpretorul.
Dacă nu sunteți familiarizat cu Python, vă recomandăm să căutați tutoriale pe internet și să vă aruncați o privire rapidă asupra structurii sale. Python este un limbaj de programare foarte ușor de învățat, mai ales pentru că poate fi rulat în interiorul unui interpretor, unde comenzile simple, chiar până la finalizarea programelor, pot fi executate în zbor fără a fi nevoie să compilați nimic. FreeCAD are un interpretor Python încorporat. Dacă nu vedeți fereastra etichetată "Consola Python" așa cum se arată mai jos, o puteți activa sub consola View -> Panels -> Python pentru a deschide interpretorul.
</div>


<div class="mw-translate-fuzzy">
===Interpretorul===
===Interpretorul===
Din interpretor, puteți accesa toate modulele Python instalate de sistem, precum și modulele FreeCAD încorporate și toate modulele FreeCAD suplimentare instalate ulterior. Imaginea de mai jos prezintă interpretorul Python:
Din interpretor, puteți accesa toate modulele Python instalate de sistem, precum și modulele FreeCAD încorporate și toate modulele FreeCAD suplimentare instalate ulterior. Imaginea de mai jos prezintă interpretorul Python:
</div>

From the interpreter, you can access all your system-installed Python modules, as well as the built-in FreeCAD modules, and all additional FreeCAD modules you installed later. The screenshot below shows the Python interpreter:


[[Image:screenshot_pythoninterpreter.jpg|The FreeCAD Python interpreter]]
[[Image:screenshot_pythoninterpreter.jpg|The FreeCAD Python interpreter]]


<div class="mw-translate-fuzzy">
Din interpretor, puteți executa codul Python și puteți naviga prin clasele și funcțiile disponibile. FreeCAD oferă un browser al claselor foarte util pentru explorarea noii tale lumi FreeCAD: Când introduceți numele unei clase cunoscute, urmată de un punct (adică doriți să adăugați ceva din acea clasă), se deschide o fereastră de browser de clasă, unde puteți naviga între subclasele și metodele disponibile. Când selectați ceva, este afișat un text de ajutor asociat (dacă există):
Din interpretor, puteți executa codul Python și puteți naviga prin clasele și funcțiile disponibile. FreeCAD oferă un browser al claselor foarte util pentru explorarea noii tale lumi FreeCAD: Când introduceți numele unei clase cunoscute, urmată de un punct (adică doriți să adăugați ceva din acea clasă), se deschide o fereastră de browser de clasă, unde puteți naviga între subclasele și metodele disponibile. Când selectați ceva, este afișat un text de ajutor asociat (dacă există):
</div>


[[Image:screenshot_classbrowser.jpg|The FreeCAD class browser]]
[[Image:screenshot_classbrowser.jpg|The FreeCAD class browser]]


<div class="mw-translate-fuzzy">
Așa că, începeți aici tastând '''App.''' ori '''Gui.''' și priviți ce e
Așa că, începeți aici tastând '''App.''' ori '''Gui.''' și priviți ce e
tâmplă. O altă modalitate mai generală de a explora conținutul modulelor și claselor este utilizarea comenenzii Python'print dir()'. De exemplu, tastați '''print dir()''' și veți obține o listă a tuturor modulelor încărcat curent în FreeCAD. '''print dir(App)''' vă va arăta tot ceea ce este în interiorul modulelro App, etc.
tâmplă. O altă modalitate mai generală de a explora conținutul modulelor și claselor este utilizarea comenenzii Python'print dir()'. De exemplu, tastați '''print dir()''' și veți obține o listă a tuturor modulelor încărcat curent în FreeCAD. '''print dir(App)''' vă va arăta tot ceea ce este în interiorul modulelro App, etc.
</div>


<div class="mw-translate-fuzzy">
O altă caracteristică utilă a interpretului este posibilitatea de a reveni prin istoria comenzilor și de a recupera o linie de cod pe care ați introdus-o deja mai devreme. Pentru a naviga prin istoricul comenzilor, trebuie doar să le utilizați CTRL+UP or CTRL+DOWN.
O altă caracteristică utilă a interpretului este posibilitatea de a reveni prin istoria comenzilor și de a recupera o linie de cod pe care ați introdus-o deja mai devreme. Pentru a naviga prin istoricul comenzilor, trebuie doar să le utilizați CTRL+UP or CTRL+DOWN.
</div>


Dacă faceți clic dreapta în fereastra interpretului, aveți și alte câteva opțiuni, cum ar fi copierea întregului istoric (util atunci când doriți să experimentați lucrurile înainte de a face un script complet al acestora) sau introduceți un nume de fișier cu cale completă.
Dacă faceți clic dreapta în fereastra interpretului, aveți și alte câteva opțiuni, cum ar fi copierea întregului istoric (util atunci când doriți să experimentați lucrurile înainte de a face un script complet al acestora) sau introduceți un nume de fișier cu cale completă.


[[#top|top]]

<div class="mw-translate-fuzzy">
===Python Help===
===Python Help===
În meniul de ajutor al FreeCAD veți găsi o intrare intitulată "Ajutor Python", care va deschide o fereastră de browser care conține o documentație completă, generată în timp real, a tuturor modulelor Python disponibile pentru interpretorul FreeCAD, inclusiv modulele Python și FreeCAD încorporate , modulele instalate în sistem și modulele suplimentare FreeCAD. Documentația disponibilă depinde de efortul fiecărui dezvoltator de module în documentarea codului său, dar, de obicei, modulele Python au o reputație de a fi destul de bine documentate. Fereastra FreeCAD trebuie să rămână deschisă pentru ca acest sistem de documentare să funcționeze.
În meniul de ajutor al FreeCAD veți găsi o intrare intitulată "Ajutor Python", care va deschide o fereastră de browser care conține o documentație completă, generată în timp real, a tuturor modulelor Python disponibile pentru interpretorul FreeCAD, inclusiv modulele Python și FreeCAD încorporate , modulele instalate în sistem și modulele suplimentare FreeCAD. Documentația disponibilă depinde de efortul fiecărui dezvoltator de module în documentarea codului său, dar, de obicei, modulele Python au o reputație de a fi destul de bine documentate. Fereastra FreeCAD trebuie să rămână deschisă pentru ca acest sistem de documentare să funcționeze.
</div>


In the FreeCAD {{MenuCommand|Help}} menu, you'll find an entry labeled {{MenuCommand|Automatic python modules documentation}}, which will open a browser window containing a complete, realtime-generated documentation of all Python modules available to the FreeCAD interpreter, including Python and FreeCAD built-in modules, system-installed modules, and FreeCAD additional modules. The documentation available there depends on how much effort each module developer put into documenting his code, but Python modules have a reputation for being fairly well documented. Your FreeCAD window must stay open for this documentation system to work.
The entry {{MenuCommand|Python scripting documentation}} will give you a quick link to the [[Power_users_hub|Power users hub]] wiki section.

[[#top|top]]

<div class="mw-translate-fuzzy">
==Module integrate==
==Module integrate==
Deoarece FreeCAD este proiectat să ruleze fără o interfață grafică de utilizator (GUI), aproape toate funcționalitățile sale sunt separate în două grupuri: funcționalitatea Core, numită "App", și funcționalitatea GUI, numită "Gui". Deci, cele două module principale FreeCAD încorporate se numesc App și Gui. Aceste două module pot fi accesate, de asemenea, din scripturile din afara interpretului, prin numele "FreeCAD" și respectiv "FreeCADGui".
Deoarece FreeCAD este proiectat să ruleze fără o interfață grafică de utilizator (GUI), aproape toate funcționalitățile sale sunt separate în două grupuri: funcționalitatea Core, numită "App", și funcționalitatea GUI, numită "Gui". Deci, cele două module principale FreeCAD încorporate se numesc App și Gui. Aceste două module pot fi accesate, de asemenea, din scripturile din afara interpretului, prin numele "FreeCAD" și respectiv "FreeCADGui".
</div>

Since FreeCAD is designed so that it can also be run without a Graphical User Interface (GUI), almost all its functionality is separated into two groups: Core functionality, named {{incode|App}}, and GUI functionality, named {{incode|Gui}}. These two modules can also be accessed from scripts outside of the interpreter, by the names {{incode|FreeCAD}} and {{incode|FreeCADGui}} respectively.


<div class="mw-translate-fuzzy">
* In '''App module''', veți găsi totul în legătură cu aplicația în sine, cum ar fi metodele de deschidere sau închidere a fișierelor și documentelor, cum ar fi setarea documentului activ sau listarea conținutului acestuia.
* In '''App module''', veți găsi totul în legătură cu aplicația în sine, cum ar fi metodele de deschidere sau închidere a fișierelor și documentelor, cum ar fi setarea documentului activ sau listarea conținutului acestuia.
</div>


<div class="mw-translate-fuzzy">
* In '''Gui module''', veți găsi instrumente pentru accesarea și gestionarea elementelor Gui, cum ar fi Atelierele de lucru și barele lor de instrumente și, mai interesant, reprezentarea grafică a conținutului FreeCAD.
* In '''Gui module''', veți găsi instrumente pentru accesarea și gestionarea elementelor Gui, cum ar fi Atelierele de lucru și barele lor de instrumente și, mai interesant, reprezentarea grafică a conținutului FreeCAD.
</div>


<div class="mw-translate-fuzzy">
Afișarea întregului conținut al acestor module este o sarcină puțin contraproductivă, deoarece acestea cresc destul de repede cu dezvoltarea FreeCAD. Dar cele două instrumente de navigare furnizate (browserul de clasă și Python help) vă vor oferi, în orice moment, o documentație completă și actualizată a acestor module.
Afișarea întregului conținut al acestor module este o sarcină puțin contraproductivă, deoarece acestea cresc destul de repede cu dezvoltarea FreeCAD. Dar cele două instrumente de navigare furnizate (browserul de clasă și Python help) vă vor oferi, în orice moment, o documentație completă și actualizată a acestor module.
</div>


[[#top|top]]

<div class="mw-translate-fuzzy">
===Obiectele App și Gui===
===Obiectele App și Gui===
Așa cum am spus, în FreeCAD, totul este separat între nucleu și reprezentare. Aceasta include și obiectele 3D. Puteți accesa definirea proprietăților obiectelor (numite funcții în FreeCAD) prin modulul App și modificați modul în care sunt reprezentate pe ecran prin modulul Gui. De exemplu, un cub are proprietăți care îl definesc (cum ar fi lățimea, lungimea, înălțimea) stocate într-un obiect App și proprietăți de reprezentare (cum ar fi culoarea fețetelor, modul de desenare) stocate într-un obiect Gui corespunzător.
Așa cum am spus, în FreeCAD, totul este separat între nucleu și reprezentare. Aceasta include și obiectele 3D. Puteți accesa definirea proprietăților obiectelor (numite funcții în FreeCAD) prin modulul App și modificați modul în care sunt reprezentate pe ecran prin modulul Gui. De exemplu, un cub are proprietăți care îl definesc (cum ar fi lățimea, lungimea, înălțimea) stocate într-un obiect App și proprietăți de reprezentare (cum ar fi culoarea fețetelor, modul de desenare) stocate într-un obiect Gui corespunzător.
</div>

As already mentioned, in FreeCAD everything is separated into core and representation. This includes the 3D objects. You can access defining properties of objects (called features in FreeCAD) via the {{incode|App}} module, and change the way they are represented on screen via the {{incode|Gui}} module. For example, a cube has properties that define it (like width, length, height) that are stored in an {{incode|App}} object, and representation properties (like faces color, drawing mode) that are stored in a corresponding {{incode|Gui}} object.


Acest mod de a face lucrurile permite o gamă largă de utilizări, cum ar fi ca algoritmii să funcționeze numai pe partea de definire a caracteristicilor, fără a avea nevoie să aibă grijă de nicio parte vizuală sau chiar să redirecționeze conținutul documentului la o aplicație non-grafică ca liste, foi de calcul sau analiza elementului finit.
Acest mod de a face lucrurile permite o gamă largă de utilizări, cum ar fi ca algoritmii să funcționeze numai pe partea de definire a caracteristicilor, fără a avea nevoie să aibă grijă de nicio parte vizuală sau chiar să redirecționeze conținutul documentului la o aplicație non-grafică ca liste, foi de calcul sau analiza elementului finit.


<div class="mw-translate-fuzzy">
Pentru fiecare obiect App din document, există un obiect Gui corespunzător. De fapt documentul în sine are atât obiecte App cât și obiecte Gui. Acest lucru, desigur, este valabil numai când rulați FreeCAD cu interfața sa completă. În versiunea de linie de comandă nu există nici o interfață grafică, astfel încât numai obiectele App sunt disponibile. Rețineți că partea Gui a obiectelor este re-generată de fiecare dată când un obiect App este marcat ca fiind "pentru a fi recalculat" (de exemplu, când unul dintre parametrii lui se modifică), astfel încât modificările pe care le-ați fi putut face direct la obiectul Gui pot fi pierdute.
Pentru fiecare obiect App din document, există un obiect Gui corespunzător. De fapt documentul în sine are atât obiecte App cât și obiecte Gui. Acest lucru, desigur, este valabil numai când rulați FreeCAD cu interfața sa completă. În versiunea de linie de comandă nu există nici o interfață grafică, astfel încât numai obiectele App sunt disponibile. Rețineți că partea Gui a obiectelor este re-generată de fiecare dată când un obiect App este marcat ca fiind "pentru a fi recalculat" (de exemplu, când unul dintre parametrii lui se modifică), astfel încât modificările pe care le-ați fi putut face direct la obiectul Gui pot fi pierdute.
</div>


<div class="mw-translate-fuzzy">
Pentru a acesa partea App a unui obiect oarecare, scrieți:
Pentru a acesa partea App a unui obiect oarecare, scrieți:
</div>

{{Code|code=
{{Code|code=
myObject = App.ActiveDocument.getObject("ObjectName")
myObject = App.ActiveDocument.getObject("ObjectName")
}}
}}

<div class="mw-translate-fuzzy">
unde "ObjectName" este numele obiectului dvs. Puteți de asemenea tasta:
unde "ObjectName" este numele obiectului dvs. Puteți de asemenea tasta:
</div>

{{Code|code=
{{Code|code=
myObject = App.ActiveDocument.ObjectName
myObject = App.ActiveDocument.ObjectName
}}
}}

<div class="mw-translate-fuzzy">
Pentru a accesa partea Gui a aceluiași obiect, scrieți:
Pentru a accesa partea Gui a aceluiași obiect, scrieți:
</div>

{{Code|code=
{{Code|code=
myViewObject = Gui.ActiveDocument.getObject("ObjectName")
myViewObject = Gui.ActiveDocument.getObject("ObjectName")
}}
}}

<div class="mw-translate-fuzzy">
unde "ObjectName" este numele obeictului duvs. Puteți de asemena tasta:
unde "ObjectName" este numele obeictului duvs. Puteți de asemena tasta:
</div>

{{Code|code=
{{Code|code=
myViewObject = App.ActiveDocument.ObjectName.ViewObject
myViewObject = App.ActiveDocument.ObjectName.ViewObject
}}
}}

<div class="mw-translate-fuzzy">
Dacă nu aveți nici un GUI (de exemplul sunten în modul linie-de-comandă), ultima linie va returna 'None'.
Dacă nu aveți nici un GUI (de exemplul sunten în modul linie-de-comandă), ultima linie va returna 'None'.
</div>

[[#top|top]]


<div class="mw-translate-fuzzy">
=== Obiectele Documentului ===
=== Obiectele Documentului ===
În FreeCAD, toată munca dvs. se află în interiorul Documentelor. Un document conține geometria și poate fi salvat într-un fișier. Mai multe documente pot fi deschise în același timp. Documentul, ca geometria conținută în interior, are obiecte App și Gui. Obiectul App conține definițiile de geometrie reale, în timp ce obiectul Gui conține vederile diferite ale documentului. Puteți deschide mai multe ferestre, fiecare vizionând munca dvs. cu un alt factor de zoom sau unghi de vedere diferit. Aceste viziuni fac parte din obiectul Gui al documentului dvs.
În FreeCAD, toată munca dvs. se află în interiorul Documentelor. Un document conține geometria și poate fi salvat într-un fișier. Mai multe documente pot fi deschise în același timp. Documentul, ca geometria conținută în interior, are obiecte App și Gui. Obiectul App conține definițiile de geometrie reale, în timp ce obiectul Gui conține vederile diferite ale documentului. Puteți deschide mai multe ferestre, fiecare vizionând munca dvs. cu un alt factor de zoom sau unghi de vedere diferit. Aceste viziuni fac parte din obiectul Gui al documentului dvs.
</div>


In FreeCAD all your work resides inside documents. A document contains your geometry and can be saved to a file. Several documents can be opened at the same time. The document, like the geometry contained inside, has {{incode|App}} and {{incode|Gui}} objects. The {{incode|App}} object contains your actual geometry definitions, while the {{incode|Gui}} object contains the different views of your document. You can open several windows, each one viewing your work with a different zoom factor or from a different direction. These views are all part of your document's {{incode|Gui}} object.

<div class="mw-translate-fuzzy">
Pentru a accesa partea App a documentului curent deschis (activ), scrieți:
Pentru a accesa partea App a documentului curent deschis (activ), scrieți:
</div>

{{Code|code=
{{Code|code=
myDocument = App.ActiveDocument
myDocument = App.ActiveDocument
}}
}}

Pentru a crea un nou documente, scrieți:
Pentru a crea un nou documente, scrieți:

{{Code|code=
{{Code|code=
myDocument = App.newDocument("Document Name")
myDocument = App.newDocument("Document Name")
}}
}}

<div class="mw-translate-fuzzy">
Pentru a accesa partea Gui documentul deschis (activ), tastați:
Pentru a accesa partea Gui documentul deschis (activ), tastați:
</div>

{{Code|code=
{{Code|code=
myGuiDocument = Gui.ActiveDocument
myGuiDocument = Gui.ActiveDocument
}}
}}

Pentru a accesa vederea curentă, scrieți:
Pentru a accesa vederea curentă, scrieți:

{{Code|code=
{{Code|code=
myView = Gui.ActiveDocument.ActiveView
myView = Gui.ActiveDocument.ActiveView
}}
}}

[[#top|top]]

<div class="mw-translate-fuzzy">
== Utilizarea de module adiționale ==
== Utilizarea de module adiționale ==
Modulele FreeCAD și FreeCADGui sunt singurele responsabile pentru crearea și gestionarea obiectelor din documentul FreeCAD. Ele nu fac de fapt nimic, cum ar fi crearea sau modificarea geometriei. Aceasta deoarece această geometrie poate fi de mai multe tipuri și astfel este gestionată de module suplimentare, fiecare responsabil pentru gestionarea unui anumit tip de geometrie. De exemplu, [[Part Module]] utilizează kernelul OpenCascade și, prin urmare, este capabil să creeze și să manipuleze [http://en.wikipedia.org/wiki/Boundary_representation B-rep] type geometry, ceea ce este construit pentru OpenCascade. Modul [[Mesh Module]] poate construi și modifica obiecte tip plase. În acest fel, FreeCAD este capabil să gestioneze o mare varietate de tipuri de obiecte, care pot coexista în același document, iar noi tipuri pot fi adăugate cu ușurință în viitor.
Modulele FreeCAD și FreeCADGui sunt singurele responsabile pentru crearea și gestionarea obiectelor din documentul FreeCAD. Ele nu fac de fapt nimic, cum ar fi crearea sau modificarea geometriei. Aceasta deoarece această geometrie poate fi de mai multe tipuri și astfel este gestionată de module suplimentare, fiecare responsabil pentru gestionarea unui anumit tip de geometrie. De exemplu, [[Part Module]] utilizează kernelul OpenCascade și, prin urmare, este capabil să creeze și să manipuleze [http://en.wikipedia.org/wiki/Boundary_representation B-rep] type geometry, ceea ce este construit pentru OpenCascade. Modul [[Mesh Module]] poate construi și modifica obiecte tip plase. În acest fel, FreeCAD este capabil să gestioneze o mare varietate de tipuri de obiecte, care pot coexista în același document, iar noi tipuri pot fi adăugate cu ușurință în viitor.
</div>


The {{incode|FreeCAD}} and {{incode|FreeCADGui}} modules are only responsible for creating and managing objects in the FreeCAD document. They don't actually do anything more such as creating or modifying geometry. This is because that geometry can be of several types, and therefore requires additional modules, each responsible for managing a certain geometry type. For example, the [[Part Module|Part Module]], using the OpenCascade kernel, is able to create and manipulate [http://en.wikipedia.org/wiki/Boundary_representation BRep] type geometry. Whereas the [[Mesh Module|Mesh Module]] is able to build and modify mesh objects. In this manner FreeCAD is able to handle a wide variety of object types, that can all coexist in the same document, and new types can easily be added in the future.

[[#top|top]]

<div class="mw-translate-fuzzy">
=== Crearea obiectelor ===
=== Crearea obiectelor ===
Fiecare modul are propriul mod de a trata geometria sa, dar un lucru pe care, de obicei, pot să-l facă este să creeze obiecte în document. Dar documentul FreeCAD este, de asemenea, conștient de tipurile de obiecte disponibile furnizate de module:
Fiecare modul are propriul mod de a trata geometria sa, dar un lucru pe care, de obicei, pot să-l facă este să creeze obiecte în document. Dar documentul FreeCAD este, de asemenea, conștient de tipurile de obiecte disponibile furnizate de module:
</div>

Each module has its own way of dealing with geometry, but one thing they usually all can do is create objects in the document. But the FreeCAD document is also aware of the available object types provided by the modules:

{{Code|code=
{{Code|code=
FreeCAD.ActiveDocument.supportedTypes()
FreeCAD.ActiveDocument.supportedTypes()
}}
}}

<div class="mw-translate-fuzzy">
vă va lista toate obiectele posibile pe care le puteți crea. De exemplu, să creăm o plasă (tratată de modulul Mesh/Plasă) și o Piesă (tratată de modulul Part/Piesă):
vă va lista toate obiectele posibile pe care le puteți crea. De exemplu, să creăm o plasă (tratată de modulul Mesh/Plasă) și o Piesă (tratată de modulul Part/Piesă):
</div>

{{Code|code=
{{Code|code=
myMesh = FreeCAD.ActiveDocument.addObject("Mesh::Feature","myMeshName")
myMesh = FreeCAD.ActiveDocument.addObject("Mesh::Feature", "myMeshName")
myPart = FreeCAD.ActiveDocument.addObject("Part::Feature","myPartName")
myPart = FreeCAD.ActiveDocument.addObject("Part::Feature", "myPartName")
}}
}}

<div class="mw-translate-fuzzy">
Primul argument este tipul de obiect, al doilea este numele obiectului. Cele două obiecte arată aproape la fel: nu conțin încă nicio geometrie și majoritatea proprietăților lor sunt aceleași când le inspectați cu dir(myMesh) și dir(myPart). Cu o excepție, myMesh are o proprietate "Mesh" și "Part" are o proprietate "Shape". Acesta este locul în care sunt stocate datele de Plasă și Piesă. De exemplu, să creăm un cub Part și să îl stocăm în obiectul myPart:
Primul argument este tipul de obiect, al doilea este numele obiectului. Cele două obiecte arată aproape la fel: nu conțin încă nicio geometrie și majoritatea proprietăților lor sunt aceleași când le inspectați cu dir(myMesh) și dir(myPart). Cu o excepție, myMesh are o proprietate "Mesh" și "Part" are o proprietate "Shape". Acesta este locul în care sunt stocate datele de Plasă și Piesă. De exemplu, să creăm un cub Part și să îl stocăm în obiectul myPart:
</div>

{{Code|code=
{{Code|code=
import Part
import Part
cube = Part.makeBox(2,2,2)
cube = Part.makeBox(2, 2, 2)
myPart.Shape = cube
myPart.Shape = cube
}}
}}

<div class="mw-translate-fuzzy">
Puteți încerca să stocați cubul în interiorul proprietății Mesh-ului obiectului myMesh, va veni o eroare în care se plânge despre tipul greșit. Aceasta se datorează faptului că aceste proprietăți sunt făcute pentru a stoca numai un anumit tip. În proprietatea MyMesh a Mesh, puteți salva numai chestii create cu modulul Mesh. Rețineți că majoritatea modulelor au, de asemenea, o comandă rapidă pentru a adăuga geometria lor la document:
Puteți încerca să stocați cubul în interiorul proprietății Mesh-ului obiectului myMesh, va veni o eroare în care se plânge despre tipul greșit. Aceasta se datorează faptului că aceste proprietăți sunt făcute pentru a stoca numai un anumit tip. În proprietatea MyMesh a Mesh, puteți salva numai chestii create cu modulul Mesh. Rețineți că majoritatea modulelor au, de asemenea, o comandă rapidă pentru a adăuga geometria lor la document:
</div>

{{Code|code=
{{Code|code=
import Part
import Part
cube = Part.makeBox(2,2,2)
cube = Part.makeBox(2, 2, 2)
Part.show(cube)
Part.show(cube)
}}
}}

[[#top|top]]

<div class="mw-translate-fuzzy">
=== Modificarea obiectelor ===
=== Modificarea obiectelor ===
Modificarea unui obiect este făcută în același mod:
Modificarea unui obiect este făcută în același mod:
</div>

Modifying an object is done in the same way:

{{Code|code=
{{Code|code=
import Part
import Part
cube = Part.makeBox(2,2,2)
cube = Part.makeBox(2, 2, 2)
myPart.Shape = cube
myPart.Shape = cube
}}
}}

Acum, să schimbăm forma printr-o formă mai mare:
Acum, să schimbăm forma printr-o formă mai mare:

{{Code|code=
{{Code|code=
biggercube = Part.makeBox(5,5,5)
biggercube = Part.makeBox(5, 5, 5)
myPart.Shape = biggercube
myPart.Shape = biggercube
}}
}}

[[#top|top]]

<div class="mw-translate-fuzzy">
=== Interogarea obiectelor ===
=== Interogarea obiectelor ===
Puteți să vă uitați mereu la tipul de obiect ca acesta:
Puteți să vă uitați mereu la tipul de obiect ca acesta:
</div>

You can always look at the type of an object like this:

{{Code|code=
{{Code|code=
myObj = FreeCAD.ActiveDocument.getObject("myObjectName")
myObj = FreeCAD.ActiveDocument.getObject("myObjectName")
print myObj.TypeId
print(myObj.TypeId)
}}
}}

<div class="mw-translate-fuzzy">
sau să știm dacă un obiect este derivat dintr-unul dintre cele de bază (Part Feature, Mesh Feature, etc):
sau să știm dacă un obiect este derivat dintr-unul dintre cele de bază (Part Feature, Mesh Feature, etc):
</div>

{{Code|code=
{{Code|code=
print myObj.isDerivedFrom("Part::Feature")
print(myObj.isDerivedFrom("Part::Feature"))
}}
}}

<div class="mw-translate-fuzzy">
Acum puteți începe să jucați cu FreeCAD! Pentru a vedea ce puteți face cu [[Part Module]], citiți pagina [[Topological data scripting | Pare scripting]], sau pagina [[Mesh Scripting]]pentru a lucra cu [[Mesh Module]].Rețineți că, deși modulele Parte și Mesh sunt cele mai complete și utilizate pe scară largă, alte module cum ar fi [[Draft Module]] au, de asemenea, [[Draft API|scripting]] APIs care vă pate fi utili.Pentru o listă completă a fiecărui modul și a instrumentelor disponibile, vizitați secțiunea [[:Category:API]].
Acum puteți începe să jucați cu FreeCAD! Pentru a vedea ce puteți face cu [[Part Module]], citiți pagina [[Topological data scripting | Pare scripting]], sau pagina [[Mesh Scripting]]pentru a lucra cu [[Mesh Module]].Rețineți că, deși modulele Parte și Mesh sunt cele mai complete și utilizate pe scară largă, alte module cum ar fi [[Draft Module]] au, de asemenea, [[Draft API|scripting]] APIs care vă pate fi utili.Pentru o listă completă a fiecărui modul și a instrumentelor disponibile, vizitați secțiunea [[:Category:API]].
</div>


[[#top|top]]
{{docnav|Python scripting tutorial|Mesh Scripting}}


<div class="mw-translate-fuzzy">
[[Category:Poweruser Documentation/ro]]
{{docnav|Python scripting tutorial|Mesh Scripting}}
</div>


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

Revision as of 21:07, 23 August 2020

Programarea script Python in FreeCAD

FreeCAD este construit de la zero pentru a fi controlat total de scripturile Python. Aproape toate componentele FreeCAD, cum ar fi interfața, conținutul scenelor și chiar reprezentarea acestui conținut în vizualizările 3D, sunt accesibile din interpretorul Python încorporat sau din propriile dvs. scripturi. Drept urmare, FreeCAD este probabil una dintre aplicațiile de inginerie cele mai profunde disponibile astăzi.

FreeCAD is built from scratch to be totally controlled by Python scripts. Almost all parts of FreeCAD, such as the interface, the scene contents, and even the representation of this content in the 3D views, are accessible from the built-in Python interpreter or from your own scripts. As a result, FreeCAD is probably one of the most deeply customizable engineering applications available today.

Dacă nu sunteți familiarizat cu Python, vă recomandăm să căutați tutoriale pe internet și să vă aruncați o privire rapidă asupra structurii sale. Python este un limbaj de programare foarte ușor de învățat, mai ales pentru că poate fi rulat în interiorul unui interpretor, unde comenzile simple, chiar până la finalizarea programelor, pot fi executate în zbor fără a fi nevoie să compilați nimic. FreeCAD are un interpretor Python încorporat. Dacă nu vedeți fereastra etichetată "Consola Python" așa cum se arată mai jos, o puteți activa sub consola View -> Panels -> Python pentru a deschide interpretorul.

Interpretorul

Din interpretor, puteți accesa toate modulele Python instalate de sistem, precum și modulele FreeCAD încorporate și toate modulele FreeCAD suplimentare instalate ulterior. Imaginea de mai jos prezintă interpretorul Python:

From the interpreter, you can access all your system-installed Python modules, as well as the built-in FreeCAD modules, and all additional FreeCAD modules you installed later. The screenshot below shows the Python interpreter:

The FreeCAD Python interpreter

Din interpretor, puteți executa codul Python și puteți naviga prin clasele și funcțiile disponibile. FreeCAD oferă un browser al claselor foarte util pentru explorarea noii tale lumi FreeCAD: Când introduceți numele unei clase cunoscute, urmată de un punct (adică doriți să adăugați ceva din acea clasă), se deschide o fereastră de browser de clasă, unde puteți naviga între subclasele și metodele disponibile. Când selectați ceva, este afișat un text de ajutor asociat (dacă există):

The FreeCAD class browser

Așa că, începeți aici tastând App. ori Gui. și priviți ce e tâmplă. O altă modalitate mai generală de a explora conținutul modulelor și claselor este utilizarea comenenzii Python'print dir()'. De exemplu, tastați print dir() și veți obține o listă a tuturor modulelor încărcat curent în FreeCAD. print dir(App) vă va arăta tot ceea ce este în interiorul modulelro App, etc.

O altă caracteristică utilă a interpretului este posibilitatea de a reveni prin istoria comenzilor și de a recupera o linie de cod pe care ați introdus-o deja mai devreme. Pentru a naviga prin istoricul comenzilor, trebuie doar să le utilizați CTRL+UP or CTRL+DOWN.

Dacă faceți clic dreapta în fereastra interpretului, aveți și alte câteva opțiuni, cum ar fi copierea întregului istoric (util atunci când doriți să experimentați lucrurile înainte de a face un script complet al acestora) sau introduceți un nume de fișier cu cale completă.

top

Python Help

În meniul de ajutor al FreeCAD veți găsi o intrare intitulată "Ajutor Python", care va deschide o fereastră de browser care conține o documentație completă, generată în timp real, a tuturor modulelor Python disponibile pentru interpretorul FreeCAD, inclusiv modulele Python și FreeCAD încorporate , modulele instalate în sistem și modulele suplimentare FreeCAD. Documentația disponibilă depinde de efortul fiecărui dezvoltator de module în documentarea codului său, dar, de obicei, modulele Python au o reputație de a fi destul de bine documentate. Fereastra FreeCAD trebuie să rămână deschisă pentru ca acest sistem de documentare să funcționeze.

In the FreeCAD Help menu, you'll find an entry labeled Automatic python modules documentation, which will open a browser window containing a complete, realtime-generated documentation of all Python modules available to the FreeCAD interpreter, including Python and FreeCAD built-in modules, system-installed modules, and FreeCAD additional modules. The documentation available there depends on how much effort each module developer put into documenting his code, but Python modules have a reputation for being fairly well documented. Your FreeCAD window must stay open for this documentation system to work. The entry Python scripting documentation will give you a quick link to the Power users hub wiki section.

top

Module integrate

Deoarece FreeCAD este proiectat să ruleze fără o interfață grafică de utilizator (GUI), aproape toate funcționalitățile sale sunt separate în două grupuri: funcționalitatea Core, numită "App", și funcționalitatea GUI, numită "Gui". Deci, cele două module principale FreeCAD încorporate se numesc App și Gui. Aceste două module pot fi accesate, de asemenea, din scripturile din afara interpretului, prin numele "FreeCAD" și respectiv "FreeCADGui".

Since FreeCAD is designed so that it can also be run without a Graphical User Interface (GUI), almost all its functionality is separated into two groups: Core functionality, named App, and GUI functionality, named Gui. These two modules can also be accessed from scripts outside of the interpreter, by the names FreeCAD and FreeCADGui respectively.

  • In App module, veți găsi totul în legătură cu aplicația în sine, cum ar fi metodele de deschidere sau închidere a fișierelor și documentelor, cum ar fi setarea documentului activ sau listarea conținutului acestuia.
  • In Gui module, veți găsi instrumente pentru accesarea și gestionarea elementelor Gui, cum ar fi Atelierele de lucru și barele lor de instrumente și, mai interesant, reprezentarea grafică a conținutului FreeCAD.

Afișarea întregului conținut al acestor module este o sarcină puțin contraproductivă, deoarece acestea cresc destul de repede cu dezvoltarea FreeCAD. Dar cele două instrumente de navigare furnizate (browserul de clasă și Python help) vă vor oferi, în orice moment, o documentație completă și actualizată a acestor module.

top

Obiectele App și Gui

Așa cum am spus, în FreeCAD, totul este separat între nucleu și reprezentare. Aceasta include și obiectele 3D. Puteți accesa definirea proprietăților obiectelor (numite funcții în FreeCAD) prin modulul App și modificați modul în care sunt reprezentate pe ecran prin modulul Gui. De exemplu, un cub are proprietăți care îl definesc (cum ar fi lățimea, lungimea, înălțimea) stocate într-un obiect App și proprietăți de reprezentare (cum ar fi culoarea fețetelor, modul de desenare) stocate într-un obiect Gui corespunzător.

As already mentioned, in FreeCAD everything is separated into core and representation. This includes the 3D objects. You can access defining properties of objects (called features in FreeCAD) via the App module, and change the way they are represented on screen via the Gui module. For example, a cube has properties that define it (like width, length, height) that are stored in an App object, and representation properties (like faces color, drawing mode) that are stored in a corresponding Gui object.

Acest mod de a face lucrurile permite o gamă largă de utilizări, cum ar fi ca algoritmii să funcționeze numai pe partea de definire a caracteristicilor, fără a avea nevoie să aibă grijă de nicio parte vizuală sau chiar să redirecționeze conținutul documentului la o aplicație non-grafică ca liste, foi de calcul sau analiza elementului finit.

Pentru fiecare obiect App din document, există un obiect Gui corespunzător. De fapt documentul în sine are atât obiecte App cât și obiecte Gui. Acest lucru, desigur, este valabil numai când rulați FreeCAD cu interfața sa completă. În versiunea de linie de comandă nu există nici o interfață grafică, astfel încât numai obiectele App sunt disponibile. Rețineți că partea Gui a obiectelor este re-generată de fiecare dată când un obiect App este marcat ca fiind "pentru a fi recalculat" (de exemplu, când unul dintre parametrii lui se modifică), astfel încât modificările pe care le-ați fi putut face direct la obiectul Gui pot fi pierdute.

Pentru a acesa partea App a unui obiect oarecare, scrieți:

myObject = App.ActiveDocument.getObject("ObjectName")

unde "ObjectName" este numele obiectului dvs. Puteți de asemenea tasta:

myObject = App.ActiveDocument.ObjectName

Pentru a accesa partea Gui a aceluiași obiect, scrieți:

myViewObject = Gui.ActiveDocument.getObject("ObjectName")

unde "ObjectName" este numele obeictului duvs. Puteți de asemena tasta:

myViewObject = App.ActiveDocument.ObjectName.ViewObject

Dacă nu aveți nici un GUI (de exemplul sunten în modul linie-de-comandă), ultima linie va returna 'None'.

top

Obiectele Documentului

În FreeCAD, toată munca dvs. se află în interiorul Documentelor. Un document conține geometria și poate fi salvat într-un fișier. Mai multe documente pot fi deschise în același timp. Documentul, ca geometria conținută în interior, are obiecte App și Gui. Obiectul App conține definițiile de geometrie reale, în timp ce obiectul Gui conține vederile diferite ale documentului. Puteți deschide mai multe ferestre, fiecare vizionând munca dvs. cu un alt factor de zoom sau unghi de vedere diferit. Aceste viziuni fac parte din obiectul Gui al documentului dvs.

In FreeCAD all your work resides inside documents. A document contains your geometry and can be saved to a file. Several documents can be opened at the same time. The document, like the geometry contained inside, has App and Gui objects. The App object contains your actual geometry definitions, while the Gui object contains the different views of your document. You can open several windows, each one viewing your work with a different zoom factor or from a different direction. These views are all part of your document's Gui object.

Pentru a accesa partea App a documentului curent deschis (activ), scrieți:

myDocument = App.ActiveDocument

Pentru a crea un nou documente, scrieți:

myDocument = App.newDocument("Document Name")

Pentru a accesa partea Gui documentul deschis (activ), tastați:

myGuiDocument = Gui.ActiveDocument

Pentru a accesa vederea curentă, scrieți:

myView = Gui.ActiveDocument.ActiveView

top

Utilizarea de module adiționale

Modulele FreeCAD și FreeCADGui sunt singurele responsabile pentru crearea și gestionarea obiectelor din documentul FreeCAD. Ele nu fac de fapt nimic, cum ar fi crearea sau modificarea geometriei. Aceasta deoarece această geometrie poate fi de mai multe tipuri și astfel este gestionată de module suplimentare, fiecare responsabil pentru gestionarea unui anumit tip de geometrie. De exemplu, Part Module utilizează kernelul OpenCascade și, prin urmare, este capabil să creeze și să manipuleze B-rep type geometry, ceea ce este construit pentru OpenCascade. Modul Mesh Module poate construi și modifica obiecte tip plase. În acest fel, FreeCAD este capabil să gestioneze o mare varietate de tipuri de obiecte, care pot coexista în același document, iar noi tipuri pot fi adăugate cu ușurință în viitor.

The FreeCAD and FreeCADGui modules are only responsible for creating and managing objects in the FreeCAD document. They don't actually do anything more such as creating or modifying geometry. This is because that geometry can be of several types, and therefore requires additional modules, each responsible for managing a certain geometry type. For example, the Part Module, using the OpenCascade kernel, is able to create and manipulate BRep type geometry. Whereas the Mesh Module is able to build and modify mesh objects. In this manner FreeCAD is able to handle a wide variety of object types, that can all coexist in the same document, and new types can easily be added in the future.

top

Crearea obiectelor

Fiecare modul are propriul mod de a trata geometria sa, dar un lucru pe care, de obicei, pot să-l facă este să creeze obiecte în document. Dar documentul FreeCAD este, de asemenea, conștient de tipurile de obiecte disponibile furnizate de module:

Each module has its own way of dealing with geometry, but one thing they usually all can do is create objects in the document. But the FreeCAD document is also aware of the available object types provided by the modules:

FreeCAD.ActiveDocument.supportedTypes()

vă va lista toate obiectele posibile pe care le puteți crea. De exemplu, să creăm o plasă (tratată de modulul Mesh/Plasă) și o Piesă (tratată de modulul Part/Piesă):

myMesh = FreeCAD.ActiveDocument.addObject("Mesh::Feature", "myMeshName")
myPart = FreeCAD.ActiveDocument.addObject("Part::Feature", "myPartName")

Primul argument este tipul de obiect, al doilea este numele obiectului. Cele două obiecte arată aproape la fel: nu conțin încă nicio geometrie și majoritatea proprietăților lor sunt aceleași când le inspectați cu dir(myMesh) și dir(myPart). Cu o excepție, myMesh are o proprietate "Mesh" și "Part" are o proprietate "Shape". Acesta este locul în care sunt stocate datele de Plasă și Piesă. De exemplu, să creăm un cub Part și să îl stocăm în obiectul myPart:

import Part
cube = Part.makeBox(2, 2, 2)
myPart.Shape = cube

Puteți încerca să stocați cubul în interiorul proprietății Mesh-ului obiectului myMesh, va veni o eroare în care se plânge despre tipul greșit. Aceasta se datorează faptului că aceste proprietăți sunt făcute pentru a stoca numai un anumit tip. În proprietatea MyMesh a Mesh, puteți salva numai chestii create cu modulul Mesh. Rețineți că majoritatea modulelor au, de asemenea, o comandă rapidă pentru a adăuga geometria lor la document:

import Part
cube = Part.makeBox(2, 2, 2)
Part.show(cube)

top

Modificarea obiectelor

Modificarea unui obiect este făcută în același mod:

Modifying an object is done in the same way:

import Part
cube = Part.makeBox(2, 2, 2)
myPart.Shape = cube

Acum, să schimbăm forma printr-o formă mai mare:

biggercube = Part.makeBox(5, 5, 5)
myPart.Shape = biggercube

top

Interogarea obiectelor

Puteți să vă uitați mereu la tipul de obiect ca acesta:

You can always look at the type of an object like this:

myObj = FreeCAD.ActiveDocument.getObject("myObjectName")
print(myObj.TypeId)

sau să știm dacă un obiect este derivat dintr-unul dintre cele de bază (Part Feature, Mesh Feature, etc):

print(myObj.isDerivedFrom("Part::Feature"))

Acum puteți începe să jucați cu FreeCAD! Pentru a vedea ce puteți face cu Part Module, citiți pagina Pare scripting, sau pagina Mesh Scriptingpentru a lucra cu Mesh Module.Rețineți că, deși modulele Parte și Mesh sunt cele mai complete și utilizate pe scară largă, alte module cum ar fi Draft Module au, de asemenea, scripting APIs care vă pate fi utili.Pentru o listă completă a fiecărui modul și a instrumentelor disponibile, vizitați secțiunea Category:API.

top

Python scripting tutorial
Mesh Scripting