Il existe plusieurs outils pour concevoir des objets 3d. Généralement on utilise des logiciels tels que Blender, Fusion 360, Tinkercad, SketchUp etc. Mais, pour ceux qui ont des connaissances en programmation et en géométrie dans l'espace, il est possible d'effectuer des créations à l'aide de Python.
En effet, la librairie NumPy possède une sous librairie Numpy-stl qui permet d'obtenir des fichiers 3d au format stl.
Numpy-stl permet de modifier des fichiers stl qu'on importe, d'en fusionner plusieurs, d'effectuer des transformations géométriques (rotation, translation etc.) mais surtout peut créer des figures de l'espace à partir de zéro en définissant les points puis les faces nécessaires.

La base d'un fichier stl est le triangle. Par exemple, pour créer un cube, il faut tout d'abord définir les 8 sommets par leurs coordonnées, puis on définit deux triangles par faces à l'aide de ces points. En définissant ces triangles il faut bien donner les sommets dans le bon ordre, car celui-ci détermine la direction du vecteur normal au triangle, selon la règle du produit vectoriel. Et un fichier stl se doit de contenir le vecteur normal de chaque triangle qui le compose.

Mais tout cela se fait assez simplement en suivant les exemples de base de la documentation de Numpy-stl. La souplesse de Python permet de définir des fonctions qui généralisent le processus. Chez La Boutique des Maths nous avons décidé de créer une fonction générant un parallélépipède rectangle avec plusieurs paramètres puis d'utiliser celle-ci dans d'autres fonctions qui font varier les paramètres et qui fusionnent les parallélépipèdes créés au fur et à mesure.
Voici un exemple (que l'on peut déplacer à la souris) de ce que l'on peut obtenir avec plusieurs fonctions mais une seule boucle for :

