======= Défi OpenSCAD Défi Porte-bouteille & bouteilles ====== {{{project logiciels: OpenSCAD fichiers: usager: plogingenu (bully) licence:cc-by-nc }}} {{:animations:ateliers_openscad:exercices:defiopenscad_verreapiedclassique.png?200 }} **Consigne : Réaliser un porte bouteille et ses bouteilles !** * **méthode :** A la Hélène {{:animations:ateliers_openscad:exercices:de_fi_openscad_verre_a_pied_super_rapide.stl|Voir l'objet en 3D (ln) }} Besoin d'aide, lisez la suite ! ===== Inspiration ===== L'article qui explique comment faire manuellement [[https://www.instructables.com/id/An-Unconventional-Beer-Caddy/| un porte bouteille original de manière traditionnel]] (perceuses, scies), nous a bien plu. Cependant, on préfère : - le faire à la manière FabLab en utilisant les outils (Découpeuse laser) - option A - en modulant les dimensions des bouteilles pour convenir à tou-te-s (limonades, bières, vins, eaux gazeuses ...) - option B - en modulant le nombre de bouteilles voulu, (de 1 à plus infini) - option C - En faisant des trous au niveau de la base, pour être sur que les bouteilles ne bougent pas. - option D - en calculant automatique la longueur de corde nécessaire - option E - en modulant selon l'épaisseur de la planche utilisé - option F Pour cela rien de mieux, qu'OpenSCAD, pour nous faire un générateur paramétrique de plan (.svg) de porte bouteille. ===== Aides ===== ==== 1. Réfléchissez ==== Prenez vraiment le temps de réfléchir (Papier et crayon peuvent être utiles.) ==== 2. Phrase explicative ==== Si vous ne savez pas par où commencer : * **méthode :** à la Hélène * Une différence entre l'union de trois parallélépipèdes (arrondies) à des hauteurs différentes (socle,socle troué et haut troué) et, les formes de bouteilles plus une marge et des petits trous et leur symétrie. ==== 3. Les fonctions utiles ==== **méthode :** ln **1. Créer une bouteille** __Méthode simple __ * le cylindre : //cylinder(d1,d2,h);// __Méthode un peu plus compliquée__ * le cylindre : //cylinder(d1,d2,h);// * : //hull(){...}// * le déplacement : //translate([x,y,z]){...}// __ Méthode pour les gens précis__ * polygone : //polygon();// * rotate_extrude : //rotate_extrude();// **2. Créer un pack de bouteilles paramétriques** * Boucle for : //for(){...}// * Module : // // **3. Créer les planches** __ Méthode pour planches carrées__ * le cube ://cube();// * le déplacement : //translate([x,y,z]){...}// __ Méthode pour planches au bord arrondi__ * le cube ://cube();// * le "Minkoski" : //minkoski([x,y,z]){...}// * le cylindre : //cylinder(d1,d2,h);// **4. Créer les petits trous** __ Méthode répétitive__ * le cylindre : //cylinder(d1,d2,h);// * le déplacement : //translate([x,y,z]){...}// __ Méthode courte__ * le cylindre : //cylinder(d1,d2,h);// * le déplacement : //translate([x,y,z]){...}// * le miroir : //mirror ([x,y,z]){...}// **5. Assembler les différentes parties** * la différence : //difference(){...}// **6. Réalisation de la poignée** * le cylindre : //cylinder(d1,d2,h);// * le déplacement : //translate([x,y,z]){...}// * la rotation : //rotate([x,y,z]){...}// **7.Export en .svg** * ... **8.Modélisation de la corde** (bonus) * ... **9.Animation du modèle 3D** (bonus) * ... Si vous ne connaissez pas bien l'utilisation d'une de ses fonctions, il peut être utile d'aller voir les exercices du wiki ou la page Aide-Mémoire OpenSCAD. ==== 4. Pièges à éviter ==== **En général :** * Le point-virgule * Bien ouvrir et fermer les parenthèses, crochets et accolades * Les erreurs de frappe **Conseils : Projets complexes** //Plus le projet est complexes, plus il est important de travailler avec méthodologie// * Prendre les vraies mesures d'une bouteille, plus réaliste * N'hésitez pas à utiliser la transparence ( # ) pour bien comprendre ou sont situées vos pièces * Lorsque que vous ne comprenez plus, ne mettez pas des valeurs au pif, faites une pause plutôt. * Enregistrer plusieurs versions de votre fichier, afin de retrouver rapidement une sauvegarde qui marche. * Commencez toujours par comprendre la logique, avant de généraliser (boucle for) * Bien vérifier qu'en changeant chaque variable, le modèle reste valable. Cela permet de vérifier si il n'y a pas d'erreur dans le code. * Commentez votre code, pour vous aider, mais aussi pour faciliter la documentation ===== Solutions par étapes ===== ==== Créer une bouteille - Méthode simple ==== {{:animations:ateliers_openscad:exercices:bouteille1.png?200|}} {{:animations:ateliers_openscad:exercices:bouteille1.stl|Voir l'objet en 3D }} hb=230 ; // hauteur de la bouteille hg=84; // hauteur du goulot db=70; //diamètre ou largeur basse de la bouteille dh=40; // diamètre ou largeur haute de la bouteille cylinder(d=db, h=hb-hg, $fn=100); // gros cylindre cylinder(d=dh, h=hb, $fn=100); //petit cylindre ==== Créer une bouteille - un peu plus compliquée ==== {{:animations:ateliers_openscad:exercices:bouteille3.png?200|}} {{:animations:ateliers_openscad:exercices:bouteille3.stl|Voir l'objet en 3D }} hb=230 ; // hauteur de la bouteille hg=84; // hauteur du goulot db=70; //diamètre ou largeur basse de la bouteille dh=40; // diamètre ou largeur haute de la bouteille hi=123; // hauteur intermédiaire cylinder(d=db, h=hi);// gros cylindre hull(){ translate([0,0,hi]){cylinder(d=db, h=1);} translate([0,0,hb-hg]){cylinder(d=dh, h=1);} } translate([0,0,0]){cylinder(d=dh, h=hb);} //petit cylindre ==== Créer une bouteille - Méthode pour les gens précis ==== {{:animations:ateliers_openscad:exercices:bouteille3.png?200|}} {{:animations:ateliers_openscad:exercices:bouteille3.stl|Voir l'objet en 3D }} hb=230; //hauteur de la bouteille hg=84; // hauteur du goulot db=70; //diamètre ou largeur basse de la bouteille dh=40; // diamètre ou largeur haute de la bouteille hi=123; rotate_extrude($fn=80){polygon( points=[[0,0],[db/2,0],[db/2,hi],[dh/2,hb-hg],[dh/2,hb],[0,hb]]);} ==== Créer un module bouteille(); ==== module bouteille(hb=230,hi=123,hg=84,db=70,dh=40){ //hb, hauteur de la bouteille //hg, hauteur du goulot //db, diamètre ou largeur basse de la bouteille //dh, diamètre ou largeur haute de la bouteille //hi, hauteur intermédiaire cylinder(d=db, h=hi);// gros cylindre hull(){ translate([0,0,hi]){cylinder(d=db, h=1);} translate([0,0,hb-hg]){cylinder(d=dh, h=1);} } translate([0,0,0]){cylinder(d=dh, h=hb);} } // bouteille(); ==== Créer un pack de bouteilles paramétriques ==== Télécharger le code Module bouteille + db=70; // Rayon des trous, rt va de 0 à + infini, esp= db+25; // espacemenent entre les trous Nx= 2; // Nx va de 0 à + infini, entier uniquement Compte +1 Ny= 1; //Ny=Nx, pour faire un damier carré, ou Ny = valeur au choix for (j = [-Ny/2:Ny/2]){ for (i = [-Nx/2:Nx/2]){ translate ([i*esp,j*esp,0]) {bouteille();} } } ===== Solutions finales===== **méthode :** // N'hésitez pas à faire varier les paramètres // Télécharger le code - ** Votre méthode :** N'hésitez pas à mettre vos codes ci-dessous :