======= 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 :