====== Codes OpenSCAD ======
===== Impressions 3D =====
==== Code OpenSCAD pour la boîte inférieure ====
diffRayon = 10; //mm difference de rayon intérieur entre la boîte supérieure et la boîte inférieure
// rayon interieur de la boite supérieure
rayonBSup = 40; //mm
//dimensions de la boite inférieure
hauteurBoite = 55;
rayonBoite = rayonBSup + diffRayon;
epaisseurBoite = 10;
fond = 10; //mm
difference(){
cylinder(h = hauteurBoite + fond,r1 = rayonBoite+epaisseurBoite, r2 = rayonBoite+epaisseurBoite, $fn = 1000, center = false);
translate([0, 0, fond]){
cylinder(h = hauteurBoite, r1 = rayonBoite, r2 = rayonBoite, $fn = 1000, center = false);
}
}
==== Code OpenSCAD pour la boîte supérieure ====
diffRayon = 10; //mm difference de rayon intérieur entre la boîte supérieure et la boîte inférieure
//dimensions de la boite supérieure
hauteurBSup = 55; //mm
epaisseurBSup = 10; //mm
rayonBSup = 40; //mm
difference(){
cylinder(h = hauteurBSup, r1 = rayonBSup+epaisseurBSup+diffRayon, r2 = rayonBSup+epaisseurBSup+diffRayon, $fn = 1000, center = true);
cylinder(h = hauteurBSup, r1 = rayonBSup, r2 = rayonBSup, $fn = 1000, center = true);
}
==== Code OpenSCAD pour le piston ====
//rayon intérieur de la boîte supérieure
rayonBSup = 40; //mm
//dimensions du piston
rayonC = rayonBSup;
fondC = 10; //mm
hauteurC = 30;
epaisseurC = 10; //mm
largeurEncoche = 6.001; //mm
profondeurEncoche = 20; //mm
profondeurEncoche2 = 30; //mm profondeur réelle : 25 mm
epsilon = 0.001; //mm, pour pouvoir entrer dans la boite supérieure
rotate([0, 180, 0]){
difference(){
cylinder(h = hauteurC + fondC, r1 = rayonC-epsilon, r2 = rayonC-epsilon, $fn = 1000, center = false);
cylinder(h = hauteurC, r1 = rayonC - epaisseurC, r2 = rayonC - epaisseurC, $fn = 1000, center = false);
translate([0, 0, 10]){
cube([2*rayonC, largeurEncoche, profondeurEncoche], center = true);
cube([largeurEncoche, 2*rayonC, profondeurEncoche2], center = true);
}
}
}
==== Code OpenSCAD pour l'anse ====
//dimensions de la boite supérieure
hauteurBSup = 55; //mm
epaisseurBSup = 10; //mm
rayonBSup = 40; //mm
diffRayon = 10; //mm
diametreVis = 2.5; //mm diametre du trou
difference(){
//cube pour former la anse
translate([25, 0, -10]){
rotate([90, 0, 45]){
difference(){
cube([40, 20 ,40], center = false);
cube([30, 40, 30], center = false);
}
}
}
//on enleve la boite supérieure pour que les 2 éléments s'accolent parfaitement
cylinder(h = hauteurBSup, r1 = rayonBSup+epaisseurBSup+diffRayon, r2 = rayonBSup+epaisseurBSup+diffRayon, $fn = 1000, center = true);
//trou
translate([rayonBSup+diffRayon+epaisseurBSup-2, -10, 0]){
rotate([45, 90, 0]){
cylinder(h = 20, r1 = diametreVis/2, r2 = diametreVis/2, $fn = 1000, center = true);
}
}
//trou
translate([rayonBSup+diffRayon+epaisseurBSup-2, +10, 0]){
rotate([-45, 90, 0]){
cylinder(h = 20, r1 = diametreVis/2, r2 = diametreVis/2, $fn = 1000, center = true);
}
}
}
==== Code OpenSCAD pour le support 1 de la poulie ====
//dimensions du roulement à billes et de la gaine
diametreTrou = 7.9; //mm diametre du trou du roulement à billes
epaisseurR = 7; //mm epaisseur du roulement à billes
depassement = 2; //mm dépassement de la gaine de chaque cote du roulement à billes
//dimensions du support de la poulie
coteColonne = 30; //mm epaisseur de la colonne
hauteurColonne = 57.55; //mm
longTige = depassement*2 + epaisseurR + 10+20;
//dimensions du support pour le raporteur
longSupRap = 10; //mm longueur du support pour enfiler le rapporteur
epSupRap = 10; //mm epaisseur du support pour enfiler le rapporteur
//dimensions du socle du support
diametreVis = 2.5; //mm // diametre des trous pour les vis
epaisseurSocle = 5;//mm
largSocle = coteColonne + 20;
//colonne
cube([coteColonne, coteColonne, hauteurColonne], center = true);
//tige pour la poulie
translate([coteColonne/2+longSupRap-2, 0, hauteurColonne/2-diametreTrou/2]){
rotate([0, 90, 0]){
translate([0, 0, 0]){
cylinder(h = longTige, r1 = diametreTrou/2, r2 = diametreTrou/2, $fn = 1000, center = false);
}
}
}
//support pour enfiler le rapporteur
translate([coteColonne/2+longSupRap/2-1, 0, 0]){
cube([longSupRap, epSupRap, hauteurColonne], center = true);
}
//socle
difference(){
translate([0, 0, -hauteurColonne/2+epaisseurSocle/2]){
cube([largSocle, largSocle, epaisseurSocle], center = true);
}
//Trous pour les vis : 5
//Trou 1
translate([-coteColonne/2-5, 0, -hauteurColonne/2]){
cylinder(h = epaisseurSocle, r1 = diametreVis/2, r2 = diametreVis/2, $fn = 1000, center = false);
}
//Trou 2
translate([0, -coteColonne/2-5, -hauteurColonne/2]){
cylinder(h = epaisseurSocle, r1 = diametreVis/2, r2 = diametreVis/2, $fn = 1000, center = false);
}
//Trou 3
translate([0, coteColonne/2+5, -hauteurColonne/2]){
cylinder(h = epaisseurSocle, r1 = diametreVis/2, r2 = diametreVis/2, $fn = 1000, center = false);
}
//Trou 4
translate([+coteColonne/2+5, epSupRap-2, -hauteurColonne/2]){
cylinder(h = epaisseurSocle, r1 = diametreVis/2, r2 = diametreVis/2, $fn = 1000, center = false);
}
//Trou 5
translate([+coteColonne/2+5, -epSupRap+2, -hauteurColonne/2]){
cylinder(h = epaisseurSocle, r1 = diametreVis/2, r2 = diametreVis/2, $fn = 1000, center = false);
}
}
==== Code OpenSCAD pour le support 2 de la poulie ====
//dimensions du support de la poulie
coteColonne = 30; //mm epaisseur de la colonne
hauteurColonne = 57.55 ; //mm
surplusCol = 10; //mm hauteur de la colonne au-dessus du trou
//dimensions du trou
enfoncement = 20; //profondeur du trou pour emboîter la tige
diametreTrou = 7.9; //mm diametre du trou du roulement à billes
//dimensions du socle du support
diametreVis = 2.5; //mm // diametre des trous pour les vis
epaisseurSocle = 5;//mm
largSocle = coteColonne + 20;
//colonne
difference(){
translate([0, 0, surplusCol/2]){
cube([coteColonne, coteColonne, hauteurColonne+surplusCol], center = true);
}
//Trou pour enfoncer la tige
translate([-5, 0, hauteurColonne/2-diametreTrou/2]){
rotate([0, 90, 0]){
cylinder(h = enfoncement, r1 = diametreTrou/2+0.5, r2 = diametreTrou/2+0.5, $fn = 1000, center = false);
}
}
}
//socle
difference(){
translate([0, 0, -hauteurColonne/2+epaisseurSocle/2]){
cube([largSocle, largSocle, epaisseurSocle], center = true);
}
//Trous pour les vis : 4
//Trou 1
translate([-coteColonne/2-5, 0, -hauteurColonne/2]){
cylinder(h = epaisseurSocle, r1 = diametreVis/2, r2 = diametreVis/2, $fn = 1000, center = false);
}
//Trou 2
translate([0, -coteColonne/2-5, -hauteurColonne/2]){
cylinder(h = epaisseurSocle, r1 = diametreVis/2, r2 = diametreVis/2, $fn = 1000, center = false);
}
//Trou 3
translate([0, coteColonne/2+5, -hauteurColonne/2]){
cylinder(h = epaisseurSocle, r1 = diametreVis/2, r2 = diametreVis/2, $fn = 1000, center = false);
}
//Trou 4
translate([+coteColonne/2+5, 0, -hauteurColonne/2]){
cylinder(h = epaisseurSocle, r1 = diametreVis/2, r2 = diametreVis/2, $fn = 1000, center = false);
}
}
==== Code OpenSCAD pour la gaine de la poulie ====
//dimensions de la gaine
epaisseurR = 7; //m epaisseur du roulement à billes
diametreR = 20; //mm diametre du roulement à billes
depassement = 2; //mm dépassement de la gaine de chaque cote du roulement à billes
epaisseurExt = 15; //mm epaisseur des cylindres exterieurs de la gaine
epaisseurInt = 10; //mm epaisseur du cylindre interieur de la gaine
longFleche = 40; //mm
//cylindre intérieur de la gaine
difference(){
cylinder(h = epaisseurR, r1 = diametreR/2 + epaisseurInt, r2 = diametreR/2 + epaisseurInt, $fn = 1000, center = true);
cylinder(h = epaisseurR, r1 = diametreR/2, r2 = diametreR/2, $fn = 1000, center = true);
}
//cylindre extérieur 1 de la gaine
difference(){
translate([0, 0, epaisseurR/2]){
cylinder(h = depassement, r1 = diametreR/2 + epaisseurExt, r2 = diametreR/2 + epaisseurExt, $fn = 1000, center = true);
}
cylinder(h = epaisseurR+2*depassement, r1 = diametreR/2, r2 = diametreR/2, $fn = 1000, center = true);
}
//cylindre extérieur 2 de la gaine
difference(){
translate([0, 0, -epaisseurR/2]){
cylinder(h = depassement, r1 = diametreR/2 + epaisseurExt, r2 = diametreR/2 + epaisseurExt, $fn = 1000, center = true);
}
cylinder(h = epaisseurR+2*depassement, r1 = diametreR/2, r2 = diametreR/2, $fn = 1000, center = true);
}
//tige de la fleche
translate([diametreR/2+epaisseurExt-1+longFleche/2, 0, epaisseurR/2]){
cube([longFleche, depassement, depassement], center = true);
}
//pointe de la fleche
translate([diametreR/2+epaisseurExt+longFleche-1, 0, epaisseurR/2]){
rotate([0, 0, 45]){
cube([2, 2, 2], center = true);
}
}
===== Découpe/gravure =====
==== Code OpenSCAD pour le cadre ====
//dimensions du cadre
longC = 300 + 80 + 40; //mm longueur du cadre
hautC = 300; //mm hauteur du cadre
bordureBas = 50; //mm épaisseur de la partie inférieure du cadre
bordure = 40; //mm épaisseur des partie latérales et supérieure du cadre
largeurFente = 7; //mm
profondeurFente = 25; //mm
difference(){
square([longC, hautC], center = true);
translate([0, (bordureBas-bordure)/2, 0]){
square([longC-bordure*2, hautC-bordure-bordureBas], center = true);
}
translate([-largeurFente/2, -hautC/2+bordureBas/2, 0]){
square([largeurFente, profondeurFente]);
}
}
==== Code OpenSCAD pour le bras de levier ====
//dimensions du bras de levier
largeur = 40; //mm
diametreTrou = 4; //mm
nbUnites = 48; //nombre d'encoches
longueur = 500; //mm longueur de la barre à partir du trou
//dimensions des encoches
profondeurEncoche = 2; //mm
var = 0;
difference(){
square([longueur, largeur]);
//trou
translate([0, largeur/2, 0]){
circle(diametreTrou/2, $fn = 360);
}
//encoches
for (i=[1:nbUnites]){
var = i*10;
translate([var, 0, 0]){
rotate([0, 0, 45]){
square([profondeurEncoche, profondeurEncoche], center = true);
}
}
}
}
//Pour la forme arrondie
translate([0, largeur/2, 0]){
difference(){
circle(largeur/2);
//trou
circle(diametreTrou/2, $fn = 360);
}
}
==== Code OpenSCAD pour le soutien de bras de levier ====
//dimensions de la piece de soutien
largB2 = 40; //mm largeur de la piece
longB2 = 123; //mm longueur de la piece à partir du trou circulaire
largFente = 20; //mm largeur du trou rectangulaire
hautFente = 18+6+6+3; //mm hauteur du trou rectangulaire
hautCreux = longB2/10; //mm longueur d'une crénelure
profCreux = 6; //mm profondeur d'une crénelure
diametreTrou = 4; //mm
difference(){
square([longB2, largB2]);
translate([0, largB2/2, 0]){
//trou
circle(diametreTrou/2, $fn = 360);
}
//fente rectangulaire
translate([longB2-(hautFente+largB2/2), largB2/4, 0]){
square([hautFente, largFente]);
}
//crenelures : 4
translate([hautCreux, 0, 0]){
square([hautCreux,profCreux]);
}
translate([3*hautCreux, 0, 0]){
square([hautCreux,profCreux]);
}
translate([2*hautCreux, largB2-profCreux, 0]){
square([hautCreux,profCreux]);
}
translate([4*hautCreux, largB2-profCreux, 0]){
square([hautCreux,profCreux]);
}
}
//forme arrondie
translate([0, largB2/2, 0]){
difference(){
circle(largB2/2);
translate([hautCreux, -largB2/2, 0]){
square([hautCreux,profCreux]);
}
//Trou
circle(diametreTrou/2, $fn = 360);
}
}
==== Code OpenSCAD pour la pièce d'emboîtement 1 ====
//dimensions de la piece d'emboitement 1
longB2 = 123; //mm longueur de la piece de soutien à partir du trou circulaire
hautCreux = longB2/10; //mm longueur d'une crénelure
profCreux = 6; //mm profondeur d'une crénelure
difference(){
square ([4*hautCreux, profCreux*3]);
translate([0, 0, 0]){
square([hautCreux,profCreux]);
}
translate([2*hautCreux, 0, 0]){
square([hautCreux,profCreux]);
}
translate([hautCreux, 2*profCreux, 0]){
square([hautCreux,profCreux]);
}
translate([3*hautCreux, 2*profCreux, 0]){
square([hautCreux,profCreux]);
}
}
==== Code OpenSCAD pour la pièce d'emboîtement 2 ====
longueur = 50; //mm
largeur = 20; //mm
square([longueur, largeur]);
==== Code OpenSCAD pour la pièce d'emboîtement 3 ====
longueur = 50; //mm
largeur = 20; //mm
square([longueur, largeur]);
==== Code OpenSCAD pour l'ailette ====
//dimensions des demi-cercles pour espacer les 2 boites
rayonExt = 60; //mm
rayonInt = 40; //mm
//"poignee
translate([0, rayonExt, 0]){
circle(20, $fn = 1000);
}
//arc de cercle
difference(){
difference(){
circle(rayonExt, $fn = 1000);
circle(rayonInt, $fn = 1000);
}
translate([-rayonExt, -rayonExt, 0]){
square([rayonExt*2, rayonExt]);
}
}
==== Code OpenSCAD pour la barre ====
longB = 170; //mm
largB = 5; //mm
square([longB, largB]);
==== Code OpenSCAD pour le support inférieur ====
difference(){
square([300, 600], center = true);
translate([6, -100, 0]){
square([6, 40], center = true);
}
translate([-6, -100, 0]){
square([6, 40], center = true);
}
translate([-6, -195, 0]){
square([6, 40], center = true);
}
translate([6, -195, 0]){
square([6, 40], center = true);
}
translate([0, -300, 0]){
square([5, 40], center = true);
}
}
==== Code OpenSCAD pour le support supérieur ====
difference(){
square([300, 600], center = true);
circle(60, center = true, $fn = 360);
translate([6, -100, 0]){
square([6, 40], center = true);
}
translate([-6, -100, 0]){
square([6, 40], center = true);
}
translate([-6, -195, 0]){
square([6, 40], center = true);
}
translate([6, -195, 0]){
square([6, 40], center = true);
}
translate([0, -300, 0]){
square([5, 40], center = true);
}
}
==== Code OpenSCAD pour les pieds ====
//dimension des pieds
hauteur = 600; //mm
largeur = 300; //mm
largHaut = 100; //mm largeur de sommet des pieds
largBas = 200; //mm largeur de la base des pieds
//dimensions de la fente
profFente = 300; //mm
largFente = 20 ;//mm
difference(){
square([largeur, hauteur]);
translate([largHaut, 0, 0]){
rotate([0, 0, -10]){
square([largeur, hauteur+100]);
}
}
//fente du pied à gauche
translate([largHaut/2, profFente/2, 0]){
square([largFente, profFente], center = true);
}
}
//fente du pied droite
translate([largeur-largHaut/2, hauteur-profFente/2, 0]){
square([largFente, profFente], center = true);
}
==== Code OpenSCAD pour la barre de soutien ====
square([150, 350]);
==== Code OpenSCAD pour le rapporteur ====
rayonRap = 40; //mm
e = 0.01; //mm largeur des graduations
epSupRap = 10; //mm largeur de la fante du rapporteur (épaisseur du support)
diametreTrou = 7.9; //mm diamètre du trou du roulement à billes
difference(){
circle(rayonRap, $fn = 1000, center = true);
//graduations
difference(){
for(i=[1:18]){
rotate([0, 0, i*10]){
square([e, rayonRap*2], center = true);
}
}
circle(rayonRap-8, $fn = 1000, center = true);
}
difference(){
for(i=[1:18*2]){
rotate([0, 0, i*5]){
square([e, rayonRap*2], center = true);
}
}
circle(rayonRap-5, $fn = 1000, center = true);
}
difference(){
for(i=[1:180]){
rotate([0, 0, i]){
square([e, rayonRap*2], center = true);
}
}
circle(rayonRap - 2, $fn = 1000, center = true);
}
//fente
translate([0, -rayonRap/2+diametreTrou/4, 0]){
square([epSupRap, rayonRap+diametreTrou/2], center = true);
}
//texte : 0, 90, 180
translate([-2.5, rayonRap-12, 0]){
text("90", size = 3, font = "Yu Gothic:style=Regular");
//text("90", size = 3, font = "Arial");
}
translate([-rayonRap+12, -1, 0]){
rotate([0, 0, 90]){
text("0", size = 3, font = "Yu Gothic:style=Regular");
}
}
translate([rayonRap-12, 3.5, 0]){
rotate([0, 0, -90]){
text("180", size = 3, font = "Yu Gothic:style=Regular");
}
}
}