Outils d'utilisateurs

Outils du Site


animations:ateliers_openscad:exercices:defi_pyramide

Défi OpenSCAD Pyramide

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

Voir l'objet en 3D

Besoin d'aide, lisez la suite !

Vidéo

Ne présente pas la méthode E.

Aides

1. Réfléchissez

Prenez vraiment le temps de réfléchir (papier et crayon peuvent être utile )

2. Phrase explicative

Si vous ne savez pas par où commencer :

  • 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

3. Les fonctions utiles

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(){…}
  • 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]){…}

méthode D :

  • la boucle for : for(){…}
  • le cube : cube();
  • le déplacement : translate([x,y,z]){…}

méthode E :

  • le polyèdre : polyhedron();

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.

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

méthode A :

  1. Connaitre l'astuce $fn=, qui contraint le nombre de faces d'un objet.

méthode B :

  1. Créer un cube
  2. Extrudé avec un autre parallélépipède sur un face
  3. Puis généraliser le principe aux 3 autres faces

méthode C :

  1. Créer un parallélépipède centrée, de faible hauteur (0.1mm ou moins) et d'une largeur de 20mm
  2. Créer un parallélépipède centrée, de faible hauteur (0,1mm ou moins) et d'un faible largeur 0.1mm
  3. Déplacer le petit parallélépipède jusqu'au sommet de la pyramide
  4. Englober le code précédemment écrit dans un hull().

méthode D :

  1. Créer un parallélépipède centrée, de faible hauteur (1 mm) et d'une largeur de 20mm
  2. 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)
  3. 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 :

  1. Partir sur une pyramide dont la base est centrée sur le plan XY
  2. 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)
  3. Entrer les coordonnées de ces points dans l'ordre, points=[ [sommet], [point1],[point2] ,[point3] , [point4] ]
  4. 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 :

c=20;// côté de la pyramide, ici 20 mm
cylinder(r1=c,r2=0,h=c/2,$fn=4);

méthode B :

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);
        }
    }
}

méthode C :

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);}
 }

méthode D :

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);
    }
}

méthode E :

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] ]
);
animations/ateliers_openscad/exercices/defi_pyramide.txt · Dernière modification: 2020/03/31 11:05 par plogingenu