Outils pour utilisateurs

Outils du site


atelierscodage

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
atelierscodage [2021/06/30 17:01]
mediarbx
atelierscodage [2021/07/15 18:36] (Version actuelle)
mediarbx [du bon usage des bibliothèques d'objet]
Ligne 46: Ligne 46:
 ===== Analyser l'objet à coder ===== ===== Analyser l'objet à coder =====
  
-Vous avez 15 ans ou presque, vous réfléchissez à l'orientation que vous choisirez et pour affiner votre choix, vous avez décidez de trouver un stage dans des entreprises dont l'activité vous intéresse. \\ Çà y est, vous avez décrochez un stage dans une entreprise informatique et le sujet de votre stage est le suivant: \\ "Pour répondre aux souhaits de nos adhérents, l'association vous propose de l'aider à concevoir et produire un arbre généalogique modulaire 3D. A partir d'un point d'origine, les modules que vous proposerez permettrons de construire une arborescence contenant l'ensemble des descendants d'un couple. \\ Pour représenter les descendants de l'ancêtre né pendant la révolution française (1795-1811), il est fort probable qu'il faille envisager une représentation contenant près de 1000 descendants. Il faut y ajouter les conjoints des couples de parents … cela nous mènera à près de 1000 personnes supplémentaires. \\  \\ <note tip>L'arbre produit permettra de la même façon de représenter l'organigramme d'un collège, d'un lycée ou d'une entreprise, …, toute représentation complexe ou trop grande en mode plan</note> \\ **Génération n ou niveau n :**  chaque enfant de la génération n-1 pourra avoir de 1 à 15 enfants \\ **Génération 4 ou niveau 4 :**  chaque enfant de la génération 3 pourra avoir de 1 à 15 enfants \\ **Génération 3 ou niveau 3 :**  chaque enfant de la génération 2 pourra avoir de 1 à 15 enfants \\ **Génération 2 ou niveau 2 :**  1 à 15 enfants \\ **Génération 1 ou niveau 1 :**  2 personnes \\  \\ Représenter cet arbre descendant sur un plan se révèle impossible à moins de disposer d'un … très grand mur. \\ Comme le poumon pour augmenter sa surface d'échange air/sang ou l'arbre pour augmenter sa surface de photosynthèse, nous tenterons de représenter un plan dans un volume pour disposer de place pour contenir et hiérarchiser. \\ Ce qu'il vous est demandé ici est de proposer une représentation 3D du même arbre. \\  \\ Et si nous proposions la production d'un arbre de type mécano. L'arbre part d'un tronc (//qui ne fait pas partie de l'exercice, on pourra se servir avec avantage d'un pied pupitre de musicien//). Nous débuterons le travail par le haut du fût du tronc où seront représentés les deux individus du couple du début de 19ème siècle d'où partirons un nombre de 1 à 15 enfants (1ère subdivision). \\ De ce premier plan de subdivisions partiront donc un nombre variable de branches de première génération qui elles-même se subdiviseront à leur tour en un nombre variable de branches de seconde génération et ainsi de suite. \\ Inspirons d'exemples présents dans la nature (les arbres) ou dans notre corps (nos bronches) pour nous aider à comprendre comment nous pourrons résoudre ce défi.+Vous avez 15 ans ou presque, vous réfléchissez à l'orientation que vous choisirez et pour affiner votre choix, vous avez décidez de trouver un stage dans des entreprises dont l'activité vous intéresse. \\ Çà y est, vous avez décrochez un stage dans une entreprise informatique et le sujet de votre stage est le suivant: \\ "Pour répondre aux souhaits de nos adhérents, l'association vous propose de l'aider à concevoir et produire un arbre généalogique modulaire 3D. A partir d'un point d'origine, les modules que vous proposerez permettront de construire une arborescence contenant l'ensemble des descendants d'un couple. \\ Pour représenter les descendants d'un ancêtre né pendant la révolution française (1795-1811), il est fort probable qu'il faille envisager une représentation contenant près de 1000 descendants. Il faut y ajouter les conjoints des couples de parents … cela ajoutera près de 1000 personnes supplémentaires. \\  \\ <note tip>L'arbre produit permettra de la même façon de représenter l'organigramme d'un collège, d'un lycée ou d'une entreprise, …, toute représentation complexe ou trop grande en mode plan</note> \\ **Génération n ou niveau n :**  chaque enfant de la génération n-1 pourra avoir de 1 à 15 enfants \\ **Génération 4 ou niveau 4 :**  chaque enfant de la génération 3 pourra avoir de 1 à 15 enfants \\ **Génération 3 ou niveau 3 :**  chaque enfant de la génération 2 pourra avoir de 1 à 15 enfants \\ **Génération 2 ou niveau 2 :**  1 à 15 enfants \\ **Génération 1 ou niveau 1 :**  2 personnes \\  \\ Représenter cet arbre descendant sur un plan se révèle impossible à moins de disposer d'un … très grand mur. \\ Comme le poumon des mammifères pour augmenter sa surface d'échange air/sang ou l'arbre pour augmenter sa surface d'exposition au soleil pour la photosynthèse, nous tenterons une représentation en 3D et disposer ainsi de la place nécessaire pour contenir et hiérarchiser. \\ Ce qui vous est demandé ici est donc de proposer une représentation 3D de l'arbre. \\  \\ Et si nous proposions la production d'un arbre de type mécano. L'arbre part d'un tronc (//qui ne fait pas partie de l'exercice, on pourra se servir avec avantage d'un pied pupitre de musicien//). Nous débuterons le travail par le haut du fût du tronc où seront représentés les deux individus du couple du début de 19ème siècle d'où partirons un nombre de 1 à 15 enfants (1ère subdivision). \\ De ce premier plan de subdivisions partiront donc un nombre variable de branches de première génération qui elles-même se subdiviseront à leur tour en un nombre variable de branches de seconde génération et ainsi de suite. \\ Inspirons d'exemples présents dans la nature (les arbres) ou dans notre corps (nos bronches) pour nous aider à comprendre comment nous pourrons résoudre ce défi.
  
 {{  :codage:arbre_modele-700.png  }} \\ Nous pouvons observer ici un arbre dont chaque branche donne naissance à un nombre variable de branches sur plusieurs générations. \\  \\ {{  :codage:arbre_generationel.png  }} \\ Si nous examinons cet arbre présent dans nos bronches, nous voyons qu'à chaque subdivision ou génération, par un nombre variable de branches et que cela se répète à chaque subdivision suivante. \\  \\ L'arbre généalogique de nos ancêtre obéit au même phénomène: chacun de nos ancêtres à un nombre variable d'enfants et cela se répète à chaque génération ! \\ Il est difficile voire impossible de représenter une telle structure sur un plan (2 dimensions) au-delà de la troisième génération. \\ La représentation en 3 dimensions devra résoudre cette difficulté de représentation. \\  \\ Je vous propose donc de concevoir un arbre en trois dimensions avec un nombre variable de branches à chaque génération et de modéliser les sous-objets emboîtables de cet arbre en les imprimant sur une imprimante 3D classique. \\ **Différents sous-objets de notre arbre:** {{  :codage:arbre_modele-700.png  }} \\ Nous pouvons observer ici un arbre dont chaque branche donne naissance à un nombre variable de branches sur plusieurs générations. \\  \\ {{  :codage:arbre_generationel.png  }} \\ Si nous examinons cet arbre présent dans nos bronches, nous voyons qu'à chaque subdivision ou génération, par un nombre variable de branches et que cela se répète à chaque subdivision suivante. \\  \\ L'arbre généalogique de nos ancêtre obéit au même phénomène: chacun de nos ancêtres à un nombre variable d'enfants et cela se répète à chaque génération ! \\ Il est difficile voire impossible de représenter une telle structure sur un plan (2 dimensions) au-delà de la troisième génération. \\ La représentation en 3 dimensions devra résoudre cette difficulté de représentation. \\  \\ Je vous propose donc de concevoir un arbre en trois dimensions avec un nombre variable de branches à chaque génération et de modéliser les sous-objets emboîtables de cet arbre en les imprimant sur une imprimante 3D classique. \\ **Différents sous-objets de notre arbre:**
Ligne 52: Ligne 52:
   * __le tronc:__  comme annoncé, nous n'imprimerons pas le tronc, un pied de pupitre de musicien fera très bien notre affaire.   * __le tronc:__  comme annoncé, nous n'imprimerons pas le tronc, un pied de pupitre de musicien fera très bien notre affaire.
   * __les branches:__  du tronc partent un nombre variables de branches. Comme pour l'arbre réel illustré plus haut, nous déciderons que certaines branches sont inclinées à 30 degrés et d'autres à 50 degrés.   * __les branches:__  du tronc partent un nombre variables de branches. Comme pour l'arbre réel illustré plus haut, nous déciderons que certaines branches sont inclinées à 30 degrés et d'autres à 50 degrés.
-  * chaque branche mère se termine par un __capitule__  d'où partent nos branches filles à leur tour inclinées à 30 degrés et où à 50 degrés.+  * pour emboîter les sous-branches aux branches, nous nous servirons d'un __capitule__  (comme le capitule d'une fleur) d'où partent nos branches filles à leur tour inclinées à 30 degrés et où à 50 degrés.
  
 {{  :codage:arbre_generationel-plateau1-bis.png?direct&600  }} {{  :codage:arbre_generationel-plateau1-bis.png?direct&600  }}
Ligne 72: Ligne 72:
 {{  :codage:tige_a_embouts_2021.png?direct&  }}La branche (A) sera le composant les plus facile à programmer. \\ Elle aura une longueur fixe et qui pourra changer de valeur pendant les tests. \\ Elle sera cylindrique et terminée à chaque extrémité pour une forme polygonale; cela évitera la rotation des branches autour de leur axe. {{  :codage:tige_a_embouts_2021.png?direct&  }}La branche (A) sera le composant les plus facile à programmer. \\ Elle aura une longueur fixe et qui pourra changer de valeur pendant les tests. \\ Elle sera cylindrique et terminée à chaque extrémité pour une forme polygonale; cela évitera la rotation des branches autour de leur axe.
  
-  * nous désignerons la longueur par la variable brl à laquelle nous donnerons une valeur initiale de 170 mm hors tout (cad embouts compris). +  * nous désignerons la longueur par les variables //di_br//  et //lg_br//  à laquelle nous donnerons une valeur initiale de 170 mm hors tout (cad embouts compris / lg_br=170). 
-  * elle sera cylindrique d'un diamètre de 10 mm +  * elle sera cylindrique d'un diamètre de 10 mm (di_br=10) 
-  * elle sera prolongée d'un embout cylindrique hexagonal (cylindre à 6 côtés sur sa longueur) de 15mm qui pourra s'enfoncer dans le capitule à l'une de ses extrémité et dans le raccord à l'autre extrémité (le diamètre de l'embout sera de 1.5 mm plus petit que celui de la branche).+  * elle sera prolongée d'un embout cylindrique hexagonal (cylindre à 6 côtés sur sa longueur) qui pourra s'enfoncer dans le capitule à l'une de ses extrémité (voir //haut_cap=ep_grdplatcap+ep_ptplatcap+ep_anncap//  : attention à l'inclinaison) et dans le raccord à l'autre extrémité (le diamètre de l'embout sera de 1.5 mm plus petit que celui de la branche).
  
 **Résumé:** **Résumé:**
Ligne 80: Ligne 80:
 <code> <code>
 // variables utilisées // variables utilisées
-    facettes=6;         // nombre de facettes des embouts +//dimensions communes 
-    lg_emboutsbr=15;    // longueur des embouts en mm +facettes=6; 
-    lg_br=170;          // longueur tige +// dimensions branche 
-    di_br=10          // diamètre tige +di_br=10;           // diamètre branche 
-// variables calculées +lg_emboutsbr=15;    // longueur des embouts des branches 
-    di_emboutsbr=di_br-1.5; // diamètre des embouts+lg_br=170;          // longueur de la branche (hors tout) 
 +// 
 +//dimensions capitule 
 +di_grdplatcap=150;    // diamètre plateau supérieur du capitule 
 +ep_grdplatcap=2   // épaisseur plateau supérieur du capitule 
 +di_ptplatcap=90;      // diamètre plateau inférieur du capitule 
 +ep_ptplatcap=2;     // épaisseur plateau inférieur du capitule 
 +ep_anncap=14;         // épaisseur anneau inter plateaux du capitule 
 +// 
 +//dimensions socle 
 +di_socle=15;          // diamètre du socle (à adapter au support 
 +                      // choisi (pied de pupitre de musicien 
 +                      // par exemple) 
 + 
 +//dimensions calculées 
 +haut_cap=ep_grdplatcap+ep_ptplatcap+ep_anncap; 
 +di_emboutsbr=di_br-1.0; // diamètre des embouts
  
 </code> </code>
Ligne 199: Ligne 215:
  
 ===== Principales fonctions ===== ===== Principales fonctions =====
 +Les principales fonctions qui seront utilisées au cours de cet atelier sont les les suivantes:
 +  * **cylinder(h,r1|d1,r2|d2,center)** où h est la hauteur du cylindre, r ou d ses rayon/diamètre à chaque extrémité et center permet de positionner son axe par rapport au centre.
 +Les principales opérations que nous exécuterons seront:
 +  * **difference()** cette opération permet de soustraire à la forme construite par la première fonction toutes les formes décrites par les fonctions suivantes.\\ Par exemple, le code <code>translate([0,0,0]) {
 +        color("DarkKhaki"){
 +            translate([0,-4,-diametre_branche/2]){
 +                difference(){
 +                    cylinder(d=17.6,h=2.5,$fn=60);
 +                    translate([0,0,0.001])
 +                    cylinder(d=14.8,h=2.6.001,$fn=6);
 +                }
 +            }
 +        }
 +    }</code> creusera un cylindre hexagonal ($fn=6) de 14.8 mm de diamètre à l'intérieur d'un cylindre circulaire ($fn=60) de  17.6 mm de diamètre et de même hauteur. 
 +Les principaux mouvements dont nous aurons besoin sont:
 +  * **translate([x,y,z])** permet de se déplacer du point en cours vers le point [x,y,z]
 +  * **rotation([x,y,z])** permet d'orienter les parties de l'objet en cours dans la direction de l'angle [x,y,z]
 +D'une manière générale, l'opération ou le mouvement peuvent ne concerner qu'une exécution de la fonction ou plusieurs.
 +
  
 [[https://www.openscad.org/cheatsheet/|Aide-mémoire des fonctions du langage OpenScad]] [[https://www.openscad.org/cheatsheet/|Aide-mémoire des fonctions du langage OpenScad]]
 +===== du fichier à l'objet imprimé =====
 +Le processus de production d'un fichier 3D comporte 3 étapes essentielle:
 +  - création du modèle avec un logiciel de codage (OpenScad), avec un modélisateur (Blender, ThinkerCad, ...) ou encore en téléchargeant le fichier depuis un site (il s'agit alors d'une copie et non d'une création !)
 +  - la transformation du fichier 3D et sa préparation pour l'imprimante (choix de la densité, de la taille, du positionnement sur le plateau de l'imprimante, de l'ajout de support pour les parties en suspension, etc
 +  - l'impression proprement dite (qui peut être très, très longue pour les objets complexes
 +L'étape 1 part d'une feuille blanche pour arriver à un fichier STL, la seconde étape part du fichier STL (identique pour toutes les imprimantes) pour arriver à un fichier Gcode (spécifique à un objet pour un modèle d'imprimante) et la dernière consiste à copier le fichier Gcode sur une carte SD qui sera introduite dans l'imprimante pour lancer l'impression.  
 +{{ :codage:delideealobjet.png?800 |}}
 +===== du bon usage des bibliothèques d'objets =====
 +
 +Comme pour les images numériques, Internet propose un nombre illimité d'objet STL à imprimer. Si on écarte d'impression d'objets "gadget" pour lesquels l'acquisition d'une imprimante 3D parait inappropriée, ces bibliothèques proposent d'autres ressources.
 +
 +  * des fichiers OpenScad personnalisables
 +  * des contacts avec des créateurs souvent très érudits
 +
 +A titre d'exemple, je vous propose de cliquer sur [[https://www.thingiverse.com/search?q=openscad+hooks&type=things&sort=relevant|ce lien]] pour voir voir que ces bibliothèques proposent aussi des codes OpenScad pour des objets … alors facilement "customisables"
  
  
atelierscodage.1625065308.txt.gz · Dernière modification: 2021/06/30 17:01 de mediarbx