Python/fr: Difference between revisions

From FreeCAD Documentation
(Created page with "* Les fonctions peuvent renvoyer un objet qui peut être utilisé comme base d'une autre fonction de dessin.")
(Created page with "== Importations ==")
Line 67: Line 67:
}}
}}


== Imports ==
== Importations ==


Python functions are stored in files called modules. Before using any function in that module, the module must be included in the document with the {{incode|import}} instruction.
Python functions are stored in files called modules. Before using any function in that module, the module must be included in the document with the {{incode|import}} instruction.

Revision as of 09:42, 1 March 2019

(Novembre 2018) FreeCAD a été conçu à l'origine pour fonctionner avec Python 2. De nombreuses fonctionnalités fonctionnent avec Python 3, mais d'autres non. Rendre FreeCAD totalement compatible avec Python 3 est un travail en cours.

Description

Python est un langage de programmation de haut niveau à usage général très utilisé dans les grandes applications pour automatiser certaines tâches en créant des scripts ou des macros.

Dans FreeCAD, le code Python peut être utilisé pour créer divers éléments par programmation, sans qu'il soit nécessaire de cliquer sur l'interface graphique. De plus, de nombreux outils et ateliers de FreeCAD sont programmés en Python.

Voir Introduction à Python pour en savoir plus sur le langage de programmation Python, puis sur Tutoriel sur les scripts Python et sur principes de base des scripts FreeCAD pour lancer la création de scripts dans FreeCAD.

Lorsque vous écrivez du code Python, il est conseillé de suivre le PEP8: guide du style pour coder en Python.

Conventions

Dans cette documentation, certaines conventions relatives aux exemples Python doivent être suivies.

Ceci est une signature de fonction typique

Wire = makeWire(pointslist, closed=False, placement=None, face=None, support=None)
  • Les arguments avec des paires clé-valeur sont facultatifs, la valeur par défaut étant indiquée dans la signature. Cela signifie que les appels suivants sont équivalents:
Wire = makeWire(pointslist, False, None, None, None)
Wire = makeWire(pointslist, False, None, None)
Wire = makeWire(pointslist, False, None)
Wire = makeWire(pointslist, False)
Wire = makeWire(pointslist)
Dans cet exemple, le premier argument n'a pas de valeur par défaut, il devrait donc toujours être inclus.
  • Lorsque les arguments sont donnés avec la clé explicite, les arguments facultatifs peuvent être donnés dans n'importe quel ordre. Cela signifie que les appels suivants sont équivalents:
Wire = makeWire(pointslist, closed=False, placement=None, face=None)
Wire = makeWire(pointslist, closed=False, face=None, placement=None)
Wire = makeWire(pointslist, placement=None, closed=False, face=None)
Wire = makeWire(pointslist, support=None, closed=False, placement=None, face=None)
  • Les directives de Python insistent sur la lisibilité du code; en particulier, les parenthèses doivent suivre immédiatement le nom de la fonction et un espace doit suivre une virgule.
p1 = Vector(0, 0, 0)
p2 = Vector(1, 1, 0)
p3 = Vector(2, 0, 0)
Wire = makeWire([p1, p2, p3], closed=True)
  • Si le code doit être divisé sur plusieurs lignes, utilisez une virgule entre parenthèses ou entre crochets. la deuxième ligne doit être alignée sur la précédente.
a_list = [1, 2, 3,
          2, 4, 5]

Wire = makeWire(pointslist,
                False, None,
                None, None)
  • Les fonctions peuvent renvoyer un objet qui peut être utilisé comme base d'une autre fonction de dessin.
Wire = makeWire(pointslist, closed=True, face=True)
Window = makeWindow(Wire, name="Big window")

Importations

Python functions are stored in files called modules. Before using any function in that module, the module must be included in the document with the import instruction.

This creates prefixed functions, that is, module.function(). This system prevents name clashes with functions that are named the same but that come from different modules. For example, the two functions Arch.makeWindow() and myModule.makeWindow() may coexist without problem.

Full examples should include the necessary imports and the prefixed functions.

import FreeCAD, Draft

p1 = FreeCAD.Vector(0, 0, 0)
p2 = FreeCAD.Vector(1, 1, 0)
p3 = FreeCAD.Vector(2, 0, 0)
Wire = Draft.makeWire([p1, p2, p3], closed=True)
import FreeCAD, Draft, Arch

p1 = FreeCAD.Vector(0, 0, 0)
p2 = FreeCAD.Vector(1, 0, 0)
p3 = FreeCAD.Vector(1, 1, 0)
p4 = FreeCAD.Vector(0, 2, 0)
pointslist = [p1, p2, p3, p4]

Wire = Draft.makeWire(pointslist, closed=True, face=True)
Structure = Arch.makeStructure(Wire, name="Big pillar")