Géométrie constructive des solides avec pyvista#
Objectifs pédagogiques
Dans cette feuille, nous allons découvrir comment programmer des objets 3D, par exemple en vue de les imprimer au FabLab. On parle de géométrie constructive des solides. Ce sera aussi l’occasion de mettre en œuvre les éléments de programmation rencontrés précédemment.
Objets géométriques élémentaires#
Commençons par construire une sphère et affichons la :
import pyvista
sphere = pyvista.Sphere()
sphere.plot()
Vérifiez que la sphere s’affiche bien !
Construisons maintenant une sphère en spécifiant son rayon (radius) et son centre (center):
sphere = pyvista.Sphere(radius=3, center=(0,0,1))
sphere.plot()
Exercice
Construisez de même un cube avec
pyvista.Cube
.
### BEGIN SOLUTION
cube = pyvista.Cube()
cube.plot()
### END SOLUTION
Exercice (suite)
Construisez un parallélépipède rectangle de centre
(1,0,0)
, de longueur 3 (x_length
), de largeur 4 (y_length
) et de hauteur 2 (z_length
).Indication
Consultez la documentation de
Cube
avec la commandepyvista.Cube?
.
### BEGIN SOLUTION
cube = pyvista.Cube(center = (1,0,0), x_length=3, y_length=4, z_length=2)
cube.plot()
### END SOLUTION
Exercice (fin)
Consultez la documentation de
pyvista.Cylinder
etpyvista.Cone
pour construire respectivement un cylindre vertical et un cone vertical à 12 facettes.Consultez la documentation de
pyvista.PlatonicSolid
pour d’autres objets.
### BEGIN SOLUTION
cylinder = pyvista.Cylinder(center=(1,0,0), direction=(0,0,1), height=10, radius=.5)
cylinder.plot()
### END SOLUTION
### BEGIN SOLUTION
cone = pyvista.Cone(direction=(0,0,1), resolution=24)
cone.plot()
### END SOLUTION
Des maillages, des couleurs et des scènes#
Observez de près les objets que que nous avons construit ci-dessus. Vous constaterez que ce sont des surfaces en trois dimensions obtenues en combinant une multitude de petites surfaces plates, telles que des triangles. On les appelle des maillages (mesh).
Voici comment afficher un maillage en couleur :
sphere = pyvista.Sphere()
sphere.plot(color="red")
Pour afficher plusieurs maillages avec des couleurs différentes, il faut les insérer dans une scène. Cette scène permettrait aussi de spécifier d’autres éléments, comme la position par défaut de la caméra, etc.
cube = pyvista.Cube(center=(-1,0,0))
sphere = pyvista.Sphere(center=(1,0,0))
scene = pyvista.Plotter()
scene.add_mesh(cube, color='green')
scene.add_mesh(sphere, color='red')
scene.show()
Construction de nouveaux objets par opérations booléennes#
Nous allons maintenant construire de nouveaux objets en combinant le cube et la sphère.
Astuce
Le cube est, par défaut, construit à partir de carrés. Or, pour effectuer la plupart des opérations à venir, nous avons besoin d’une surface triangulée, c’est-à-dire définie par une collection de triangles. Pour cela on triangule le cube ci-dessous.
cube = pyvista.Cube().triangulate().subdivide(3)
sphere = pyvista.Sphere(radius=.65)
Calculons maintenant la différence entre le cube et la sphère et affichons la :
objet = cube.boolean_difference(sphere)
objet.plot(color="lightblue")
C’est un exemple d”opération booléenne entre figures géométriques. De la même manière, on pourrait calculer la différence entre la sphère et le cube :
objet = sphere.boolean_difference(cube)
objet.plot(color="lightblue")
l’union entre le cube et la sphère :
objet = cube.boolean_union(sphere)
objet.plot(color="lightblue")
ou leur intersection :
objet = cube.boolean_intersection(sphere)
objet.plot(color="lightblue")
Pour l’union ou la différence, on peut utiliser les opérateurs +
et -
comme
ci-dessous:
objet = cube - sphere
objet.plot()
Exercices
Construisez un bonhomme de neige en empilant une moyenne sphère sur une grande sphère.
Améliorez votre bonhomme de neige en rajoutant par exemple des yeux, un nez et tout ce que vous voudrez d’autre.
Construisez les anneaux olympiques, avec des anneaux à section carrée.
Transformations géométriques#
Une fois un objet construit, il est possible de lui appliquer des transformations géométriques: translations, rotations, homothéties.
Voici la réunion du cube et d’une copie translatée :
objet = cube + cube.translate([2,0,0])
objet.plot()
la réunion du cube et d’une rotation du cube de 45 degrés selon l’axe vertical :
objet = cube + cube.rotate_z(30)
objet.plot()
la réunion du cube et d’une copie translatée et de taille multipliée (scale) par .5
:
objet = cube + cube.translate([2,0,0]).scale(.5)
objet.plot()
Exercices#
Exercice
Reproduisez les exemples du tutoriel d’OpenScad
Exercices : boucles et compréhensions
Disposez douze bonhommes de neige en cercle, regardant tous vers le centre.
Construisez un escalier.
Construisez un escalier en colimaçon.
Exercices : récursivité
Construisez une éponge de Menger
Construisez des arbres
Extrusion#
L”extrusion est un procédé puissant pour construire une forme tridimensionnelle à partir d’une forme plane, par analogie à une extrusion mécanique. Pensez au boudin obtenu en pressant un tube de pâte dentifrice, à travers son orifice rond.

Fig. 1 Objets virtuels créés par extrusion d’une même section suivant trois modes: rectiligne, circulaire ou gauche (crédits: Wikipedia).#
Voir aussi
À faire
Ajouter un ou des exemples avec explications et des exercices Par exemple tirés de la doc d’OpenScad.
Exercice
Consultez la documentation de extrude et extrude_rotate.
Construisez des anneaux olympiques à section circulaire.
Export et impression 3D#
Une fois que l’on a construit un objet, on peut le sauvegarder (save), par exemple dans
le format stl
pour impression 3D:
objet.save("objet.stl")
Cela va créer un fichier objet.stl
dans le même dossier que le carnet Jupyter. Vous
pouvez choisir n’importe quel autre nom.
Impression avec Prusa#
Téléchargez l’outil de Prusa depuis: https://www.prusa3d.com/page/prusaslicer_424/
Ouvrez le dossier où a été téléchargé le fichier.
Depuis le navigateur de fichier, désarchiver l’archive.
Faitez un clic droit sur le fichier
PrusaSlicer-2.8.1+linux-x64-newer-distros-GTK3-202409181416.AppImage
-> Propriétés -> Permissions -> Autoriser l’exécution du fichier.Exécutez ce fichier.
Impression avec Cura#
Téléchargez la version Linux.AppImage de Cura depuis le site web.
Ouvrez le dossier ou a été téléchargé le fichier
Faitez un clic droit sur le fichier -> Propriétés -> Permissions -> Autoriser l’exécution du fichier
Clic sur le fichier pour lancer l’application