FreeCAD Scripting Basics/fr: Difference between revisions

From FreeCAD Documentation
(Created page with "FreeCAD a été programmé dès la première ligne de code pour être totalement contrôlé par des scripts écrits en Python. Presque toutes les parties de FreeCAD, telles qu...")
No edit summary
 
(67 intermediate revisions by 4 users not shown)
Line 1: Line 1:
<languages/>
<languages/>


{{Docnav/fr
<div class="mw-translate-fuzzy">
{{docnav/fr|[[Python scripting tutorial/fr|Tutoriel sur les scripts Python]]|[[Mesh Scripting/fr|Scripts pour Mesh]]}}
|[[Python_scripting_tutorial/fr|Tutoriel sur les scripts Python]]
|[[Part_scripting/fr|Part Écrire un script]]
</div>
}}


{{TOCright}}
{{TOCright}}


<span id="Python_scripting_in_FreeCAD"></span>
== Python scripting in FreeCAD ==
==Les scripts Python dans FreeCAD ==


FreeCAD a été programmé dès la première ligne de code pour être totalement contrôlé par des scripts écrits en Python. Presque toutes les parties de FreeCAD, telles que l'interface, le contenu des scènes et même la représentation de ce contenu dans les vues 3D, sont accessibles à partir de l'interpréteur Python intégré ou de vos propres scripts. En conséquence, FreeCAD est probablement l'une des applications d'ingénierie les plus personnalisables et évolutives disponibles actuellement.
FreeCAD a été programmé dès la première ligne de code pour être totalement contrôlé par des scripts écrits en Python. Presque toutes les parties de FreeCAD, telles que l'interface, le contenu des scènes et même la représentation de ce contenu dans les vues 3D, sont accessibles à partir de l'interpréteur Python intégré ou de vos propres scripts. En conséquence, FreeCAD est probablement l'une des applications d'ingénierie les plus personnalisables et évolutives disponibles actuellement.


Si vous n'êtes pas familier avec Python, nous vous recommandons de chercher des tutoriels sur internet et jeter un œil rapide sur sa structure. Python est un langage très facile à apprendre, en particulier parce qu'il peut être exécuté à l'intérieur d'un interpréteur, de la plus simple commande jusqu'à l'élaboration de programmes complexes, il peut être exécuté à la volée sans avoir besoin de compilateur. FreeCAD dispose de son propre interpréteur Python intégré. Si vous ne voyez pas de fenêtre intitulée '''Console Python''' comme illustré ci-dessous, vous pouvez l'activer en cliquant dans la barre d'outils {{MenuCommand|Affichage → Panneaux → Console Python}}.
<div class="mw-translate-fuzzy">
Si vous n'êtes pas familier avec Python, nous vous recommandons de chercher des tutoriels sur internet et [http://python.50webs.com/ "jeter un œil rapide"] sur sa structure. Python est un langage très facile à apprendre, en particulier parce qu'il peut être exécuté à l'intérieur de l'interpréteur, de la plus simple commande jusqu'à l'élaboration de programmes complexes, il peut être exécuté à la volée sans avoir besoin de compilateur. FreeCAD dispose de son propre interpréteur Python intégré. Si vous ne voyez pas de fenêtre intitulée '''Console Python''' comme illustré ci-dessous, vous pouvez l'activer en cliquant dans la barre d'outils '''Affichage → Vues → Console Python''' pour afficher l’interpréteur Python.
</div>


<span id="The_interpreter"></span>
<div class="mw-translate-fuzzy">
===L'interpréteur Python===
===L'interpréteur Python===


A partir de l’interpréteur Python, vous pouvez accéder à l'ensemble des modules Python installés, les modules originaux de FreeCAD, ainsi que tous les modules supplémentaires que vous installerez plus tard dans FreeCAD. La capture d'écran ci-dessous vous montre l'interpréteur Python:
Depuis l’interpréteur, vous pouvez accéder à l'ensemble de vos modules Python installés sur le sytème, ainsi qu'aux modules FreeCAD intégrés et à tous les modules FreeCAD supplémentaires que vous avez installés ultérieurement. La capture d'écran ci-dessous montre l'interpréteur 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]]


