Part scripting/fr: Difference between revisions
No edit summary |
No edit summary |
||
(14 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. |
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=== |
||
Line 112: | Line 117: | ||
}} |
}} |
||
<span id="Circle"></span> |
|||
===Cercle=== |
===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 146: | Line 152: | ||
}} |
}} |
||
⚫ | |||
<div class="mw-translate-fuzzy"> |
|||
⚫ | |||
</div> |
|||
{{Code|code= |
{{Code|code= |
||
Line 166: | 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 186: | Line 188: | ||
}} |
}} |
||
⚫ | |||
<div class="mw-translate-fuzzy"> |
|||
⚫ | |||
</div> |
|||
{{Code|code= |
{{Code|code= |
||
Line 196: | 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 |
||
</div> |
|||
===Arc=== |
===Arc=== |
||
Un arc peut être créé comme suit : |
|||
{{Code|code= |
{{Code|code= |
||
Line 220: | Line 218: | ||
}} |
}} |
||
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= |
{{Code|code= |
||
Line 241: | Line 239: | ||
}} |
}} |
||
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.
![](/images/thumb/8/8f/Power_user_hub.png/24px-Power_user_hub.png)
- Scripts FreeCAD : Python, Introduction à Python, Tutoriel sur les scripts Python, Débuter avec les scripts
- Modules : Modules intégrés, Unités, Quantity
- Ateliers : Création d'atelier, Commands Gui, Les commandes, Installer des ateliers supplémentaires
- Maillages et objets Parts : Scripts Mesh, Script de données topologiques, Conversion objet Mesh en Part, PythonOCC
- Objets paramétriques : Objets créés par script, Viewproviders (Icône personnalisée dans l'arborescence)
- Scénographie : Graphe de scène Coin (Inventor), Pivy
- Interface graphique : Création d'interface, Création d'une boite de dialogue (1, 2, 3, 4, 5), PySide, Exemples PySide débutant, intermédiaire, expérimenté
- Macros : Macros, Comment installer des macros
- Intégration : Intégrer FreeCAD, Intégration de FreeCADGui
- Autre : Expressions, Extraits de codes, Fonction - tracer une ligne, Bibliothèque mathématique vectorielle de FreeCAD (déprécié)
- Primitives : Box, Cylindre, Sphère, Cône, Tore, Tube, Primitives, Générateur de formes
- Création et modification des objets : Extrusion, Révolution, Miroir, Congé, Chanfrein, Créer une face, Surface réglée, Lissage, Balayage, Section, Coupes, Décalage 3D, Décalage 2D, Évidement, Projection sur surface, Ancrage
---
- Booléen : Créé un composé, Éclater le composé, Filtre composé, Opération booléenne, Soustraction, Union, Intersection, Connecter, Intégrer, Découper, Fragments booléens, Séparer/exploser, Scinder, OU exclusif
- Mesure : Mesure linéaire, Mesure Angulaire, Rafraîchir les mesures, Effacer toute mesure, Tout basculer, Mesures dans la 3D, Mesures selon le repère global
- Autre outils : Importation, Exportation, Sélection par zone, Forme à partir d'un maillage, Points à partir d'un maillage, Convertir en solide, Inverser les formes, Copie simple, Copie transformée, Copie d'un élément, Affiner la forme, Vérifier la géométrie, Supprimer la fonctionnalité, Apparence, Définir les couleurs