Géométrie constructive des solides avec pyvista
Objets géométriques élémentaires¶
Commençons par construire une sphère et affichons la :
import pyvistasphere = 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()### BEGIN SOLUTION
cube = pyvista.Cube()
cube.plot()
### END SOLUTION### BEGIN SOLUTION
cube = pyvista.Cube(center=(1, 0, 0), x_length=3, y_length=4, z_length=2)
cube.plot()
### END SOLUTIONConsultez la documentation de
pyvista.Cylinderetpyvista.Conepour construire respectivement un cylindre vertical et un cone vertical à 12 facettes.Consultez la documentation de
pyvista.PlatonicSolidpour d’autres objets.
### BEGIN SOLUTION
cylinder = pyvista.Cylinder(
center=(1, 0, 0), direction=(0, 0, 1), height=10, radius=0.5
)
cylinder.plot()
### END SOLUTION### BEGIN SOLUTION
cone = pyvista.Cone(direction=(0, 0, 1), resolution=24)
cone.plot()
### END SOLUTIONDes 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.
pyvista construit la surface du cube à partir de carrés. Or, pour effectuer la plupart
des opérations entre solides à venir, nous avons besoin que la surface du solide soit
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=0.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()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(0.5)
objet.plot()Exercices¶
Reproduisez les exemples du tutoriel d’OpenScad
Disposez douze bonhommes de neige en cercle, regardant tous vers le centre.
Construisez un escalier.
Construisez un escalier en colimaçon.
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.
Objets virtuels créés par extrusion d’une même section suivant trois modes: rectiligne, circulaire ou gauche (crédits: Wikipedia).
Par exemple tirés de la documentation d’OpenScad.
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