Part scripting/fr: Difference between revisions

From FreeCAD Documentation
(Created page with "===Ligne===")
No edit summary
 
(23 intermediate revisions by 3 users not shown)
Line 8: Line 8:
{{TOCright}}
{{TOCright}}


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


Line 16: Line 17:
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]].
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===
===Voir aussi===


Line 21: Line 23:
* [[OpenCASCADE/fr|OpenCASCADE]]
* [[OpenCASCADE/fr|OpenCASCADE]]


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


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


{{Code|code=
{{Code|code=
Line 36: Line 39:
}}
}}


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


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


Pour créer un élément de ligne, passez dans la [[Python_console/fr|console Python]] et entrez :
<div class="mw-translate-fuzzy">
Pour créer un élément ligne, passer à la console Python et taper :
</div>


{{Code|code=
{{Code|code=
Line 59: Line 62:
}}
}}


<div class="mw-translate-fuzzy">
Passons en revue l'exemple Python ci-dessus étape par étape :
Passons en revue l'exemple Python ci-dessus étape par étape :
</div>


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


Ceci charge les modules FreeCAD et Part et crée un nouveau document.
<div class="mw-translate-fuzzy">
Charge l'atelier Part et crée un nouveau document
</div>


{{Code|code=
{{Code|code=
Line 86: Line 85:
}}
}}


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.
<div class="mw-translate-fuzzy">
Cette commande ajoute un objet de type Part (Pièce) au document et affecte la représentation de forme du segment de ligne à la propriété 'Shape' ('forme') de l'objet ajouté. Il est important de comprendre ici que nous avons utilisé une primitive géométrique (Part.LineSegment) pour créer un TopoShape à partir de celle-ci (la méthode toShape()). Seules les formes peuvent être ajoutées au document. Dans FreeCAD, les primitives géométriques sont utilisées comme des "structures de base" pour construire les formes.
</div>


{{Code|code=
{{Code|code=
Line 94: Line 91:
}}
}}


<div class="mw-translate-fuzzy">
Met à jour le document. Cela prépare également la représentation visuelle du nouvel objet Part.
Met à jour le document. Cela prépare également la représentation visuelle du nouvel objet Part.
</div>


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.
<div class="mw-translate-fuzzy">
Notez qu'une Line Segment (segment de ligne) peut être créée en spécifiant son point de départ et son point final directement dans le constructeur, par ex. Part.LineSegment(point1, point2) ou nous pouvons créer une ligne par défaut et définir ses propriétés après, comme nous l'avons fait ici.
</div>


<div class="mw-translate-fuzzy">
Une ligne peut également être créée en utilisant :
Une ligne peut également être créée en utilisant :
</div>


{{Code|code=
{{Code|code=
Line 126: Line 117:
}}
}}


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


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


{{Code|code=
{{Code|code=
Line 144: Line 136:
}}
}}


Ou en utilisant :
<div class="mw-translate-fuzzy">
ou en utilisant :
</div>


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


Nous pouvons également créer un cercle en définissant son centre, son axe et son rayon :
<div class="mw-translate-fuzzy">
ou créer un cercle défini par son centre, son axe et son rayon en utilisant :
</div>


{{Code|code=
{{Code|code=
Line 182: Line 170:
}}
}}


Ou en définissant trois points sur sa circonférence :
<div class="mw-translate-fuzzy">
ou créer un cercle défini par trois points en utilisant :
</div>


{{Code|code=
{{Code|code=
Line 202: Line 188:
}}
}}


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 :
<div class="mw-translate-fuzzy">
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:
</div>


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


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.
<div class="mw-translate-fuzzy">
Ici on prend la forme de notre objet f, puis nous prenons la liste de ses arêtes. Dans ce cas il y aura une seule arête parce que nous avons fait toute la forme à partir d'un cercle unique, c'est pourquoi nous ne prenons que le premier élément de la liste des arêtes, et puis nous récupérons sa courbe. Chaque arête a une courbe, qui est la géométrie primitive, sur laquelle elle est basée.
</div>


===Arc===
===Arc===


An arc can be created like this:
Un arc peut être créé comme suit :


{{Code|code=
{{Code|code=
Line 236: Line 218:
}}
}}


This draws a half circle. The center is at (0, 0, 0). The radius is 10. P1 is the start point on +X axis. P2 is the middle point on +Y axis and P3 is the end point on -X axis.
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.


We can also create an arc from a circle:
On peut aussi créer un arc à partir d'un cercle :


{{Code|code=
{{Code|code=
Line 257: Line 239:
}}
}}


It needs a circle, and a start angle and end angle in radians.
Il faut un cercle, un angle de départ et un angle d'arrivée en radians.





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.