2. Conception Assistée par Ordinateur (CAO)#
Cette semaine, j’ai dû réaliser un modèle 3D.
Pour m’inspirer de mon modèle final, j’ai dû manier le principe d’une épingle et d’une pince à linge comme montrées ci-dessous. Avec le principe d’élasticité vu au cours (être capable de faire en une pièce une entité de plusieurs pièces par la capacité de “bending”, pliage du matériel conçu), je vais tenter de mélanger toutes ces idées pour obtenir un rendu final qui me permettra de maintenir un objet dans le vide (comme le permet une pince).
Je m’occuperai du modèle en U comme l’épingle et j’utiliserai des “doigts”, pinces conçues par mon binôme, Armand Bobelea. En dernier lieu, cela résultera en un modèle mixte des 2 entités.
2.1 Prototype pince U#
Comme dit précédemment, notre projet sera de réaliser une pince en 2 pièces majoritaires et d’autres pièces minoritaires (pour assurer une meilleure performance) de plastique d’amidon. Ce type de pince a été inspiré par le principe d’une pince de linge par exemple, elle permet de prendre des objets par un intermédiaire qu’est la pince.
Le problème est que ce genre de pinces nécessite souvent d’un ressort en forme d’hélicoïde en métal (ce qui est assez dur d’obtenir ou de fabriquer) pour que les 2 tiges puissent être assemblées et se refermer sur elles-mêmes. On essaiera d’avoir un type de composant (l’amidon de maïs) disponible et peu coûteux.
Avec mon binôme de groupe, j’ai dû inventer une barre souple pour nous alléger la tâche. Cette barre fera office d’une base, d’un prototype pour notre pince finale (cela nous permet aussi de voir la souplesse, rigidité de l’amidon de maïs de notre imprimante 3D pour plus tard).
Premièrement, j’ai dû avoir une figure de base, on ne peut se permettre d’avoir trop d’engrenages (et d’autres complexités relevant de l’ingénieur) par manque de temps et de connaissance. On fera simplement donc une sorte de U comme le principe d’une pince à cheveux (voir photo, pince de gauche).
Tout d’abord, j’ai créé un paraléllépipède rectangle. On utilisera la fonction “carré” (square) et on la centrera à partir de son centre (center = true).
square (size = [0.1, 0.5], center = true);
La dimension voulue se fait à partir de la fonction “size” = [x,y]” (entre [] se trouve les dimensions, coordonnées de mon entité). Il faut bien faire attention à la syntaxe et la nomenclature de toutes les fonctions, une seule erreur peut tout changer. Prenons comme exemple la fonction “center” si je l’avais mis de sorte que “center = false” et non “true”, le centre pris comme référence ne serait plus le centre de mon entité, mais le centre par défaut du logiciel (ici il s’agit d’une de ses arêtes, voir l’image de droite).
Après avoir notre “carré”, on va l’élonger pour avoir la “base” de notre pince en 1 pièce. On va utiliser la fonction “rotate_extrude” avec entre parenthèses l’angle et la qualité (il s’agit du nombre de fragments pour notre élongation, plus on a de fragments plus notre arc sera “poli”, de qualité, car il s’agit d’une somme de plusieurs de ces fragments). Comme on veut un demi-cercle (on veut une sorte de U), on va mettre donc un angle de 180° (on note juste 180, le logiciel est par défaut en degré).
De même si je mettais uniquement la fonction “rotate_extrude”, je n’arrivais pas à voir le rendu (peut-être est-il caché ou le logiciel ne le prend pas en compte, car il est au centre, mais aucun message d’erreur n’est affiché). Il faut tout simplement, le déplacer par la fonction “translate”.
Mauvais code:
rotate_extrude (angle = 180, $fn = 10)
square (size = [0.1, 0.5], center = true);
Encore, si je mets la fonction “translate” après le square le logiciel me dit clairement qu’il y a une erreur (voir image ERROR). Il fallait juste respecter la syntaxe comme suit (des fois, le logiciel ne dis même pas s’il y a une erreur comme dit précédemment).
Bon code:
rotate_extrude (angle = 180, $fn = 10)
translate ([2, 0, 0])
square (size = [0.1, 0. 5], center = true);
Ici, j’ai utilisé “$fn = 10”, or on voit que notre arc est trop rudimentaire, cubique.
Je l’ai donc augmenté à 150. On voit que l’arc est beaucoup plus poli.
Mauvais code:
rotate_extrude (angle = 180, $fn = 150)
translate ([2, 0, 0])
square (size = [0.1, 0.5], center = true);
cube (size = [0.1, 10, 0.5], center = true);
On va ajouter des tiges, on commence par une première tige. On vérifie bien les coordonnées en fonction de notre arc et on décide une longueur type de sorte que les tiges soient assez grandes pour l’utilisateur.J’ai utilisé “size = [0.1, 10, 0.5]” comme longueur. On voit qu’il faut ajouter la fonction “translate ([2, -4.9, 0])” sinon on obtient une sorte d’arbalète, voir image de gauche (on écrit bien cette fonction avant l’entité cube, car c’est uniquement le cube que l’on désire de translater). De même si on ne mettait pas la fonction “center = true”, par défaut le logiciel nous mettrait en center = false (voir image à droite). La translation n’est donc pas celle que j’avais imaginée (je pensais que logiquement le cube était centré par son centre si on ne mettait rien).
Bon code:
rotate_extrude (angle = 180, $fn = 150)
translate ([2, 0, 0])
square (size = [0.1, 0.5], center = true);
translate ([2, -4.9, 0])
cube (size = [0.1, 10, 0.5], center = true);
On a déjà quelque chose qui ressemble plus à une épingle, il ne reste plus que faire l’opération similaire mais en “miroir”. C’est-à-dire qu’on va faire une symétrie selon l’axe des x ou autrement dit on recopie la même formule sauf qu’on met notre x en négatif (donc -2 au lieu de 2).
Code final :
rotate_extrude (angle = 180, $fn = 150)
translate ([2, 0, 0])
square (size = [0.1, 0.5], center = true);
translate ([2, -4.9, 0])
cube (size = [0.1, 10, 0.5], center = true);
translate ([-2, -4.9, 0])
cube (size = [0.1, 10, 0.5], center = true);
Voici le résultat final du prototype (l’épaisseur n’était pas parfaite donc je l’ai changée par la suite).
2.2 Modèle final#
Par la suite, j’ai découvert une fonction plus rapide à écrire pour deux entités qui sont symétriques et être sûr qu’elles soient à 100% équivalentes. Il s’agit de la fonction miroir “mirror”. Ainsi, on écrit comme voici la fonction
rotate_extrude (angle = 180, $fn = 180)
translate ([2, 0, 0])
square (size = [0.4, 0.5], center = true);
mirror ([1, 0,0])
translate ([2, -4, 0])
cube (size = [0.4, 8, 0.5], center = true);
On a donc réussi à faire une symétrie de notre “barre” (cube translaté) selon l’axe des y. Attention, le miroir a bien fait une symétrie selon y, mais en réalité le logiciel rend juste la valeur (x) en (-x), c’est pourquoi on met un 1 (ou un quelconque chiffre > 0) en x dans les coordonnées du miroir.
Néanmoins, ce n’est pas ce que je voulais, car je veux cette barre, mais aussi la barre originale! Donc, j’ai dû insérer une fonction antérieure à celle-ci. La fonction “for” (abréviation de “for loop”, donc va agir comme un loop, une répétition). Entre (), on met une variable (“i” par exemple) qu’on égalise à un intervalle. La 1ère valeur est le n-ème clone que l’on désire appliquer à une autre fonction (si ma compréhension fut correcte). La 2ème valeur et la période, la valeur ajoutée pour avoir un autre clone. Et la 3ème valeur est le clone final. Donc ici, comme notre fonction n’est pas fort complexe (il s’agit juste d’une symétrie), on devrait avoir que 2 entités à la fin, donc un clone. On l’écrit comme suit :
for (i = [0:1:1])
On n’oublie pas de mettre la variable dans la fonction (à la place du 1 en x pour “miroir” ou encore 1*i). Ce qui donne :
rotate_extrude (angle = 180, $fn = 180)
translate ([2, 0, 0])
square (size = [0.4, 0.5], center = true);
for (i = [0:1:1])
mirror ([1*i, 0, 0])
translate ([2, -4, 0])
cube (size = [0.4, 8, 0.5], center = true);
Avec comme modèle:
On pourrait aussi rajouter une autre variable pour complexifier la chose, comme “copie” (cela nous permet de nous rappeler aussi combien de fois nous avions exécuté de clones) : rotate_extrude (angle = 180, $fn = 180) translate ([2, 0, 0]) square (size = [0.4, 0.5], center = true);
copie = 2;
for (i = [0:1:copie-1])
mirror ([1*i, 0, 0])s
translate ([2, -4, 0])
cube (size = [0.4, 8, 0.5], center = true);
Par la suite j’ai découvert qu’on pouvait simplement, écrire des notes sans que le logiciel le prenne en compte comme suivant :” // notes” (les notes seront grisâtres) :
rotate_extrude (angle = 180, $fn = 180)
translate ([2, 0, 0])
square (size = [0.4, 0.5], center = true);
for (i = [0:1:1])//copie=2
mirror ([1*i, 0, 0])
translate ([2, -4, 0])
cube (size = [0.4, 8, 0.5], center = true);
2.3 Aide#
Ce qui m’a aidé est “l’aide mémoire” entre autres (quelques tutoriels m’ont aussi aidé à mieux appréhender le logiciel comme celui-ci)
2.4 Code pince U#
Voici le code final de mon projet:
rotate_extrude (angle = 180, $fn = 180)
translate ([2, 0, 0])
square (size = [0.4, 0.5], center = true);
for (i = [0:1:1])//copie=2
mirror ([1*i, 0, 0])
translate ([2, -4, 0])
cube (size = [0.4, 8, 0.5], center = true);
// Licence : pince_U © 2023 by Mayorga Jacob. is licensed under CC BY 4.0.To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/?ref=chooser-v1
This work is licensed under Attribution 4.0 International
Ce qu’implique cette licence est la volonté de l’auteur vis-à-vis de l’utilisation de son œuvre par des tiers. Par exemple, ici la licence (CC BY 4.O DEED) implique que l’œuvre peut être partagée, réadaptée à volonté (même à des fins commerciales). De même, l’auteur de l’œuvre et donc de la licence choisie n’a aucun pouvoir de faire des restrictions sur ses libertés émises. Néanmoins, l’auteur de l’œuvre doit être crédité, un lien vers la licence doit explicitement être annoncé et les quelconques modifications apportées à l’œuvre originale doivent être de même annoncées. Des restrictions supplémentaires (légales ou mécaniques) ne peuvent pas être émises par des tiers. Pour plus d’informations sur les licences, je conseille d’aller sur ce site.
Voici, le fichier scad de la pince U.
2.5 Projet de pinces, doigts#
J’ai utilisé le projet de mon camarade de groupe Armand Bobelea pour achever mon projet : Ces pinces vont nous servir de doigts pour attraper tout objet de forme complexe (comme une balle par exemple), les pinces prenant la forme du contour de l’objet pour l’attraper et le déplacer. Mon projet de pince en U va servir de base, de support pour les mains de l’utilisateur ainsi que d’extension de la machinerie finale. C’est-à-dire qu’on va insérer 2 pinces en U dans les 2 fentes respectives de 2 pinces-doigts (comme entourées en rouge ci-dessous).
The author of this work is Armand Bobelea whose work is openly licensed via CC BY-NC 4.0 (As you can see it below).
// Licence : Doigts de pince flexible © 2023 by Armand Bobelea is licensed under CC BY-NC 4.0. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc/4.0/
module EnLigne(copie, distance) {
for (i = [0:1:copie-1])
translate ([distance*i, i*-0.226, 0])
children () ;
}
module MiroirY (copie = 2) {
for (i = [0:1:copie-1])
mirror ([0, 1*i, 0])
children () ;
}
translate ([3.4, 0, 0])
union () {
difference () {
scale ([4.59, 1.2, 1])
cylinder (1, 1.56, 1.56, $fn = 3, center = true);
scale ([4.6, 1.2, 1])
cylinder (1.6, 1.45, 1.45, $fn = 3, center = true);
MiroirY()
translate ([-2.9, -1.2, 0])
cube (size = [1.5, 0.15, 0.55], center = true);
translate ([-2.9, 0, 0])
cube (size = [2, 1.6, 1.1], center = true);
MiroirY ()
EnLigne (5, 1.5)
translate ([-2.38, 1.52, 0])
rotate ([0, 0, -8])
cylinder (1.1, 0.1, 0.1, $fn = 4, center = true);
}
translate ([-0.8, 0, 0])
union () {
translate ([-1.9, 0, -0.05])
cube ( size = [0.07, 2.5, 0.9], center = true);
translate ([-0.4, 0, -0.05])
cube ( size = [0.065, 2.1, 0.9], center = true);
translate ([1.1, 0, -0.05])
cube ( size = [0.06, 1.6, 0.9], center = true);
translate ([2.6, 0, -0.05])
cube ( size = [0.055, 1.2, 0.9], center = true);
translate ([4.1, 0, -0.05])
cube ( size = [0.05, 0.66, 0.9], center = true);
MiroirY ()
EnLigne (5, 1.5)
translate ([-1.9, 1.29, -0.05])
cylinder (0.9, 0.06, 0.06, $fn = 150, center = true);
}
MiroirY ()
EnLigne (5, 1.5)
translate ([-2.4, 1.3, 0])
difference () {
cylinder (1, 0.15, 0.15, $fn = 150, center = true);
cube (size = [0.09, 2, 2], center = true);
cylinder (1.1, 0.08, 0.08, center = true, $fn = 150);
translate ([0.05, 0.205, 0])
rotate ([0, 0, -53])
cylinder (1.1, 0.2, 0.2, $fn = 4, center = true);
}
}
Voici le lien pour directement télécharger le fichier.scad: pinceflexible.scad