====== 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"); } } }