Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
animations:ateliers_openscad:exercices:defi_pyramide [2020/03/27 19:41] plogingenu créée |
animations:ateliers_openscad:exercices:defi_pyramide [2020/03/31 11:05] (Version actuelle) plogingenu |
||
---|---|---|---|
Ligne 9: | Ligne 9: | ||
}}} | }}} | ||
+ | {{:animations:ateliers_openscad:exercices:defiopenscad_pyramidemethodee.png?200 }} | ||
- | {{:animations:ateliers_openscad:exercices:entonnoir.png?200 }} | ||
+ | **Consigne : Réaliser une pyramide à base carrée !** | ||
+ | * méthode A : 1 ligne & 1 fonction différente //>Il s'agit du défi de fin de l'atelier d'initiation OpenSCAD. // | ||
+ | * méthode B : 15 lignes & 3 fonctions différentes | ||
+ | * méthode C : 3 lignes & 3 fonctions différentes | ||
+ | * méthode D : 3 lignes & 3 fonctions différentes | ||
+ | * méthode E : 1 lignes & 1 fonction différente | ||
- | **Consigne : Réaliser une pyramide !** | ||
- | * méthode A : ? lignes & ? fonctions différentes | + | {{:animations:ateliers_openscad:exercices:defiopenscad_pyramide_methodee.stl | Voir l'objet en 3D}} |
- | * méthode B : ? lignes & ? fonctions différentes | + | |
- | * méthode C : ? lignes & ? fonctions différentes | + | |
- | |||
- | {{:animations:ateliers_openscad:exercices:cn2_openscad_defi-entonnoir_hm.stl | Voir l'objet en 3D}} | ||
- | //Il s'agit du défi de fin de l'atelier d'initiation OpenSCAD. // | ||
Besoin d'aide, lisez la suite ! | Besoin d'aide, lisez la suite ! | ||
Ligne 27: | Ligne 27: | ||
===== Vidéo ===== | ===== Vidéo ===== | ||
+ | // Ne présente pas la méthode E. // | ||
{{:animations:ateliers_openscad:exercices:os_defi_pyramide.mp4|}} | {{:animations:ateliers_openscad:exercices:os_defi_pyramide.mp4|}} | ||
+ | |||
===== Aides ===== | ===== Aides ===== | ||
Ligne 41: | Ligne 42: | ||
Si vous ne savez pas par où commencer : | Si vous ne savez pas par où commencer : | ||
- | * **méthode A :** | + | * **méthode A :** Astuce OpenSCAD : Contraindre le nombre de facettes à 4 d'un cône |
+ | * **méthode B :** Extruder les 4 faces d'un cube | ||
+ | * **méthode C :** Relier en continu, un grand cube de base à un minuscule cube de sommet | ||
+ | * **méthode D :** Cumuler des parallélépipède de plus en plus petit | ||
+ | * **méthode E :** Faites votre pyramide en mode polyèdre | ||
Ligne 49: | Ligne 54: | ||
**méthode A :** | **méthode A :** | ||
+ | * le cylindre/cône : //cylinder(d1,d2,h);// | ||
+ | * le paramètre du nombre de facettes : //$fn // | ||
+ | |||
+ | **méthode B :** | ||
* la différence : //difference(){...}// | * la différence : //difference(){...}// | ||
+ | * le cube : //cube();// | ||
+ | * la rotation : //rotate([x,y,z]){...}// | ||
+ | |||
+ | **méthode C :** | ||
+ | * la fonction "Coque" : // hull(){...}// | ||
+ | * le cube : //cube();// | ||
* le déplacement : //translate([x,y,z]){...}// | * le déplacement : //translate([x,y,z]){...}// | ||
- | * le cylindre/cône : //cylinder(d1,d2,h);// | ||
+ | **méthode D :** | ||
+ | * la boucle for : // for(){...}// | ||
+ | * le cube : //cube();// | ||
+ | * le déplacement : //translate([x,y,z]){...}// | ||
- | <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> | + | **méthode E :** |
+ | * le polyèdre : //polyhedron();// | ||
+ | |||
+ | |||
+ | <note tip>Si vous ne connaissez pas bien l'utilisation d'une de ces fonctions, il peut être utile d'aller voir les exercices du wiki ou la page Aide-Mémoire OpenSCAD.</note> | ||
Ligne 66: | Ligne 88: | ||
**méthode A :** | **méthode A :** | ||
- | - ... | + | - Connaitre l'astuce $fn=, qui contraint le nombre de faces d'un objet. |
+ | **méthode B :** | ||
+ | - Créer un cube | ||
+ | - Extrudé avec un autre parallélépipède sur un face | ||
+ | - Puis généraliser le principe aux 3 autres faces | ||
+ | **méthode C :** | ||
+ | - Créer un parallélépipède centrée, de faible hauteur (0.1mm ou moins) et d'une largeur de 20mm | ||
+ | - Créer un parallélépipède centrée, de faible hauteur (0,1mm ou moins) et d'un faible largeur 0.1mm | ||
+ | - Déplacer le petit parallélépipède jusqu'au sommet de la pyramide | ||
+ | - Englober le code précédemment écrit dans un hull(). | ||
- | ===== Solutions ===== | + | **méthode D :** |
+ | - Créer un parallélépipède centrée, de faible hauteur (1 mm) et d'une largeur de 20mm | ||
+ | - Créer un second, de la même hauteur (ou hauteur cumulée au choix) légèrement plus moins larges, qui est au dessus du premier (ou qui dépasse du premier) | ||
+ | - Une fois la logique de passage, entre les différents cube comprises, généraliser la logique en utilisant une boucle for() | ||
+ | **méthode E :** | ||
+ | - Partir sur une pyramide dont la base est centrée sur le plan XY | ||
+ | - Déterminer les coordonnées des 5 points qui seront utilisés : les 4 points de la base (dont le z=0) et le sommet de la pyramide (dont le x=0 et le y=0) | ||
+ | - Entrer les coordonnées de ces points dans l'ordre, points=[ [sommet], [point1],[point2] ,[point3] , [point4] ] | ||
+ | - Entrer les combinaisons qui composent les différentes faces. Attention, OpenSCAD ne commence pas à compter à un 1 mais à 0. Le sommet est un ainsi égale à 0, le point 1 au 1, le point 2 au 2, le point 3 au 3 et le point 4 au 4. La première face est la base de la pyramide avec les 4 points, puis suivent les 4 faces de la pyramide chacune composé de 3 points, dont le sommet. | ||
+ | |||
+ | |||
+ | ===== Solutions ===== | ||
+ | |||
+ | Une pyramide de 20 mm de côté et de hauteur | ||
**méthode A :** | **méthode A :** | ||
<code java> | <code java> | ||
- | .... | + | c=20;// côté de la pyramide, ici 20 mm |
+ | cylinder(r1=c,r2=0,h=c/2,$fn=4); | ||
+ | </code> | ||
+ | |||
+ | |||
+ | **méthode B :** | ||
+ | <code java> | ||
+ | c=20;// côté de la pyramide, ici 20 mm | ||
+ | |||
+ | difference(){ | ||
+ | translate([0,0,c/5]){ | ||
+ | cube([c,c,c/2],center=true); | ||
+ | } | ||
+ | rotate([-45,0,0]){ | ||
+ | translate([0,0,c/2]){ | ||
+ | cube([c,c,c/2],center=true); | ||
+ | } | ||
+ | } | ||
+ | rotate([45,0,0]){ | ||
+ | translate([0,0,c/2]){ | ||
+ | cube([c,c,c/2],center=true); | ||
+ | } | ||
+ | } | ||
+ | rotate([0,45,0]){ | ||
+ | translate([0,0,c/2]){ | ||
+ | cube([c,c,c/2],center=true); | ||
+ | } | ||
+ | } | ||
+ | rotate([0,-45,0]){ | ||
+ | translate([0,0,c/2]){ | ||
+ | cube([c,c,c/2],center=true); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | |||
+ | **méthode C :** | ||
+ | <code java> | ||
+ | c=20;// côté de la pyramide, ici 20 mm | ||
+ | hull(){ | ||
+ | cube([c,c,0.01], center=true); | ||
+ | translate([0,0,c]){cube([0.01,0.01,1],center=true);} | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | |||
+ | **méthode D :** | ||
+ | <code java> | ||
+ | c=20;// côté de la pyramide, ici 20 mm | ||
+ | for(i=[0:c]){ | ||
+ | translate([0,0,i]){ | ||
+ | cube([c-i,c-i,1],center=true); | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | |||
+ | **méthode E :** | ||
+ | <code java> | ||
+ | c=20; //le côté de la pyramide, ici, 20mm | ||
+ | polyhedron ( | ||
+ | points=[[0,0,c/2], [-c/2,-c/2,0], [-c/2,c/2,0],[c/2,c/2,0], [c/2,-c/2,0] ], | ||
+ | faces=[[1,2,3,4],[0,1,2],[0,2,3],[0,3,4],[0,1,4] ] | ||
+ | ); | ||
</code> | </code> | ||