Depuis l'interpréteur, vous pouvez exécuter du code Python et parcourir les classes et fonctions disponibles. FreeCAD fournit un navigateur de classe très pratique pour l'exploration du monde FreeCAD : lorsque vous tapez le nom d'une classe connue suivi d'un point (ce qui signifie que vous voulez ajouter quelque chose après le point, à partir de cette classe), une fenêtre du navigateur de classe s'ouvre, où vous pouvez naviguer entre sous-classes et méthodes disponibles. Lorsque vous sélectionnez quelque chose, un texte d'aide associé (s'il existe) s'affiche :
<div class="mw-translate-fuzzy">
A partir de l’interpréteur, vous pouvez exécuter du code Python et naviguer à travers les classes et fonctions disponibles. FreeCAD fournit un navigateur de classe très pratique pour l'exploration de votre nouvel univers qu'est FreeCAD. Lorsque vous tapez le nom d'une classe connue suivie d'un "'''.'''" (point) (ce qui veut dire que vous voulez ajouter quelque chose après le point à partir de cette classe), une fenêtre s'ouvre et vous renseigne sur les options et méthodes disponibles dans cette classe. Lorsque vous sélectionnez une option, le texte d'aide qui lui est associé (s'il est disponible) est automatiquement affiché:
</div>


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


Alors, commencez ici en tapant {{incode|App.}} ou {{incode|Gui.}} et voyez ce qui se passe. Une autre façon, plus typique de Python, d'explorer le contenu des modules et des classes consiste à utiliser la commande {{incode|print(dir())}}. Par exemple, taper {{incode|print(dir())}} listera tous les modules actuellement chargés dans FreeCAD. {{incode|print(dir(App))}} vous montrera tout ce qu'il y a, à l'intérieur du module App, etc.
<div class="mw-translate-fuzzy">
Alors, commencez ici en tapant '''App.''' ou '''Gui.''' (Attention à la casse '''App''' est différent de '''app''') et regardez ce qui se passe.<br />
Une autre façon plus simple d'explorer Python le contenu des modules et des classes est d'utiliser la commande d'affichage '''dir()'''.<br />
Par exemple, en tapant '''dir()''' tous les modules actuellements répertoriés et chargés dans FreeCAD s'affichent.Si vous tapez '''dir(App''') tout ce qu'il y a à l'intérieur du module '''App''' sera affiché , etc.
</div>


Une autre fonctionnalité utile de l'interpréteur est la possibilité de parcourir l'historique des commandes et de récupérer une ligne de code que vous avez déjà tapée précédemment. Pour parcourir l'historique des commandes, utilisez simplement {{KEY|Flèche haut}} ou {{KEY|Flèche bas}}.
<div class="mw-translate-fuzzy">
Une autre caractéristique utile de l'interprèteur est la possibilité de revenir en arrière dans l'historique des commandes et récupérer une ligne de code que vous avez tapé plus tôt. Pour naviguer dans l'historique des commandes, il suffit d'utiliser {{KEY|CTRL + HAUT}} ou {{KEY|CTRL + BAS}}.
</div>


Si vous cliquez avec le bouton droit de la souris dans la fenêtre de l'interpréteur, vous avez également les options classiques d'un traitement de texte, telles que copier tout l'histoire (utile lorsque vous voulez expérimenter votre code avant de faire votre script final), ou d'insérer un nom de fichier avec le chemin complet.
Si vous cliquez avec le bouton droit de la souris dans la fenêtre de l'interpréteur, vous avez également les options classiques d'un traitement de texte, telles que copier tout l'histoire (utile lorsque vous voulez expérimenter votre code avant de faire votre script final), ou d'insérer un nom de fichier avec le chemin complet.
{{Top}}

<span id="Python_Help"></span>
[[#top|top]]

<div class="mw-translate-fuzzy">
===Aide Python===
===Aide Python===


Dans le menu '''Aide''' de FreeCAD, vous trouverez une entrée portant la mention 'Automatic python modules documentation' qui va ouvrir une fenêtre de navigateur contenant la liste complète de la documentation de l'ensemble des modules Python à disposition de l’interpréteur FreeCAD. Ce sont les modules fournis avec Python et ceux intégrés dans FreeCAD. La documentation disponible dépend de l'effort que le développeur a mis pour documenter le code son module, les modules Python en général, ont la réputation d'être bien documentés. FreeCAD doit rester ouvert pour travailler avec ce système de documentation. L'entrée 'Aide Python' vous donnera un lien rapide vers cette section du wiki "User Hub".
Dans le menu {{MenuCommand|Aide}} de FreeCAD, vous trouverez une entrée intitulée {{MenuCommand|Documentation automatique des modules python}}, qui ouvrira une fenêtre de navigateur contenant une documentation complète et générée en temps réel de tous les modules Python disponibles pour l'interpréteur FreeCAD ; y compris les modules intégrés Python et FreeCAD, les modules installés par le système et les modules supplémentaires FreeCAD. La documentation ainsi disponible, dépend de l'effort que chaque développeur de modules, met à documenter son code ; mais les modules Python ont la réputation d'être assez bien documentés. Votre fenêtre FreeCAD doit rester ouverte pour que ce système de documentation fonctionne.
L'entrée {{MenuCommand|Documentation de script Python}} vous donnera un lien rapide vers la section wiki [[Power_users_hub/fr|Documentation pour utilisateurs expérimentés]].
</div>
{{Top}}

<span id="Built-in_modules"></span>
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.
==Modules intégrés==
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">
==Modules incorporés (Built-in)==

FreeCAD étant conçu pour être exécuté sans interface graphique (GUI), la quasi-totalité de ses fonctionnalités est séparé en deux groupes: les fonctionnalités de base, nommés '''«App»''', et la fonctionnalité graphique, nommée '''«Gui»'''. Donc, nos deux principaux modules dans FreeCAD sont appelés '''App''' et '''Gui'''.<br />
Ces deux modules peuvent également être accessibles à partir des scripts, respectivement avec les noms '''FreeCAD''' et '''FreeCADGui'''. Ils sont accessibles même hors de l’interpréteur.
</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">
* Dans l''''App module''', vous trouverez tout ce qui concerne l'application elle-même, comme, les procédures d'ouvrir ou fermeture de fichiers, comme l'ouverture de la feuille active ou lister le contenu de la feuille . . .
</div>

<div class="mw-translate-fuzzy">
* Dans l''''Gui module''', vous trouverez des outils pour accéder et gérer les éléments graphiques, comme les boutons utilisateurs et leur barres d'outils, et, plus intéressant, la représentation graphique de l'ensemble du contenu FreeCAD.
</div>


Étant donné que FreeCAD est conçu pour pouvoir également être exécuté sans interface graphique (GUI), presque toutes ses fonctionnalités sont séparées en deux groupes : la fonctionnalité principale, nommée {{incode|App}} et la fonctionnalité GUI, nommée {{incode|Gui}}. Ces deux modules sont également accessibles à partir de scripts en dehors de l'interpréteur, respectivement par les noms {{incode|FreeCAD}} et {{incode|FreeCADGui}}.
<div class="mw-translate-fuzzy">
Lister tout le contenu de ces modules est un contre-productif, car ils grandissent très vite compte tenu de la progression du développement de FreeCAD.<br />
Mais les deux outils fourni (le navigateur de classe et de l'aide de Python) vous donnerons, à tout moment, une complète documentation mise à jour sur ces modules.
</div>


* Dans le module {{incode|App}}, vous trouverez tout ce qui concerne l'application elle-même, comme les méthodes d'ouverture ou de fermeture des fichiers et pour les documents, comme la définition du document actif ou la liste de son contenu.
[[#top|top]]


* Dans le module {{incode|Gui}}, vous trouverez des outils pour accéder et gérer les éléments Gui, comme les établis et leurs barres d'outils et plus intéressant, la représentation graphique de l'ensemble du contenu FreeCAD.
<div class="mw-translate-fuzzy">
===Les objets "App" et "Gui" ===


Lister le contenu de ces modules n'est pas très utile, car ces derniers se développent assez rapidement avec la croissance de FreeCAD. Mais les deux outils de navigation fournis (le navigateur de classe et l'aide Python), devraient vous fournir à tout moment, une documentation complète et à jour.
Comme nous l'avons dit, dans FreeCAD, tout est séparé entre le noyau et la représentation du projet. Y compris les objets 3D.<br />
{{Top}}
Vous pouvez accéder aux propriétés des objets (appelés '''fonctions''' dans FreeCAD) via le module '''App''', et modifier la façon dont ils sont représentés sur l'écran via le module de '''Gui'''.<br />
<span id="The_App_and_Gui_objects"></span>
Par exemple, un cube possède des propriétés qui le définissent, (comme la largeur, longueur, hauteur) qui sont stockées dans un '''App objet''' et, les propriétés de représentation (comme la couleur des faces, le mode de dessin) qui sont stockées dans un objet correspondant '''Gui'''.
===Les objets App et Gui===
</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.
Comme nous l'avons déjà mentionné, dans FreeCAD tout est séparé en noyau et représentation graphique. Cela inclut les objets 3D. Vous pouvez accéder à l'édition des propriétés des objets (appelées fonctionnalités dans FreeCAD) via le module {{incode|App}} et changer la façon dont ils sont représentés à l'écran via le module {{incode|Gui}}. Par exemple, un cube possède des propriétés le définissant (comme la largeur, la longueur et la hauteur) qui sont stockées dans un objet {{incode|App}} et des propriétés de représentation (comme la couleur des faces, le mode de dessin) qui sont stockées dans un objet {{incode|Gui}} correspondant.


Cette méthode de travail permet une multitude d'utilisations, comme des algorithmes travaillant uniquement sur la partie caractéristiques, sans avoir à se soucier de la partie visuelle, voire de réorienter le contenu du document à une partie non-graphique de l'application, tels que des listes, des tableurs, ou l'analyse d'éléments.
Cette méthode de travail permet une multitude d'utilisations, comme des algorithmes travaillant uniquement sur la partie des caractéristiques, sans avoir à se soucier de la partie visuelle, voire de réorienter le contenu du document à une partie non-graphique de l'application, tels que des listes, des tableurs, ou l'analyse d'éléments.


Pour chaque objet {{incode|App}} dans votre document, il existe un objet {{incode|Gui}} correspondant. En fait, le document lui-même possède à la fois un objet {{incode|App}} et un objet {{incode|Gui}}. Ceci, bien sûr, ne s'applique que lorsque vous exécutez FreeCAD avec son interface complète. Dans la version en ligne de commande, aucune interface graphique n'existe, donc seuls les objets {{incode|App}} sont disponibles. Notez que la partie {{incode|Gui}} des objets, est recréée chaque fois qu'un objet {{incode|App}} est marqué 'à recalculer', (par exemple lorsque l'un de ses paramètres change), donc tout changement effectué directement sur l'objet {{incode|Gui}} peut être perdu.
<div class="mw-translate-fuzzy">
'''Pour chaque objet App''' dans votre document, '''il existe un objet correspondant Gui'''.<br />
En fait le document lui-même possède à la fois des '''objets App''' et des '''objets Gui'''. Bien sûr, ceci n'est valable que lorsque vous exécutez FreeCAD dans son interface graphique. Dans la version en ligne de commande (sans interface graphique), seuls les "objets App" sont accessibles.<br />
Notez que la partie "objet Gui" est réactualisé chaque fois qu'un "objet App" est recalculé (par exemple lorsqu'il y a un changement de paramètres), les changements que vous pourriez avoir fait directement à l'objet Gui peuvent être perdues.
</div>


Pour accéder à la partie {{incode|App}} d'un élément, vous tapez :
<div class="mw-translate-fuzzy">
Pour accéder à la partie '''App''' d'un objet, vous devez tapez:
</div>


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


où {{incode|"ObjectName"}} est le nom de votre objet. Vous pouvez également taper :
<div class="mw-translate-fuzzy">
où "ObjectName" est le nom de votre objet.<br />
Le même résultat est obtenu en tapant:
</div>


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


Pour accéder à la partie {{incode|Gui}} du même objet, vous tapez :
<div class="mw-translate-fuzzy">
Pour accéder à la partie '''Gui''' d'un l'objet , vous tapez:
</div>


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


où {{incode|"ObjectName"}} est le nom de votre objet. Vous pouvez également taper :
<div class="mw-translate-fuzzy">
où "ObjectName" est le nom de votre objet.<br />
Le même résultat est obtenu en tapant:
</div>


{{Code|code=
{{Code|code=
Line 132: Line 82:
}}
}}


Si vous êtes en mode ligne de commande et n'avez pas d'interface graphique, la dernière ligne renverra {{incode|None}}.
<div class="mw-translate-fuzzy">
{{Top}}
Si vous n'êtes pas dans l'interface graphique (Gui) (par exemple si vous êtes en mode ligne de commande), la dernière ligne retournée sera 'None'.
<span id="The_Document_objects"></span>
</div>
===Les objets dans un document ===


Dans FreeCAD, tout votre travail réside dans des documents. Un document contient votre géométrie et peut être enregistré dans un fichier. Plusieurs documents peuvent être ouverts en même temps. Le document, comme la géométrie contenue à l'intérieur, possède des objets {{incode|App}} et {{incode|Gui}}. L'objet {{incode|App}} contient vos caractéristiques géométriques réelles, tandis que l'objet {{incode|Gui}} contient les différentes vues de votre document. Vous pouvez ouvrir plusieurs fenêtres, chacune affichant votre travail avec un facteur de zoom différent, ou avec une direction différente. Ces vues font toutes partie de l'objet {{incode|Gui}} de votre document.
[[#top|top]]


Pour accéder à la partie {{incode|App}} du document actuellement ouvert (le document actif), vous tapez :
<div class="mw-translate-fuzzy">
=== Les objets dans un document ===

Dans FreeCAD tout votre travail est dans un "Document". Ce document contient vos formes géométriquee et peut être sauvegardé dans un fichier. Dans FreeCAD, plusieurs documents peuvent être ouverts en même temps. Le document, et les formes géométriques contenues , sont des '''objets App''' et des '''objets Gui'''. Les objets App contiennent les définitions des formes géométriques réelles, tandis que les objets Gui contiennent les différentes vues de votre document.<br />
Vous pouvez ouvrir plusieurs fenêtres, chacune de ces fenêtres peut afficher votre projet avec un facteur de zoom différent ou des vues différentes du projet. Ces vues font toutes partie de l'objet Gui de votre document.
</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">
Pour accéder à la partie App du document ouvert (actif), tapez:
</div>


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


Pour créer un nouveau document, tapez:
Pour créer un nouveau document, tapez :


{{Code|code=
{{Code|code=
Line 161: Line 101:
}}
}}


Pour accéder à la partie {{incode|Gui}} du document actuellement ouvert (le document actif), vous tapez :
<div class="mw-translate-fuzzy">
Pour accéder à la partie graphique (Gui) du document ouvert (actif), tapez:
</div>


{{Code|code=
{{Code|code=
Line 169: Line 107:
}}
}}


Pour accéder à la vue courante, tapez:
Pour accéder à la vue courante, tapez :


{{Code|code=
{{Code|code=
myView = Gui.ActiveDocument.ActiveView
myView = Gui.ActiveDocument.ActiveView
}}
}}
{{Top}}
<span id="Using_additional_modules"></span>
==Utilisation des modules supplémentaires==


Les modules {{incode|FreeCAD}} et {{incode|FreeCADGui}} sont uniquement responsables de la création et de la gestion des objets dans le document FreeCAD. En fait, ils ne font rien de plus que la création ou la modification de la géométrie. En effet, cette géométrie peut être de plusieurs types et nécessite donc des modules supplémentaires, chacun étant responsable de la gestion d'un certain type de géométrie. Par exemple, l'[[Part_Workbench/fr|atelier Part]], utilisant le noyau OpenCascade, est capable de créer et de manipuler la géométrie de type [https://fr.wikipedia.org/wiki/B-Rep BRep]. Tandis que l'[[Mesh_Workbench/fr|atelier Mesh]], est capable de construire et de modifier des objets maillés. De cette manière, FreeCAD est capable de gérer une grande variété de types d'objets, qui peuvent tous coexister dans le même document et de nouveaux types d'objets, peuvent facilement être ajoutés à l'avenir.
[[#top|top]]
{{Top}}
<span id="Creating_objects"></span>
===Création d'objets===


Chaque module a sa propre manière de gérer la géométrie, mais une chose qu'ils peuvent généralement tous faire, est de créer des objets dans le document. Mais le document FreeCAD reconnaît également les types d'objets disponibles fournis par les modules :
<div class="mw-translate-fuzzy">
== Modules supplémentaires ==

Les modules '''FreeCAD''' et '''FreeCADGui''' sont utilisés uniquement pour créer et gérer des objets dans le document FreeCAD. Ils ne sont pas utilisés pour la création ou la modification des formes géométriques.<br />
Les formes géométriques peuvent être de plusieurs types, elles sont donc construites par des modules supplémentaires, chaque module s'occupe la gestion d'un type de forme géométrique spécifique.<br /> Par exemple, le module "[[Part Module/fr|Part]] utilisé par le noyau OpenCascade, et donc capable de créer et manipuler des formes géométriques de type [http://fr.wikipedia.org/wiki/Boundary_representation B-rep], pour lequel OpenCascade est construit.<br />
Le module "[[Mesh Module/fr|Mesh]]" est capable de construire et modifier des objets Mesh (mailles). De cette façon, FreeCAD est capable de gérer une grande variété de types d'objets, qui peuvent coexister dans le même document, et de nouveaux types d'objets pourront êtres ajoutés facilement et constamment.
</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">
=== Création d'objets ===
Chaque module a sa propre manière de gérer sa forme géométrique, mais il y a une chose qu'ils peuvent tous faire, c'est de créer des objets dans le document.<br />
Mais, le document FreeCAD connaît tous les types d'objets disponibles fournis par les modules,<br />
tapez:
</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=
Line 202: Line 127:
}}
}}


répertorie tous les objets possibles que vous pouvez créer. Par exemple, créons un maillage (géré par le module {{incode|Mesh}}) et une pièce (gérée par le module {{incode|Part}}) :
<div class="mw-translate-fuzzy">
FreeCAD listera tous les objets possibles que vous pouvez créer.<br />
Par exemple, nous allons créer un objet maillage (traité par le module "Mesh") et une objet Part (traité par le module le "Part"):
</div>


{{Code|code=
{{Code|code=
Line 212: Line 134:
}}
}}


Le premier argument est le type d'objet, le second le nom de l'objet. Nos deux objets semblent presque identiques : ils ne contiennent pas encore de géométrie et la plupart de leurs propriétés sont les mêmes, lorsque vous les inspectez avec {{incode|dir(myMesh)}} et {{incode|dir(myPart)}}. A l'exception d'une chose, {{incode|myMesh}} a une propriété {{incode|Mesh}} et {{incode|myPart}} a une propriété {{incode|Shape}}. C'est ainsi que les données de maillage et de pièce sont stockées. Par exemple, créons un cube {{incode|Part}} et stockons-le dans notre objet {{incode|myPart}} :
<div class="mw-translate-fuzzy">
Le premier argument est le type d'objet '''"Mesh::"''', le second est le nom de l'objet '''"myMeshName"'''. Nos deux objets semblent identiques: Ils ne contiennent pas encore de forme géométrique, et la plupart de leurs propriétés sont les mêmes lorsque vous les inspecter avec '''dir(myMesh)''' et '''dir(myPart)'''.<br />
Sauf que, myMesh a une propriété "Mesh" (maille) et myPart a une propriété "Part" (forme géométrique).<br />
C'est de cette manière que les données de "Mesh" (maillage) et "Part" (forme géométrique) sont stockées.<br />
Par exemple, nous allons créer un cube (Part) et le stocker dans notre objet myPart:
</div>


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


Vous pouvez essayer de stocker le cube dans la propriété {{incode|Mesh}} de l'objet {{incode|myMesh}}, mais cela renverra une erreur. En effet, chaque propriété est conçue pour stocker uniquement un certain type d'objet. Dans une propriété {{incode|Mesh}}, vous ne pouvez enregistrer que les éléments créés avec le module {{incode|Mesh}}. Notez que la plupart des modules ont également un raccourci pour ajouter leur géométrie au document :
<div class="mw-translate-fuzzy">
Si vous essayez de stocker le cube avec la propriété '''objet Mesh "myMesh"''', il retournera une '''erreur de type'''. Car ces propriétés sont conçues uniquement pour stocker un type d'objet bien défini.<br />
Dans la propriété '''objet Mesh "myMesh"''', vous ne pouvez enregistrer que des objets créé avec le module '''Mesh'''.<br />
Notez que la plupart des modules disposent également d'un raccourci pour ajouter leur formes géométriques au document:
</div>


{{Code|code=
{{Code|code=
Line 236: Line 149:
Part.show(cube)
Part.show(cube)
}}
}}
{{Top}}
<span id="Modifying_objects"></span>
===Modification d'objets===


La modification d'un objet se fait de la même manière :
[[#top|top]]

<div class="mw-translate-fuzzy">
=== Modification d'objets ===

La modification d'un objet est faite de la même manière:
</div>

Modifying an object is done in the same way:


{{Code|code=
{{Code|code=
Line 253: Line 161:
}}
}}


Maintenant, nous allons construire un cube plus gros:
Maintenant, nous allons construire un cube plus gros :


{{Code|code=
{{Code|code=
Line 259: Line 167:
myPart.Shape = biggercube
myPart.Shape = biggercube
}}
}}
{{Top}}
<span id="Querying_objects"></span>
===Interroger les objets===


Vous pouvez toujours savoir de quel type d'objet il s'agit, comme ceci :
[[#top|top]]

<div class="mw-translate-fuzzy">
=== Questionner les objets ===

Vous pouvez toujours connaître de quel type est un objet.<br />
Faites ceci:
</div>

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


{{Code|code=
{{Code|code=
Line 276: Line 178:
}}
}}


ou vérifier si un objet est dérivé de l'un des objets de base (créé avec une fonction Part, ou une fonction Mesh, etc) :
<div class="mw-translate-fuzzy">
ou de savoir si un objet fait partie d'un modèle de base (Part Feature, Mesh Feature, etc):
</div>


{{Code|code=
{{Code|code=
Line 284: Line 184:
}}
}}


Maintenant, vous pouvez vraiment commencer à vous amuser avec FreeCAD ! Pour une liste complète des modules disponibles et de leurs outils, visitez la section [[:Category:API/fr|Catégorie : API]].
<div class="mw-translate-fuzzy">
{{Top}}
Maintenant vous pouvez commencer à travailler avec FreeCAD! Pour savoir ce que vous pouvez faire avec le '''[[Part Module/fr|Part Module]]''', lisez la page [[Topological data scripting/fr|Part scripting]], ou la page [[Mesh Scripting/fr|Script Mesh]] pour travailler avec le module Mesh .<br />
Notez que, bien que les modules '''Part''' et '''Mesh''' sont les plus complets et les plus largement utilisés, les autres modules tels que le [[Draft Module/fr|Draft Module]] (Projet) ont également leurs [[Draft API/fr|API scripts]] qui peuvent vous être utiles.<br />
Pour une liste complète de chaque module et de leurs outils disponibles, visitez la section [[:Category:API/fr|:Category:API]] [[:Category:API|(en)]].
</div>


{{Docnav/fr
[[#top|top]]
|[[Python_scripting_tutorial/fr|Tutoriel sur les scripts Python]]

|[[Part_scripting/fr|Part Écrire un script]]
<div class="mw-translate-fuzzy">
}}
{{docnav/fr|[[Python scripting tutorial/fr|Python script tutoriel]]|[[Mesh Scripting/fr|Scripts pour Mesh]]}}
</div>


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

Latest revision as of 16:34, 21 February 2023

Les scripts Python dans FreeCAD

FreeCAD a été programmé dès la première ligne de code pour être totalement contrôlé par des scripts écrits en Python. Presque toutes les parties de FreeCAD, telles que l'interface, le contenu des scènes et même la représentation de ce contenu dans les vues 3D, sont accessibles à partir de l'interpréteur Python intégré ou de vos propres scripts. En conséquence, FreeCAD est probablement l'une des applications d'ingénierie les plus personnalisables et évolutives disponibles actuellement.

Si vous n'êtes pas familier avec Python, nous vous recommandons de chercher des tutoriels sur internet et jeter un œil rapide sur sa structure. Python est un langage très facile à apprendre, en particulier parce qu'il peut être exécuté à l'intérieur d'un interpréteur, de la plus simple commande jusqu'à l'élaboration de programmes complexes, il peut être exécuté à la volée sans avoir besoin de compilateur. FreeCAD dispose de son propre interpréteur Python intégré. Si vous ne voyez pas de fenêtre intitulée Console Python comme illustré ci-dessous, vous pouvez l'activer en cliquant dans la barre d'outils Affichage → Panneaux → Console Python.

L'interpréteur Python

Depuis l’interpréteur, vous pouvez accéder à l'ensemble de vos modules Python installés sur le sytème, ainsi qu'aux modules FreeCAD intégrés et à tous les modules FreeCAD supplémentaires que vous avez installés ultérieurement. La capture d'écran ci-dessous montre l'interpréteur Python :

The FreeCAD Python interpreter

Depuis l'interpréteur, vous pouvez exécuter du code Python et parcourir les classes et fonctions disponibles. FreeCAD fournit un navigateur de classe très pratique pour l'exploration du monde FreeCAD : lorsque vous tapez le nom d'une classe connue suivi d'un point (ce qui signifie que vous voulez ajouter quelque chose après le point, à partir de cette classe), une fenêtre du navigateur de classe s'ouvre, où vous pouvez naviguer entre sous-classes et méthodes disponibles. Lorsque vous sélectionnez quelque chose, un texte d'aide associé (s'il existe) s'affiche :

The FreeCAD class browser

Alors, commencez ici en tapant App. ou Gui. et voyez ce qui se passe. Une autre façon, plus typique de Python, d'explorer le contenu des modules et des classes consiste à utiliser la commande print(dir()). Par exemple, taper print(dir()) listera tous les modules actuellement chargés dans FreeCAD. print(dir(App)) vous montrera tout ce qu'il y a, à l'intérieur du module App, etc.

Une autre fonctionnalité utile de l'interpréteur est la possibilité de parcourir l'historique des commandes et de récupérer une ligne de code que vous avez déjà tapée précédemment. Pour parcourir l'historique des commandes, utilisez simplement Flèche haut ou Flèche bas.

Si vous cliquez avec le bouton droit de la souris dans la fenêtre de l'interpréteur, vous avez également les options classiques d'un traitement de texte, telles que copier tout l'histoire (utile lorsque vous voulez expérimenter votre code avant de faire votre script final), ou d'insérer un nom de fichier avec le chemin complet.

En haut

Aide Python

Dans le menu Aide de FreeCAD, vous trouverez une entrée intitulée Documentation automatique des modules python, qui ouvrira une fenêtre de navigateur contenant une documentation complète et générée en temps réel de tous les modules Python disponibles pour l'interpréteur FreeCAD ; y compris les modules intégrés Python et FreeCAD, les modules installés par le système et les modules supplémentaires FreeCAD. La documentation ainsi disponible, dépend de l'effort que chaque développeur de modules, met à documenter son code ; mais les modules Python ont la réputation d'être assez bien documentés. Votre fenêtre FreeCAD doit rester ouverte pour que ce système de documentation fonctionne. L'entrée Documentation de script Python vous donnera un lien rapide vers la section wiki Documentation pour utilisateurs expérimentés.

En haut

Modules intégrés

Étant donné que FreeCAD est conçu pour pouvoir également être exécuté sans interface graphique (GUI), presque toutes ses fonctionnalités sont séparées en deux groupes : la fonctionnalité principale, nommée App et la fonctionnalité GUI, nommée Gui. Ces deux modules sont également accessibles à partir de scripts en dehors de l'interpréteur, respectivement par les noms FreeCAD et FreeCADGui.

  • Dans le module App, vous trouverez tout ce qui concerne l'application elle-même, comme les méthodes d'ouverture ou de fermeture des fichiers et pour les documents, comme la définition du document actif ou la liste de son contenu.
  • Dans le module Gui, vous trouverez des outils pour accéder et gérer les éléments Gui, comme les établis et leurs barres d'outils et plus intéressant, la représentation graphique de l'ensemble du contenu FreeCAD.

Lister le contenu de ces modules n'est pas très utile, car ces derniers se développent assez rapidement avec la croissance de FreeCAD. Mais les deux outils de navigation fournis (le navigateur de classe et l'aide Python), devraient vous fournir à tout moment, une documentation complète et à jour.

En haut

Les objets App et Gui

Comme nous l'avons déjà mentionné, dans FreeCAD tout est séparé en noyau et représentation graphique. Cela inclut les objets 3D. Vous pouvez accéder à l'édition des propriétés des objets (appelées fonctionnalités dans FreeCAD) via le module App et changer la façon dont ils sont représentés à l'écran via le module Gui. Par exemple, un cube possède des propriétés le définissant (comme la largeur, la longueur et la hauteur) qui sont stockées dans un objet App et des propriétés de représentation (comme la couleur des faces, le mode de dessin) qui sont stockées dans un objet Gui correspondant.

Cette méthode de travail permet une multitude d'utilisations, comme des algorithmes travaillant uniquement sur la partie des caractéristiques, sans avoir à se soucier de la partie visuelle, voire de réorienter le contenu du document à une partie non-graphique de l'application, tels que des listes, des tableurs, ou l'analyse d'éléments.

Pour chaque objet App dans votre document, il existe un objet Gui correspondant. En fait, le document lui-même possède à la fois un objet App et un objet Gui. Ceci, bien sûr, ne s'applique que lorsque vous exécutez FreeCAD avec son interface complète. Dans la version en ligne de commande, aucune interface graphique n'existe, donc seuls les objets App sont disponibles. Notez que la partie Gui des objets, est recréée chaque fois qu'un objet App est marqué 'à recalculer', (par exemple lorsque l'un de ses paramètres change), donc tout changement effectué directement sur l'objet Gui peut être perdu.

Pour accéder à la partie App d'un élément, vous tapez :

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

"ObjectName" est le nom de votre objet. Vous pouvez également taper :

myObject = App.ActiveDocument.ObjectName

Pour accéder à la partie Gui du même objet, vous tapez :

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

"ObjectName" est le nom de votre objet. Vous pouvez également taper :

myViewObject = App.ActiveDocument.ObjectName.ViewObject

Si vous êtes en mode ligne de commande et n'avez pas d'interface graphique, la dernière ligne renverra None.

En haut

Les objets dans un document

Dans FreeCAD, tout votre travail réside dans des documents. Un document contient votre géométrie et peut être enregistré dans un fichier. Plusieurs documents peuvent être ouverts en même temps. Le document, comme la géométrie contenue à l'intérieur, possède des objets App et Gui. L'objet App contient vos caractéristiques géométriques réelles, tandis que l'objet Gui contient les différentes vues de votre document. Vous pouvez ouvrir plusieurs fenêtres, chacune affichant votre travail avec un facteur de zoom différent, ou avec une direction différente. Ces vues font toutes partie de l'objet Gui de votre document.

Pour accéder à la partie App du document actuellement ouvert (le document actif), vous tapez :

myDocument = App.ActiveDocument

Pour créer un nouveau document, tapez :

myDocument = App.newDocument("Document Name")

Pour accéder à la partie Gui du document actuellement ouvert (le document actif), vous tapez :

myGuiDocument = Gui.ActiveDocument

Pour accéder à la vue courante, tapez :

myView = Gui.ActiveDocument.ActiveView

En haut

Utilisation des modules supplémentaires

Les modules FreeCAD et FreeCADGui sont uniquement responsables de la création et de la gestion des objets dans le document FreeCAD. En fait, ils ne font rien de plus que la création ou la modification de la géométrie. En effet, cette géométrie peut être de plusieurs types et nécessite donc des modules supplémentaires, chacun étant responsable de la gestion d'un certain type de géométrie. Par exemple, l'atelier Part, utilisant le noyau OpenCascade, est capable de créer et de manipuler la géométrie de type BRep. Tandis que l'atelier Mesh, est capable de construire et de modifier des objets maillés. De cette manière, FreeCAD est capable de gérer une grande variété de types d'objets, qui peuvent tous coexister dans le même document et de nouveaux types d'objets, peuvent facilement être ajoutés à l'avenir.

En haut

Création d'objets

Chaque module a sa propre manière de gérer la géométrie, mais une chose qu'ils peuvent généralement tous faire, est de créer des objets dans le document. Mais le document FreeCAD reconnaît également les types d'objets disponibles fournis par les modules :

FreeCAD.ActiveDocument.supportedTypes()

répertorie tous les objets possibles que vous pouvez créer. Par exemple, créons un maillage (géré par le module Mesh) et une pièce (gérée par le module Part) :

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

Le premier argument est le type d'objet, le second le nom de l'objet. Nos deux objets semblent presque identiques : ils ne contiennent pas encore de géométrie et la plupart de leurs propriétés sont les mêmes, lorsque vous les inspectez avec dir(myMesh) et dir(myPart). A l'exception d'une chose, myMesh a une propriété Mesh et myPart a une propriété Shape. C'est ainsi que les données de maillage et de pièce sont stockées. Par exemple, créons un cube Part et stockons-le dans notre objet myPart :

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

Vous pouvez essayer de stocker le cube dans la propriété Mesh de l'objet myMesh, mais cela renverra une erreur. En effet, chaque propriété est conçue pour stocker uniquement un certain type d'objet. Dans une propriété Mesh, vous ne pouvez enregistrer que les éléments créés avec le module Mesh. Notez que la plupart des modules ont également un raccourci pour ajouter leur géométrie au document :

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

En haut

Modification d'objets

La modification d'un objet se fait de la même manière :

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

Maintenant, nous allons construire un cube plus gros :

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

En haut

Interroger les objets

Vous pouvez toujours savoir de quel type d'objet il s'agit, comme ceci :

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

ou vérifier si un objet est dérivé de l'un des objets de base (créé avec une fonction Part, ou une fonction Mesh, etc) :

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

Maintenant, vous pouvez vraiment commencer à vous amuser avec FreeCAD ! Pour une liste complète des modules disponibles et de leurs outils, visitez la section Catégorie : API.

En haut