Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
|
animations:ateliers_openscad:exercices:defi_portebouteille [2020/04/01 10:43] plogingenu créée |
animations:ateliers_openscad:exercices:defi_portebouteille [2020/04/01 16:30] (Version actuelle) plogingenu |
||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | !-- Complétez la fiche projet ci dessous --> | + | ======= Défi OpenSCAD Défi Porte-bouteille & bouteilles ====== |
| {{{project | {{{project | ||
| logiciels: OpenSCAD | logiciels: OpenSCAD | ||
| Ligne 10: | Ligne 10: | ||
| {{:animations:ateliers_openscad:exercices:defiopenscad_verreapiedclassique.png?200 }} | {{:animations:ateliers_openscad:exercices:defiopenscad_verreapiedclassique.png?200 }} | ||
| - | **Consigne : Réaliser un porte bouteille!** | + | **Consigne : Réaliser un porte bouteille et ses bouteilles !** |
| * **méthode :** A la Hélène | * **méthode :** A la Hélène | ||
| - | * **méthode :** A la bully | ||
| {{:animations:ateliers_openscad:exercices:de_fi_openscad_verre_a_pied_super_rapide.stl|Voir l'objet en 3D (ln) }} | {{:animations:ateliers_openscad:exercices:de_fi_openscad_verre_a_pied_super_rapide.stl|Voir l'objet en 3D (ln) }} | ||
| - | {{:animations:ateliers_openscad:exercices:defiopenscad_verreapiedclassique.stl|Voir l'objet en 3D (verre classique) }} | ||
| Besoin d'aide, lisez la suite ! | Besoin d'aide, lisez la suite ! | ||
| Ligne 26: | Ligne 24: | ||
| - en modulant les dimensions des bouteilles pour convenir à tou-te-s (limonades, bières, vins, eaux gazeuses ...) - option B | - 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 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 soient ne bouge pas. - option D | + | - 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 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. | Pour cela rien de mieux, qu'OpenSCAD, pour nous faire un générateur paramétrique de plan (.svg) de porte bouteille. | ||
| Ligne 47: | Ligne 46: | ||
| ==== 3. Les fonctions utiles ==== | ==== 3. Les fonctions utiles ==== | ||
| - | |||
| **méthode :** ln | **méthode :** ln | ||
| - | * Créer une bouteille (méthode simple) | + | |
| + | **1. Créer une bouteille** | ||
| + | |||
| + | __Méthode simple __ | ||
| * le cylindre : //cylinder(d1,d2,h);// | * le cylindre : //cylinder(d1,d2,h);// | ||
| - | * Créer un bouteille (méthode un peu plus compliqué) | + | __Méthode un peu plus compliquée__ |
| * le cylindre : //cylinder(d1,d2,h);// | * le cylindre : //cylinder(d1,d2,h);// | ||
| * : //hull(){...}// | * : //hull(){...}// | ||
| - | * Créer une bouteille (méthode pour les gens précis) | + | * le déplacement : //translate([x,y,z]){...}// |
| - | * polygone : //polygon(points);// | + | __ Méthode pour les gens précis__ |
| + | * polygone : //polygon();// | ||
| + | * rotate_extrude : //rotate_extrude();// | ||
| - | * Créer un pack paramétrique de bouteille (méthode longue et répétitive) | + | **2. Créer un pack de bouteilles paramétriques** |
| * Boucle for : //for(){...}// | * Boucle for : //for(){...}// | ||
| * Module : // // | * Module : // // | ||
| + | **3. Créer les planches** | ||
| + | __ Méthode pour planches carrées__ | ||
| + | * le cube ://cube();// | ||
| + | * le déplacement : //translate([x,y,z]){...}// | ||
| - | * Créer les petits trous (méthode longue et répétitive) | + | __ Méthode pour planches au bord arrondi__ |
| - | * la différence : //difference// | + | * 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 cylindre : //cylinder(d1,d2,h);// | ||
| - | * Créer les petits trous (méthode courte) | + | * le déplacement : //translate([x,y,z]){...}// |
| - | * le miroir : //mirror ([x,y,z]){...}// | + | __ Méthode courte__ |
| - | * la différence : //difference(){...}// | + | |
| * le cylindre : //cylinder(d1,d2,h);// | * 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(){...}// | * la différence : //difference(){...}// | ||
| - | * le cylindre/cône : //cylinder(d1,d2,h);// | ||
| - | **méthode :** verre à pied classique | + | **6. Réalisation de la poignée** |
| - | * la différence : //difference(){...}// | + | * le cylindre : //cylinder(d1,d2,h);// |
| - | * le cylindre/cône : //cylinder(d1,d2,h);// | + | |
| * le déplacement : //translate([x,y,z]){...}// | * le déplacement : //translate([x,y,z]){...}// | ||
| - | * le cube ://cube();// | + | * la rotation : //rotate([x,y,z]){...}// |
| - | * la sphere : // sphere(d=);// | + | |
| + | **7.Export en .svg** | ||
| + | * ... | ||
| + | |||
| + | **8.Modélisation de la corde** (bonus) | ||
| + | * ... | ||
| + | **9.Animation du modèle 3D** (bonus) | ||
| + | * ... | ||
| <note tip>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.</note> | <note tip>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.</note> | ||
| Ligne 96: | Ligne 117: | ||
| - | **méthode :** Super rapide | + | **Conseils : Projets complexes** |
| - | * Pas de difficultés particulières, on superpose 3 formes donc la base est centrée sur le point d'origine. | + | //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 | ||
| + | |||
| - | |||
| - | **méthode :**Verre à pied classique | ||
| - | -Déplacer les formes de la bonne distance : | ||
| - | -Poser la base et le pied, centrée sur le point d'origine (donc pas de translate(), la superposition du pied et de la basse n'est pas gênante.) | ||
| - | - Déplacer la sphère extérieure de la longueur du pied | ||
| - | - Déplacer la sphère intérieur de la longueur du pied plus un léger écart (qu'on peut calculer comme le rayon de la sphère extérieure moins le rayon de la sphère intérieure) | ||
| - | - Déplacer le cube de la longueur du pied plus le rayon de la sphère extérieure. | ||
| - | - Il est possible d'utiliser un translate() pour chaque pièce, mais le code sera plus lourd, il est aussi possible de faire un translate de translate(), cf .code ci-dessous | ||
| + | ===== 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 }} | ||
| + | <code java> | ||
| + | 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 | ||
| - | ===== Solutions ===== | + | cylinder(d=db, h=hb-hg, $fn=100); // gros cylindre |
| + | cylinder(d=dh, h=hb, $fn=100); //petit cylindre | ||
| + | </code> | ||
| + | ==== 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 }} | ||
| - | **méthode :** super rapide (4 lignes et 2 fonctions) | + | <code java> |
| + | 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 | ||
| - | // Changer le $fn= pour faire varier le nombre de facettes de chaque solide // | + | 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 | ||
| - | {{:animations:ateliers_openscad:exercices:de_fi_openscad_-_verre_a_pied_super_rapide.png?200}} | + | </code> |
| - | {{:animations:ateliers_openscad:exercices:de_fi_openscad_verre_a_pied_super_rapide.stl|Voir l'objet en 3D}} | + | |
| + | |||
| + | ==== 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 }} | ||
| <code java> | <code java> | ||
| - | difference(){ | + | hb=230; //hauteur de la bouteille |
| - | cylinder(r1=0, r2= 40, h =100, $fn=100); //cône extérieur | + | hg=84; // hauteur du goulot |
| - | cylinder(r1=0, r2= 38, h =100+1, $fn=100); //cône intérieur | + | db=70; //diamètre ou largeur basse de la bouteille |
| - | } | + | dh=40; // diamètre ou largeur haute de la bouteille |
| - | cylinder(r1=40, r2=5, h= 10, $fn=5); // la base | + | 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]]);} | ||
| </code> | </code> | ||
| + | ==== Créer un module bouteille(); ==== | ||
| + | <code java> | ||
| + | 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);} | ||
| - | **méthode :** Verre à pied classique (7 lignes et 5 fonctions) | + | } |
| - | // N'hésitez pas à faire varier les paramètres lv et hv // | + | // bouteille(); |
| + | </code> | ||
| - | {{:animations:ateliers_openscad:exercices:defiopenscad_verreapiedclassique.png?200}} | + | ==== Créer un pack de bouteilles paramétriques ==== |
| - | {{:animations:ateliers_openscad:exercices:defiopenscad_verreapiedclassique.stl|Voir l'objet en 3D}} | + | |
| + | Télécharger le code | ||
| + | |||
| + | Module bouteille + | ||
| <code java> | <code java> | ||
| - | lv=40 ; //largeur du verre, ici 40mm | + | db=70; // Rayon des trous, rt va de 0 à + infini, |
| - | hv=100; // hauteur du verre, ici 100mm | + | 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 | ||
| - | translate([0,0,hv]){ | + | for (j = [-Ny/2:Ny/2]){ |
| - | difference(){ | + | for (i = [-Nx/2:Nx/2]){ |
| - | sphere(r=lv,$fn=100); //sphere extérieur | + | translate ([i*esp,j*esp,0]) {bouteille();} |
| - | translate([0,0,lv]){cube(2*lv, center= true);}//cube | + | } |
| - | sphere(r=lv-2, $fn=100); //sphère intérieur | + | |
| - | } | + | |
| } | } | ||
| - | cylinder(r=lv/10,h=hv-lv,$fn=100); // le pied | + | |
| - | cylinder(r1=lv,r2=lv/10,h=hv/10,$fn=100); // la base | + | |
| </code> | </code> | ||
| + | ===== Solutions finales===== | ||
| - | ** Votre méthode :** | ||
| - | N'hésitez pas à mettre vos codes ci-dessous : | ||
| - | {{:animations:ateliers_openscad:20191210_134616.jpg?300}} | + | **méthode :** |
| - | {{:animations:ateliers_openscad:20191210_134610.jpg?300}} | + | // N'hésitez pas à faire varier les paramètres // |
| + | Télécharger le code - | ||
| <code java> | <code java> | ||
| - | .... | ||
| - | </code> | ||
| - | <code java> | ||
| - | .... | ||
| </code> | </code> | ||
| + | |||
| + | ** Votre méthode :** | ||
| + | N'hésitez pas à mettre vos codes ci-dessous : | ||
| + | |||