Module 2 : Conception Assistée par Ordinateur (CAO)#

Je me suis aidé d’OpenSCAD, qui utilise le codage pour créer des formes diverses et variées, pour la modélisation 3D de l’objet de ma convoitise. Il existe cependant un autre moyen de modéliser des objets : l’esquisse, (se faisant sur FreeCAD), plus difficile à apprendre au début mais qui possède un degré de liberté plus étendu que le codage car, notamment, il serait plus difficile de coder un simple ressort que de le dessiner (à condition bien sûr de s’y connaître suffisament).

L’objet se devra d’exploiter la souplesse et la rigité du PLA, un type de plastique fait à partir d’amidon de pomme de terre, qui sera utilisé lors de l’impression 3D du modèle. Sa souplesse ou sa rigidité dépendra de son épaisseur.

Ce projet a été réalisé en partenariat avec Jacob Mayorga

Acte 1 : Modélisation de mon objet#

L’objet que j’ai réalisé sur OpenSCAD m’était apparu assez tôt, une pince à doigts flexible, mais je ne savais pas encore ce que j’allais faire. J’ai alors cherché sur YouTube un exemple. Partant d’ici, j’ai essayé de reproduire ce que j’ai vu le plus fidèlement possible, tout en y apportant des modifications personnelles (car j’avais déjà essayé d’imprimer des prototypes, qui m’ont éclatés entre les doigts. donc les lignes de codes que j’exposerai ici est la version finale du projet).

Scène 1 : Les doigts#

modele1

  • La fonction [cylinder] permet de créer un cylindre, avec pour paramètres (dans l’ordre) sa hauteur en Z, le rayon du polygone supérieur, le rayon du polygone du polygone inférieur et sa résolution (étant le nombre minimum de côté des bases, donc ici, [$fn = 3] sert à créer un prisme à base triangulaire). [center = true] précise si l’objet à son centre au point origine (0;0;0).

  • La fonction [scale] agrandit ou rétrécit l’objet, les coordonnées en X, Y et Z sont là pour dire de combien (en terme de multiplication) on veut les agrandir (si le nombre est supérieur à 1) ou les rétrécir (si le nombre est inférieur à 1). Si 1 est précisé en paramètre, la déformation ne s’effectue pas, alors que 0, où qu’il soit mis, fait disparaître complètement l’objet.

modele2

  • La fonction [cube] crée un cube avec pour paramètres [size = [largeur X, profondeur Y, hauteur Z]]. Si [size] n’a été remplacé que par un nombre, le cube aurait été régulier (avec tous ses arêtes de la même taille).

  • [translate] permet de déplacer l’objet en changeant les coordonnées de son centre (dépend de si le centre à été paramétré comme étant vrai, [center = true], sinon cela mène à un autre résultat).

  • [rotate] permet d’appliquer une rotation à l’objet, selon la coordonnée choisi (les angles de rotation sont en degré).

  • [color] change la couleur de l’objet (entre guillements se trouve le nom de la couleur, disponible dans la base de données d’openSCAD sur la fonction [color]). Cela permet à tous ceux qui sont en train d’observer la modélisation de mon objet pas-à-pas de s’y retrouver

modele3

  • [module] permet de créer une fonction complexe, à partir des fonctions élementaires ([EnLigne() me permet de créer des copies alignées d’un objet, avec une boucle [for] qui limite le nombre de copies qui sera précisé entre parenthèses]. [MiroirY] me permet d’engendrer l’image d’un objet à partir d’un plan-miroir).

Alt text

  • La fonction [difference ()] permet de supprimer les objets secondaires ainsi que les parties de l’objet principal (en première place) en commun avec les objets secondaires (comme dans la soustraction, l’ordre importe).

modele5

  • La fonction [union ()] rassemble tous les objets entre ses crochets pour les faire interpréter par l’application comme une seule forme, sans transformation particulière (comme c’était le cas avec [difference ()]).

modele6

  • Rien de nouveau

Cette partie sera à imprimer 2 fois.

Pour tous ceux qui souhaiterais copier le code et le modifier à sa guise, le fichier en .scad se trouve juste dans ce mot-lien. Ou si vous voulez directement l’imprimer, le fichier .stl se trouve ici

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

Scène 2 : La barre#

Cette partie-là fut réalisé par mon co-équipier, Jacob Mayorga, dont voici le travail :

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])
translate ([2, -4, 0])
cube (size = [0.4, 8, 0.5], center = true);
// © 2023. This work is openly licensed via CC BY 4.0.

En décomposant le code petit à petit :

  • [square] crée un carré (ici, ce carré est représenté en cube par l’application, pour pouvoir le retrouver facilement dans le plan).

  • [rotate_extrude()] permet de créer un tore, en indiquant dans les paramètres la portion à modéliser ([angle = 180]).

  • Quand une forme est soumise à la fonction [rotate_extrude()], la fonction [translate ()] ici sert à indiquer le rayon du tore (distance entre le centre et le bord extérieur).

En finalisant la modélisation des deux barres, on obtient ce résultat final :

  • Ici, [copie] est une variable qui est intégrer la boucle [for ()]. Cette variable fixe la limite de copies de l’objet.

  • [mirror] ne peut pas être utilisé tel quel, sinon seul l’image miroir de l’objet apparaît (d’où la création d’une boucle [for ()], avec la variable [i] qui définit la propriété de la boucle).

Le lien .stl se trouve ici.