2. Conception Assistée par Ordinateur (CAO)#

Objectifs#

Les objectifs de ce modules sont ceux-ci :

  • Designer, modéliser, et documenter un FlexLinks paramétrique, que l’on fabriquera la semaine prochaine grâce à l’impression 3D
  • Le rendre paramétrique afin de le modifier en fonction des propriétés du matériel.
  • Lire ce document à propos des licences open-sources et ajouter un CC à notre travail
  • Compléter le kit FlexLinks en récupérant le code d’au moins une pièce réalisée par un autre camarade de classe au cours de cette semaine. Lire son travail. Modifier son code et préparez les pièces pour l’impression.

Logiciels nécessaires

Pour ce module il nous a fallu installer Inskscape, OpenSCAD et FreeCAD, qui sont des logiciels de design 2D (Inkscape) et 3D (OpenSCAD et FreeCAD). L’installation et l’utilisation de ces derniers sont dans l’onglet Logiciels nécessaires.

Partie pratique

Je me suis donc lancé dans le design de ce FlexLink sur OpenSCAD, qui est sensé relier plusieurs LEGO entre eux. J’ai trouvé les dimensions des LEGO sur le blog de Simone Vitale, élève de ce cours lors de l’année académique 2020-2021.

Je me suis inspiré de différents modèles existants et ai appris par moi-même comment coder pour des formes et les déplacer dans le plan vectoriel grâce à ce site: Wikibook. J’ai donc fait un modèle assez basique, avec une branche reliant 2 structures capables d’emboiter un LEGO chacune. Et ensuite je l’ai doublé pour pouvoir relier 4 LEGO entre eux.

J’ai commencé à réfléchir aux dimensions que mon FlexLink devait avoir. J’ai effectué des calculs sur papier comme on peut le voir ci-dessous, malgré la faible qualité de l’image :

Une fois les calculs effectués, j’ai commencé à coder. Je joins le code, dans lequel, grâce à la commande //, je détaille les étapes du codes et à quoi elles servent:

// FILE : Flex_link.scad
// AUTHOR : Félix Wallenborn <felix.wallenborn@ulb.be>
// DATE : 08-10-2024
// LICENSE : Creative Commons 4.0 [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/).
// CONTRIBUTORS : Code entirely written by Félix Wallenborn


  //Paramètres
 l1 = 30; //Longueur de la tige reliant les 2 rectangle
 r_trou = 2.55; //Rayon des trous dans les recatangles
 esp_trou = 3.2; //Espace entre les 2 trous
 hauteur = 1.6; //Hauteur de l'objet
 lg_rect = 15;
 largeur_rectangle = 6 ;
 r_cyl = 1.5 ;
 l2 = 2*r_cyl + lg_rect ; //Longueur d'un rectangle
 d = (l2 - (4*r_trou + esp_trou))/2 ; // Distance entre fin de la tige et début du 1er trou


  $fn=40;
difference(){ //La fonction difference() permet de créer les trous en soustrayant des cylindres à la forme de base
union(){rotate(a=[0,90,0]) {  cylinder(h=l1, r=hauteur/2, center=true, $fn=60); //La fonction union() permet d'assembler plusieurs éléments comme s'il n'en formait qu'un. La première fonction cylindre est la tige qui relie nos 2 formes rectangulaires
 }

 minkowski() //Minkowski est une formule qui permet d'unifier 2 formes (ici rectangle et cylindre pour donner une forme arrondie aux rectangles)
{
 cube([lg_rect,largeur_rectangle,hauteur/2],true); 
 translate([(l1+l2)/2,0,0])
 cylinder(r=r_cyl,h=hauteur/2, center=true); 
    } //Le cube et les cylindres sont assemblés. La fonction translate permet simplement de déplacer les objets dans l'espace vectoriel
 minkowski()
{
 cube([lg_rect,largeur_rectangle,hauteur/2],true);
 translate([-(l1+l2)/2,0,0])
 cylinder(r=r_cyl,h=hauteur/2, center=true);
    }}
    translate([(l1/2 + d + r_trou ),0,0])
    cylinder(r=r_trou,h=hauteur+0.1, center=true);
     translate([(l1/2) + d + 3*r_trou + esp_trou,0,0])
    cylinder(r=r_trou,h=2, center=true);
     translate([-((l1/2 + d + r_trou )),0,0])
    cylinder(r=r_trou,h=hauteur+0.1, center=true);
     translate([-((l1/2) + d + 3*r_trou + esp_trou),0,0])
    cylinder(r=r_trou,h=2, center=true); }

