Différences entre les versions de « Découvrons les imprimantes 3D - FDM »

Aller à la navigation Aller à la recherche
aucun résumé de modification
 
Ligne 118 : Ligne 118 :
=== Programme OpenSCAD avec encoche circulaire ===
=== Programme OpenSCAD avec encoche circulaire ===
<pre>
<pre>
// Paramètres de la base (en mm)
// Paramètres
longueur = 100;         // Longueur de la base
base_length    = 100;
largeur  = 50;           // Largeur de la base
base_width      = 50;
hauteur  = 30;           // Hauteur de la base
base_height    = 50;


// Dimensions de la rainure
encoche_diametre  = 20;
epaisseur_rainure = 3.2;   // Tolérance pour la plaque à glisser
encoche_profondeur = 5;
largeur_rainure  = 30;     // Dimension de l'ouverture (longueur sur le plan)
angle_deg          = 0
profondeur_rainure= 15;     // Profondeur de la rainure dans le socle
; // Inclinaison de la base en degrés


// Paramètre d'angle (en degrés)
// Calcul du facteur de rétrécissement en haut
// Si angle = 0, le socle aura des faces verticales ; sinon, la face supérieure sera mise en retrait par "d"
reduction = tan(angle_deg * PI / 180) * base_height;
angle = 900; // Privilégiez un chiffre élevé pour observer un changement
shrink_x = (base_length - 2 * reduction) / base_length;
shrink_y = (base_width - 2 * reduction) / base_width;


// Calcul de l'offset sur les côtés pour la face supérieure
// Génération du socle trapézoïdal par extrusion
d = hauteur * tan(angle * PI/180);
module socle_trapeze() {
 
    linear_extrude(height = base_height, scale = [shrink_x, shrink_y])
// Définition des 8 sommets du polyèdre
        square([base_length, base_width], center = true);
vertices = [
}
    [0, 0, 0],                  // V0
    [longueur, 0, 0],          // V1
    [longueur, largeur, 0],     // V2
    [0, largeur, 0],            // V3
    [d, d, hauteur],            // V4
    [longueur - d, d, hauteur],  // V5
    [longueur - d, largeur - d, hauteur],  // V6
    [d, largeur - d, hauteur]    // V7
];


// Définition des faces du polyèdre
// Affichage final avec encoche ronde
faces = [
difference() {
     [0, 3, 2, 1],  // Face inférieure (ordre inversé pour une normale vers le bas)
     socle_trapeze();
    [4, 5, 6, 7],  // Face supérieure
    [0, 1, 5, 4],  // Côté 1
    [1, 2, 6, 5],  // Côté 2
    [2, 3, 7, 6],  // Côté 3
    [3, 0, 4, 7]    // Côté 4
];


// Module générant le socle avec la rainure centrée sur la face supérieure
     translate([0, 0, base_height - encoche_profondeur])
module socle() {
        cylinder(h = encoche_profondeur + 0.1, r = encoche_diametre / 2, $fn = 64);
  difference() {
    polyhedron(points = vertices, faces = faces);
     translate([ (longueur - largeur_rainure) / 2, (largeur - epaisseur_rainure) / 2, hauteur - profondeur_rainure ])
      cube([largeur_rainure, epaisseur_rainure, profondeur_rainure], center = false);
  }
}
}


// Affichage du socle
socle();
</pre>
</pre>
:
:

Menu de navigation