Seema BAIG DUSMEE
Exercice 1 : Création d’un produit du quotidien
Pour cet exercice, j’ai réalisé un vide-poche original, en forme de pirogue. J’ai choisi ce design pour son côté esthétique et fonctionnel. Le vide-poche a été gravé avec mon nom de famille, ajoutant une touche personnelle à l’objet. J'ai utilisé Fusion 360 pour le faire, car je n'y arrivais pas avec OpenScad.
Je n'étais pas partie dessus à la base ; je voulais faire une étagère avec un pot de fleurs intégré, munie d'une bibliothèque. Mais la taille de l'étagère est beaucoup trop importante, et une version miniature ne m'intéressait pas. J'ai donc cherché une autre idée, afin d'avoir quelque chose d'à la fois utile, pratique et qui répond à l'exercice !
Pour réaliser mon projet d’étagère avec un pot de fleurs intégré, j’ai utilisé ChatGPT comme assistant de conception. Grâce à des échanges interactifs, j’ai pu préciser mes idées et obtenir des conseils à chaque étape. Voici comment je m’y suis prise :
-
Définir l'idée initiale
J’ai commencé par expliquer mon projet à ChatGPT : créer une petite étagère murale avec un emplacement intégré pour un pot de fleurs. Mon objectif était de combiner esthétique et fonctionnalité dans un design simple et moderne.Prompt utilisé :
"Je veux créer une étagère murale avec un pot de fleurs intégré, dans un style épuré, qui soit imprimable en 3D. Donne moi le code pour OpenScad."ChatGPT m’a alors proposé plusieurs idées, comme intégrer un cylindre pour le pot, choisir des supports légers pour minimiser la matière, et m’a donné des suggestions pour répartir le poids de l’objet.
-
Optimisation du design
Enfin, après avoir conçu un croquis basé sur ces échanges, j’ai décrit à ChatGPT mon design final pour valider sa faisabilité.Prompt utilisé :
"Voici mon design : une étagère rectangulaire avec une ouverture circulaire pour le pot de fleurs, des supports droits pour le mur, et une base renforcée sous le pot. Est-ce que ça te semble réalisable pour une impression 3D ?"ChatGPT m’a confirmé que le design était solide et m’a rappelé de vérifier les dimensions exactes par rapport aux capacités de l’imprimante et du pot de fleurs.
À gauche, l'objet initial. À droite, la pirogue :)
Création d'une étagère avec pot de fleurs intégré avec suspension, et livres --> avec l'aide de : https://chatgpt.com/share/67444630-d040-8013-995c-46fe673aa6db
// Dimensions de l'etagerelongueur = 45; // Longueur de l'etagerelargeur = 15; // Largeurepaisseur = 4; // Epaisseur
// Dimensions du potdiametre_pot = 8; // Diametre du pothauteur_pot = 10; // Hauteur du potepaisseur_pot = 0.5; // Epaisseur des parois du pot
// Dimensions de la suspensioncote_triangle = 40; // Cote du triangle equilateral (en cm)epaisseur_suspension = 0.75; // Epaisseur de la suspension
// Dimensions de base communes aux livreslargeur_livre = 8; // Largeur d'un livreepaisseur_livre = 1.5; // Epaisseur d'un livreespace_livre = 0.1; // Espace entre les livres
module etagere() { difference() { // Base de l'etagere translate([0, 0, -epaisseur / 2]) cube([longueur, largeur, epaisseur], center = true); // Trou esthetique pour le pot (alignement) translate([0, 0, epaisseur / 2]) cylinder(h = epaisseur + 1, r = diametre_pot / 2, center = true); }}
module pot_fleurs() { difference() { // Pot exterieur cylinder(h = hauteur_pot, r = diametre_pot / 2, center = true); // Creux interieur translate([0, 0, epaisseur_pot]) cylinder(h = hauteur_pot - epaisseur_pot, r = (diametre_pot / 2) - epaisseur_pot, center = true); }}
module triangle_creux() { // Creer un triangle equilateral creux difference() { // Triangle plein polygon(points=[[0, 0], [cote_triangle, 0], [cote_triangle/2, sqrt(3)/2 * cote_triangle]]); // Creux interieur du triangle translate([1, 1]) // Decalage leger pour le creux interieur polygon(points=[[0, 0], [cote_triangle-2, 0], [(cote_triangle-2)/2, sqrt(3)/2 * (cote_triangle-2)]]); }}
module suspension() { // Positionnement du triangle sous l'etagere translate([-20, 6.5, -(epaisseur_suspension + epaisseur) / 2]) // Positionne la suspension sous l'etagere rotate([90,0,0]) linear_extrude(epaisseur_suspension) triangle_creux();}
module livre_arrondi(hauteur) { difference() { // Corps principal du livre : un cube translate([8,0,0]) cube([epaisseur_livre, largeur_livre, hauteur], center = false); // Enlever les coins arrondis sur le haut for (x = [-0,0]) { for (y = [-0, 0]) { // Arrondir les coins supérieurs translate([x * (epaisseur_livre / 2), y * (largeur_livre / 2), hauteur]) cylinder(h = 2, r1 = 0, r2 = 2); // Cylindres pour arrondir les coins } } }}
// Liste des hauteurs des livreshauteurs_livres = [10, 13, 15, 14, 12,9];
// Assemblage des livres collés avec un espace entre eux et alignés sur la même basefor (i = [0 : len(hauteurs_livres) - 1]) { // Décalage des livres en X avec espace entre eux translate([i * (epaisseur_livre + espace_livre), -3, -0]) { livre_arrondi(hauteurs_livres[i]); // Appel de la fonction pour chaque hauteur }}
// Assemblage finaletagere();translate([0, 0, epaisseur / 2]) // Place le pot au-dessus de l'etagere pot_fleurs();suspension(); // Ajoute la suspension sous l'etagerelivre_arrondi();
Cube Impossible : une structure géométrique complexe qui ne peut être fabriquée en une seule pièce par des méthodes traditionnelles comme le moulage ou l'usinage. Cette conception comporte des tunnels internes et des parties imbriquées, exploitant les capacités uniques des imprimantes 3D
// Dimensions du cubetaille_cube = 50; // Taille totale du cubeepaisseur = 5; // Épaisseur des paroistaille_tunnel = 15; // Taille des tunnels internes
// Fonction pour créer un cube creux avec des tunnelsmodule cube_impossible() { difference() { // Cube extérieur cube([taille_cube, taille_cube, taille_cube], center = true); // Cube intérieur pour creuser l'intérieur translate([-epaisseur, -epaisseur, -epaisseur]) cube([taille_cube - 2 * epaisseur, taille_cube - 2 * epaisseur, taille_cube - 2 * epaisseur], center = true); // Tunnels traversants dans les trois directions for (i = [-1, 1]) { // Tunnel en X translate([0, i * (taille_cube / 2 - epaisseur), 0]) cube([taille_cube, taille_tunnel, taille_tunnel], center = true); // Tunnel en Y translate([i * (taille_cube / 2 - epaisseur), 0, 0]) cube([taille_tunnel, taille_cube, taille_tunnel], center = true); // Tunnel en Z translate([0, 0, i * (taille_cube / 2 - epaisseur)]) cube([taille_tunnel, taille_tunnel, taille_cube], center = true); } // Structure torsadée interne for (angle = [0 : 45 : 135]) { rotate([angle, angle, 0]) translate([0, 0, 0]) cylinder(h = taille_cube, r = epaisseur / 2, center = true); } }}
// Appel du module pour afficher le cube impossiblecube_impossible();