Voici un résultat de la pièce codée :

En jouant avec ce Flexlink, j’ai décidé de le doubler pour en faire une sorte de croix. Voici le code, suivie de l’image:

// FILE : Flex_link_v2.scad
// AUTHOR : Félix Wallenborn <felix.wallenborn@ulb.be>
// DATE : 08-10-2024
// LICENSE : Creative Commons 4.0 [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/).
// CONTRIBUTORS : Code entirely written by Félix Wallenborn


  //Paramètres
r_trou = 2.55; //Rayon des trous dans les rectangles
 esp_trou = 3.2; //Espace entre les 2 trous
 hauteur = 1.6; //Hauteur de l'objet
 lg_rect = 15;
 r_cyl = 1.5 ;
 largeur_rectangle = 6 ;
 l2 = 2*r_cyl + lg_rect ; //Longueur d'un rectangle
 d = (l2 - (4*r_trou + esp_trou))/2 ; // Distance entre fin de la tige et début du 1er trou


  $fn=40;
difference(){
union(){rotate(a=[0,90,0]) {  cylinder(h=l1, r=hauteur/2, center=true, $fn=60);
 }

 minkowski()
{
 cube([lg_rect,largeur_rectangle,hauteur/2],true);
 translate([(l1+l2)/2,0,0])
 cylinder(r=r_cyl,h=hauteur/2, center=true); 
    }
 minkowski()
{
 cube([lg_rect,largeur_rectangle,hauteur/2],true);
 translate([-(l1+l2)/2,0,0])
 cylinder(r=r_cyl,h=hauteur/2, center=true);
    }}
    translate([(l1/2 + d + r_trou ),0,0])
    cylinder(r=r_trou,h=hauteur+0.1, center=true);
     translate([(l1/2) + d + 3*r_trou + esp_trou,0,0])
    cylinder(r=r_trou,h=2, center=true);
     translate([-((l1/2 + d + r_trou )),0,0])
    cylinder(r=r_trou,h=hauteur+0.1, center=true);
     translate([-((l1/2) + d + 3*r_trou + esp_trou),0,0])
    cylinder(r=r_trou,h=2, center=true); }

//Ajout de la 2eme branche du Flex Link
difference(){
union(){rotate(a=[90,0,0]) {  cylinder(h=l1, r=hauteur/2, center=true, $fn=60);
 }

 minkowski()
{
 cube([largeur_rectangle,lg_rect,hauteur/2],true);
 translate([0,(l1+l2)/2,0])
 cylinder(r=r_cyl,h=hauteur/2, center=true); 
    }
 minkowski()
{
 cube([largeur_rectangle,lg_rect,hauteur/2],true);
 translate([0,-(l1+l2)/2,0])
 cylinder(r=r_cyl,h=hauteur/2, center=true);
    }}
    translate([0,(l1/2 + d + r_trou ),0])
    cylinder(r=r_trou,h=hauteur+0.1, center=true);
     translate([0,(l1/2) + d + 3*r_trou + esp_trou,0])
    cylinder(r=r_trou,h=2, center=true);
     translate([0,-((l1/2 + d + r_trou )),0])
    cylinder(r=r_trou,h=hauteur+0.1, center=true);
     translate([0,-((l1/2) + d + 3*r_trou + esp_trou),0])
    cylinder(r=r_trou,h=2, center=true); }

Licences#

Mettre une CC license sur un travail autorise les autres chercheur.se.s à utiliser ce travail, ce qui est le principe d’OpenSource.

Il existe un tas de licenses différentes qui sont resensés sur ce site.

Comme vous pouvez le voir plus haut dans mon code, j’ai choisi la license CC BY-NC-SA.

  • BY: Le crédit doit être donné à l’auteur
  • NC: La réutilisation de ce travail doit être non commerciale
  • SA: Les adaptations doivent être partagées selon les mêmes termes

Pour ce qui est de compléter le kit Flexlink, j’ai été voir les travaux de mes camarades ainsi que ceux des élèves des années précédentes, et au moment de l’impression j’ai assemblé mon Flexlink avec ceux des autres, mais je n’ai pas pris de photos de ce moment et je ne peux donc pas le documenter. Mais cela marchait très bien et c’était intéressant de voir les idées des autres étudiants et de me rendre compte que je n’avais pas été très original dans l’idée de mon Flexlink.