Part scripting/fr: Difference between revisions

From FreeCAD Documentation
(Created page with "=== Exemples ===")
No edit summary
 
(75 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<languages/>
<languages/>


{{Docnav/fr
== Script==
|[[FreeCAD_Scripting_Basics/fr|Débuter avec les scripts]]
|[[Topological_data_scripting/fr|Script de données topologiques]]
}}


{{TOCright}}
La structure de données principale utilisée dans le module Part est le type de données [https://fr.wikipedia.org/wiki/B-Rep_BREP] de OpenCascade.
Presque tous les contenus et types d'objet du module Part sont disponibles à l'aide de scripts [[Python/fr|Python]]. Cela inclut les primitives géométriques, telles que Line et Circle (ou Arc), et toute la gamme de TopoShapes, telles que les vertex, les arêtes, les fils, les faces, les solides et les composés. Plusieurs méthodes de création existent pour chacun de ces objets. Pour certaines d’entre elles, en particulier TopoShapes, des opérations avancées telles que union booléenne/différence/intersection booléenne sont également disponibles. Explorez le contenu du module Part comme décrit dans la page [[FreeCAD Scripting Basics/fr|Débuter avec les scripts]] pour en savoir plus.


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

La structure principale de données utilisée dans le module Part est le type de données [https://fr.wikipedia.org/wiki/B-Rep BRep] de [[OpenCASCADE/fr|OpenCASCADE]]. Presque tous les contenus et types d'objets du module Part sont disponibles par script en [[Python/fr|Python]]. Cela inclut les primitives géométriques, telles que les lignes, les cercles et les arcs, et toute la gamme des TopoShapes, comme les vertex, les arêtes, les fils, les faces, les solides et les composés. Pour chacun de ces objets, plusieurs méthodes de création existent, et pour certains d'entre eux, notamment les TopoShapes, des opérations avancées telles que l'union/différence/intersection booléenne sont également disponibles. Explorez le contenu du module Part, comme décrit dans la page [[FreeCAD_Scripting_Basics/fr|Notions de base sur les scripts FreeCAD]], pour en savoir plus.

L'objet le plus simple pouvant être créé est une [[Part_Feature/fr|Part Feature]], qui possède une simple propriété {{PropertyData|Placement}} et des propriétés de base permettant de définir sa couleur et son apparence.

Un autre objet simple utilisé dans les objets géométriques 2D est un [[Part_Part2DObject/fr|Part Part2DObject]] qui constitue la base des [[Sketcher_SketchObject/fr|Sketcher SketchObject]] et de la plupart des [[Draft_Workbench/fr|éléments de Draft]].

<span id="See_also"></span>
===Voir aussi===

* [[Topological_data_scripting/fr|Scripts pour création topologique]]
* [[OpenCASCADE/fr|OpenCASCADE]]

<span id="Test_script"></span>
==Script de test==

Testez la création de [[Part_Primitives/fr|Part Primitives]] avec un script.


To create a line element switch to the Python console and type in:
{{Code|code=
{{Code|code=
import parttests.part_test_objects as pto
import Part,PartGui
pto.create_test_file("example_file")
doc=App.newDocument()
}}
l=Part.LineSegment()

l.StartPoint=(0.0,0.0,0.0)
Ce script se trouve dans le répertoire d'installation du programme et peut être examiné pour voir comment les primitives de base sont construites.
l.EndPoint=(1.0,1.0,1.0)

doc.addObject("Part::Feature","Line").Shape=l.toShape()
{{Code|code=
$INSTALL_DIR/Mod/Part/parttests/part_test_objects.py
}}

<span id="Examples"></span>
==Exemples==

<span id="Line"></span>
===Ligne===

Pour créer un élément de ligne, passez dans la [[Python_console/fr|console Python]] et entrez :

{{Code|code=
import FreeCAD as App
import Part

doc = App.newDocument()

line = Part.LineSegment()
line.StartPoint = (0.0, 0.0, 0.0)
line.EndPoint = (1.0, 1.0, 1.0)
obj = doc.addObject("Part::Feature", "Line")
obj.Shape= line.toShape()

doc.recompute()
doc.recompute()
}}
}}


Passons en revue l'exemple Python ci-dessus étape par étape :
Let's go through the above python example step by step:

{{Code|code=
{{Code|code=
import Part,PartGui
import FreeCAD as App
import Part
doc=App.newDocument()
doc = App.newDocument()
}}
}}


loads the Part module and creates a new document
Ceci charge les modules FreeCAD et Part et crée un nouveau document.

{{Code|code=
{{Code|code=
l=Part.LineSegment()
line = Part.LineSegment()
l.StartPoint=(0.0,0.0,0.0)
line.StartPoint = (0.0, 0.0, 0.0)
l.EndPoint=(1.0,1.0,1.0)
line.EndPoint = (1.0, 1.0, 1.0)
}}
}}


Line is actually a line segment, hence the start and endpoint.
La fonction Line décrit en fait un segment de ligne, d'où le point de départ et le point final.

{{Code|code=
{{Code|code=
doc.addObject("Part::Feature","Line").Shape=l.toShape()
obj = doc.addObject("Part::Feature", "Line")
obj.Shape= line.toShape()
}}
}}


This adds a Part object type to the document and assigns the shape representation of the line segment to the 'Shape' property of the added object. It is important to understand here that we used a geometric primitive (the Part.LineSegment) to create a TopoShape out of it (the toShape() method). Only Shapes can be added to the document. In FreeCAD, geometry primitives are used as "building structures" for Shapes.
Cette opération ajoute un type d'objet Part au document et attribue la représentation de la forme du segment de ligne à la propriété {{Incode|Shape}} de l'objet ajouté. Il est important de comprendre ici que nous utilisons une primitive géométrique ({{Incode|Part.LineSegment}}) pour créer une TopoShape à partir de celle-ci (avec la méthode {{Incode|toShape()}}). Seules les formes peuvent être ajoutées au document. Dans FreeCAD, les primitives géométriques sont utilisées comme "structures de construction" pour les formes.

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


Met à jour le document. Cela prépare également la représentation visuelle du nouvel objet Part.
Updates the document. This also prepares the visual representation of the new part object.


Notez qu'un segment de ligne peut également être créé en spécifiant son point de départ et son point d'arrivée directement dans le constructeur, par exemple {{Incode|Part.LineSegment(point1, point2)}}, ou nous pouvons créer une ligne par défaut et définir ses propriétés par la suite, comme nous l'avons fait ici.
Note that a Line Segment can be created by specifying its start and endpoint directly in the constructor, for example Part.LineSegment(point1,point2), or we can create a default line and set its properties afterwards, as we did here.

Une ligne peut également être créée en utilisant :


A circle can be created in a similar way:
{{Code|code=
{{Code|code=
import FreeCAD as App
import Part
import Part

def my_create_line(pt1, pt2, obj_name):
obj = App.ActiveDocument.addObject("Part::Line", obj_name)
obj.X1 = pt1[0]
obj.Y1 = pt1[1]
obj.Z1 = pt1[2]

obj.X2 = pt2[0]
obj.Y2 = pt2[1]
obj.Z2 = pt2[2]

App.ActiveDocument.recompute()
return obj

line = my_create_line((0, 0, 0), (0, 10, 0), "LineName")
}}

<span id="Circle"></span>
===Cercle===

Un cercle peut être créé de la même manière :

{{Code|code=
import FreeCAD as App
import Part

doc = App.activeDocument()
doc = App.activeDocument()

c = Part.Circle()
circle = Part.Circle()
c.Radius=10.0
circle.Radius = 10.0
f = doc.addObject("Part::Feature", "Circle")
obj = doc.addObject("Part::Feature", "Circle")
f.Shape = c.toShape()
obj.Shape = circle.toShape()

doc.recompute()
doc.recompute()
}}
}}


Ou en utilisant :
Note again, we used the circle (geometry primitive) to construct a shape out of it. We can of course still access our construction geometry afterwards, by doing:

{{Code|code=
{{Code|code=
import FreeCAD as App
s = f.Shape
import Part
e = s.Edges[0]

c = e.Curve
def my_create_circle(rad, obj_name):
obj = App.ActiveDocument.addObject("Part::Circle", obj_name)
obj.Radius = rad

App.ActiveDocument.recompute()
return obj

circle = my_create_circle(5.0, "CircleName")
}}
}}


Nous pouvons également créer un cercle en définissant son centre, son axe et son rayon :
Here we take the shape of our object f, then we take its list of edges. In this case there will be only one because we made the whole shape out of a single circle, so we take only the first item of the Edges list, and we takes its curve. Every Edge has a Curve, which is the geometry primitive it is based on.


{{Code|code=
import FreeCAD as App
import Part


doc = App.activeDocument()
Head to the [[Topological data scripting|Topological data scripting]] page if you would like to know more.


center = App.Vector(1, 2, 3)
{{Part Tools navi}}
axis = App.Vector(1, 1, 1)
radius = 10
circle = Part.Circle(center, axis, radius)
obj = doc.addObject("Part::Feature", "Circle")
obj.Shape = circle.toShape()

doc.recompute()
}}

Ou en définissant trois points sur sa circonférence :

{{Code|code=
import FreeCAD as App
import Part

doc = App.activeDocument()

p1 = App.Vector(10, 0, 0)
p2 = App.Vector(0, 10, 0)
p3 = App.Vector(0, 0, 10)
circle = Part.Circle(p1, p2, p3)
obj = doc.addObject("Part::Feature", "Circle")
obj.Shape = circle.toShape()

doc.recompute()
}}

Notez qu'une fois encore, nous avons utilisé le cercle (primitive géométrique) pour construire une forme. Nous pouvons bien sûr toujours accéder à notre géométrie de construction par la suite, en faisant :

{{Code|code=
shape = obj.Shape
edge = shape.Edges[0]
curve = edge.Curve
}}

Ici nous prenons la forme {{Incode|Shape}} de notre objet {{Incode|obj}} et ensuite sa liste de {{Incode|Edges}}. Dans ce cas, il n'y aura qu'une seule arête car nous avons créé la forme à partir d'un seul cercle. Nous ne prenons donc que le premier élément de la liste {{Incode|Edges}}, puis sa courbe. Chaque arête a une {{Incode|Curve}}, qui est la primitive géométrique sur laquelle elle est basée.

===Arc===

Un arc peut être créé comme suit :

{{Code|code=
import FreeCAD as App
import Part

doc = App.activeDocument()

p1 = App.Vector(10, 0, 0)
p2 = App.Vector(0, 10, 0)
p3 = App.Vector(-10, 0, 0)
arc = Part.Arc(p1, p2, p3)
obj = doc.addObject("Part::Feature", "Arc")
obj.Shape = arc.toShape()

doc.recompute()
}}

Ceci dessine un demi-cercle. Le centre est à (0, 0, 0). Le rayon est de 10. P1 est le point de départ sur l'axe +X. P2 est le point central sur l'axe +Y et P3 est le point final sur l'axe -X.

On peut aussi créer un arc à partir d'un cercle :

{{Code|code=
import FreeCAD as App
import Part

doc = App.activeDocument()

p1 = App.Vector(10, 0, 0)
p2 = App.Vector(0, 10, 0)
p3 = App.Vector(-10, 0, 0)
circle = Part.Circle(p1, p2, p3)
arc = Part.ArcOfCircle(circle, 0.0, 0.7854)
obj = doc.addObject("Part::Feature", "Arc")
obj.Shape = arc.toShape()

doc.recompute()
}}

Il faut un cercle, un angle de départ et un angle d'arrivée en radians.


{{Docnav/fr
|[[FreeCAD_Scripting_Basics/fr|Débuter avec les scripts]]
|[[Topological_data_scripting/fr|Script de données topologiques]]
}}


{{Powerdocnavi{{#translation:}}}}
{{Userdocnavi}}
[[Category:Developer Documentation{{#translation:}}]]
[[Category:Python Code{{#translation:}}]]
{{Part Tools navi{{#translation:}}}}

Latest revision as of 00:32, 21 May 2023

Introduction

La structure principale de données utilisée dans le module Part est le type de données BRep de OpenCASCADE. Presque tous les contenus et types d'objets du module Part sont disponibles par script en Python. Cela inclut les primitives géométriques, telles que les lignes, les cercles et les arcs, et toute la gamme des TopoShapes, comme les vertex, les arêtes, les fils, les faces, les solides et les composés. Pour chacun de ces objets, plusieurs méthodes de création existent, et pour certains d'entre eux, notamment les TopoShapes, des opérations avancées telles que l'union/différence/intersection booléenne sont également disponibles. Explorez le contenu du module Part, comme décrit dans la page Notions de base sur les scripts FreeCAD, pour en savoir plus.

L'objet le plus simple pouvant être créé est une Part Feature, qui possède une simple propriété DonnéesPlacement et des propriétés de base permettant de définir sa couleur et son apparence.

Un autre objet simple utilisé dans les objets géométriques 2D est un Part Part2DObject qui constitue la base des Sketcher SketchObject et de la plupart des éléments de Draft.

Voir aussi

Script de test

Testez la création de Part Primitives avec un script.

import parttests.part_test_objects as pto
pto.create_test_file("example_file")

Ce script se trouve dans le répertoire d'installation du programme et peut être examiné pour voir comment les primitives de base sont construites.

$INSTALL_DIR/Mod/Part/parttests/part_test_objects.py

Exemples

Ligne

Pour créer un élément de ligne, passez dans la console Python et entrez :

import FreeCAD as App
import Part

doc = App.newDocument()

line = Part.LineSegment()
line.StartPoint = (0.0, 0.0, 0.0)
line.EndPoint = (1.0, 1.0, 1.0)
obj = doc.addObject("Part::Feature", "Line")
obj.Shape= line.toShape()

doc.recompute()

Passons en revue l'exemple Python ci-dessus étape par étape :

import FreeCAD as App
import Part
doc = App.newDocument()

Ceci charge les modules FreeCAD et Part et crée un nouveau document.

line = Part.LineSegment()
line.StartPoint = (0.0, 0.0, 0.0)
line.EndPoint = (1.0, 1.0, 1.0)

La fonction Line décrit en fait un segment de ligne, d'où le point de départ et le point final.

obj = doc.addObject("Part::Feature", "Line")
obj.Shape= line.toShape()

Cette opération ajoute un type d'objet Part au document et attribue la représentation de la forme du segment de ligne à la propriété Shape de l'objet ajouté. Il est important de comprendre ici que nous utilisons une primitive géométrique (Part.LineSegment) pour créer une TopoShape à partir de celle-ci (avec la méthode toShape()). Seules les formes peuvent être ajoutées au document. Dans FreeCAD, les primitives géométriques sont utilisées comme "structures de construction" pour les formes.

doc.recompute()

Met à jour le document. Cela prépare également la représentation visuelle du nouvel objet Part.

Notez qu'un segment de ligne peut également être créé en spécifiant son point de départ et son point d'arrivée directement dans le constructeur, par exemple Part.LineSegment(point1, point2), ou nous pouvons créer une ligne par défaut et définir ses propriétés par la suite, comme nous l'avons fait ici.

Une ligne peut également être créée en utilisant :

import FreeCAD as App
import Part

def my_create_line(pt1, pt2, obj_name):
    obj = App.ActiveDocument.addObject("Part::Line", obj_name)
    obj.X1 = pt1[0]
    obj.Y1 = pt1[1]
    obj.Z1 = pt1[2]

    obj.X2 = pt2[0]
    obj.Y2 = pt2[1]
    obj.Z2 = pt2[2]

    App.ActiveDocument.recompute()
    return obj

line = my_create_line((0, 0, 0), (0, 10, 0), "LineName")

Cercle

Un cercle peut être créé de la même manière :

import FreeCAD as App
import Part

doc = App.activeDocument()

circle = Part.Circle() 
circle.Radius = 10.0  
obj = doc.addObject("Part::Feature", "Circle")
obj.Shape = circle.toShape()

doc.recompute()

Ou en utilisant :

import FreeCAD as App
import Part

def my_create_circle(rad, obj_name):
    obj = App.ActiveDocument.addObject("Part::Circle", obj_name)
    obj.Radius = rad

    App.ActiveDocument.recompute()
    return obj

circle = my_create_circle(5.0, "CircleName")

Nous pouvons également créer un cercle en définissant son centre, son axe et son rayon :

import FreeCAD as App
import Part

doc = App.activeDocument()

center = App.Vector(1, 2, 3)
axis = App.Vector(1, 1, 1)
radius = 10
circle = Part.Circle(center, axis, radius)
obj = doc.addObject("Part::Feature", "Circle")
obj.Shape = circle.toShape()

doc.recompute()

Ou en définissant trois points sur sa circonférence :

import FreeCAD as App
import Part

doc = App.activeDocument()

p1 = App.Vector(10, 0, 0)
p2 = App.Vector(0, 10, 0)
p3 = App.Vector(0, 0, 10)
circle = Part.Circle(p1, p2, p3)
obj = doc.addObject("Part::Feature", "Circle")
obj.Shape = circle.toShape()

doc.recompute()

Notez qu'une fois encore, nous avons utilisé le cercle (primitive géométrique) pour construire une forme. Nous pouvons bien sûr toujours accéder à notre géométrie de construction par la suite, en faisant :

shape = obj.Shape
edge = shape.Edges[0]
curve = edge.Curve

Ici nous prenons la forme Shape de notre objet obj et ensuite sa liste de Edges. Dans ce cas, il n'y aura qu'une seule arête car nous avons créé la forme à partir d'un seul cercle. Nous ne prenons donc que le premier élément de la liste Edges, puis sa courbe. Chaque arête a une Curve, qui est la primitive géométrique sur laquelle elle est basée.

Arc

Un arc peut être créé comme suit :

import FreeCAD as App
import Part

doc = App.activeDocument()

p1 = App.Vector(10, 0, 0)
p2 = App.Vector(0, 10, 0)
p3 = App.Vector(-10, 0, 0)
arc = Part.Arc(p1, p2, p3)
obj = doc.addObject("Part::Feature", "Arc")
obj.Shape = arc.toShape()

doc.recompute()

Ceci dessine un demi-cercle. Le centre est à (0, 0, 0). Le rayon est de 10. P1 est le point de départ sur l'axe +X. P2 est le point central sur l'axe +Y et P3 est le point final sur l'axe -X.

On peut aussi créer un arc à partir d'un cercle :

import FreeCAD as App
import Part

doc = App.activeDocument()

p1 = App.Vector(10, 0, 0)
p2 = App.Vector(0, 10, 0)
p3 = App.Vector(-10, 0, 0)
circle = Part.Circle(p1, p2, p3)
arc = Part.ArcOfCircle(circle, 0.0, 0.7854)
obj = doc.addObject("Part::Feature", "Arc")
obj.Shape = arc.toShape()

doc.recompute()

Il faut un cercle, un angle de départ et un angle d'arrivée en radians.