First try
This commit is contained in:
commit
06c2feef41
1
.~lock.Budget-Ruche-Connectee.ods#
Normal file
1
.~lock.Budget-Ruche-Connectee.ods#
Normal file
|
|
@ -0,0 +1 @@
|
|||
,fablab,fablab,02.12.2025 15:54,file:///home/fablab/.config/libreoffice/4;
|
||||
BIN
Budget-Ruche-Connectee.ods
Normal file
BIN
Budget-Ruche-Connectee.ods
Normal file
Binary file not shown.
22018
Parts/Machined/Equerres/DXF/equerres.dxf
Normal file
22018
Parts/Machined/Equerres/DXF/equerres.dxf
Normal file
File diff suppressed because it is too large
Load diff
46
Parts/Machined/Equerres/svg/EQUERRES.svg
Normal file
46
Parts/Machined/Equerres/svg/EQUERRES.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 23 KiB |
86948
Parts/Machined/Profiles/DXF/profiles2D.dxf
Normal file
86948
Parts/Machined/Profiles/DXF/profiles2D.dxf
Normal file
File diff suppressed because it is too large
Load diff
12415
Parts/Machined/Profiles/svg/profiles2D.svg
Normal file
12415
Parts/Machined/Profiles/svg/profiles2D.svg
Normal file
File diff suppressed because it is too large
Load diff
|
After Width: | Height: | Size: 428 KiB |
BIN
Parts/Printed/601-602.3mf
Normal file
BIN
Parts/Printed/601-602.3mf
Normal file
Binary file not shown.
BIN
Parts/Printed/601-602.stl
Normal file
BIN
Parts/Printed/601-602.stl
Normal file
Binary file not shown.
4
Parts/README.md
Normal file
4
Parts/README.md
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# Othor : Jhodi #######
|
||||
Ce répertoire contient les fichiers .dxf et .svg relatif à la conception de la balance mécanique du projet OpenBeeLab
|
||||
En prince si vous êtes ici c'est que vous avez lu le fichier Buget-Ruche-Connectee.ods
|
||||
|
||||
12
README.md
Normal file
12
README.md
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
# mechanic
|
||||
Openscad model (and 2D blueprints, to come...)
|
||||
|
||||
Importants files :
|
||||
parameters : all the dimensions/positions we want to define only once, and all the rest is based on that
|
||||
standardParts : the model of the parts we buy on the market
|
||||
customParts : all the parts we build specifically for this project, laser cut inox, aluminium profiles, and very few 3D printed parts.
|
||||
assembly : all previous parts assembled together to view the subassemblies and final model
|
||||
|
||||
cncDrill, drilling : the tools to drill the profiles
|
||||
views : exploded views, mainly to make the assembly manual
|
||||
functions, timing_belts, : various helpers
|
||||
18
animation.scad
Normal file
18
animation.scad
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
include <assembly.scad>
|
||||
|
||||
//animation = 46;
|
||||
animationPerPart(animation);
|
||||
|
||||
module animationPerPart(animation) {
|
||||
if (animation >= 41) {
|
||||
cadreSup(animation - 41); //5
|
||||
} else if (animation >= 33) { // 33 -> 40
|
||||
assemblageTriangle1(animation - 33); //7
|
||||
} else if (animation >= 24) { // 24 -> 32
|
||||
assemblageTriangle2(animation - 24); //8
|
||||
} else if (animation >= 10) { // 10 -> 23
|
||||
translate([longueur-xBrasSecondaire,largeur/2+largeurBras/2,zBrasSecondaire]) rotate([0,0,180]) brasSecondaire(animation - 10); //13
|
||||
} else if (animation >= 0) {
|
||||
cadreInf(animation); // 9
|
||||
}
|
||||
}
|
||||
752
assembly.scad
Normal file
752
assembly.scad
Normal file
|
|
@ -0,0 +1,752 @@
|
|||
include <parameters.scad>
|
||||
include <functions.scad>
|
||||
include <customParts.scad>
|
||||
include <standardParts.scad>
|
||||
|
||||
/////////////////////////////////////////////////
|
||||
///// Assemblages /////
|
||||
/////////////////////////////////////////////////
|
||||
module motorPulley() {
|
||||
translate([0,-8,-19]) stepper28BYJ();
|
||||
color("SILVER") translate([0,0,2.5]) pulley();
|
||||
}
|
||||
|
||||
|
||||
//assemblageGlobal();
|
||||
|
||||
//cadreInf();
|
||||
//translate([0,0,2]) brasSecondaire();
|
||||
//translate([0,0,-2.0]) brasSecondaire();
|
||||
//laser252();
|
||||
|
||||
//brasSecondaire();
|
||||
|
||||
//assemblageTriangle1();
|
||||
//assemblageTriangle2();
|
||||
|
||||
|
||||
//cadreInf();
|
||||
|
||||
//brasSecondaire([2,4,7]);
|
||||
|
||||
module brasSecondaire(animation=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16],moveInFinalPlace=true,offsetContrepoids = 250) {
|
||||
|
||||
|
||||
|
||||
xContrePoids = xMotor + offsetContrepoids;
|
||||
xTensionner = xMotor + 400 - offsetContrepoids;
|
||||
|
||||
xFinal = moveInFinalPlace ? longueur-xBrasSecondaire : 0;
|
||||
yFinal = moveInFinalPlace ? largeur/2+largeurBras/2 : 0;
|
||||
zFinal = moveInFinalPlace ? zBrasSecondaire : 0;
|
||||
rzFinal = moveInFinalPlace ? 180 : 0;
|
||||
|
||||
translate([xFinal,yFinal,zFinal]) rotate([0,0,rzFinal]) {
|
||||
///////////////arbre/////////////////
|
||||
if (search(0,animation)) {
|
||||
color("red") translate([23,largeurBras/2,8]) tube(10,6,lBrasSecondaire-23);
|
||||
}
|
||||
|
||||
|
||||
if (search(1,animation)) {
|
||||
translate([xContrePoids,largeurBras/2,8]) rotate([0,90,0]) LM10UU();
|
||||
}
|
||||
|
||||
if (search(2,animation)) {
|
||||
translate([xContrePoids,largeurBras/2,15]) rotate([0,0,180]) laser213();
|
||||
}
|
||||
if (search(3,animation)) {
|
||||
translate([xContrePoids-6,largeurBras/2,8]) rotate([90,0,90]) serflex213();
|
||||
translate([xContrePoids+6,largeurBras/2,8]) rotate([90,0,90]) serflex213();
|
||||
}
|
||||
|
||||
if (search(4,animation)) {
|
||||
for (x=[-12,12]) {
|
||||
for (y=[-12,12]) {
|
||||
translate([xContrePoids+x,largeurBras/2+y,17]) screwNut(4,50,46);
|
||||
translate([xContrePoids+x,largeurBras/2+y,-13.8]) nut(4);
|
||||
}
|
||||
translate([xContrePoids+x,largeurBras/2+12,14.8]) nut(4);
|
||||
}
|
||||
}
|
||||
|
||||
if (search(5,animation)) {
|
||||
translate([xContrePoids,largeurBras/2,-23]) laser281();
|
||||
translate([xContrePoids,largeurBras/2,-29]) laser281();
|
||||
}
|
||||
|
||||
if (search(6,animation)) {
|
||||
difference() {
|
||||
translate([xMotor-9,9,zMotor]) belt();
|
||||
translate([xTensionner-5.8,8,0]) cube([11.6,10,6]);
|
||||
}
|
||||
|
||||
translate([xTensionner,9,2]) {
|
||||
tensionner();
|
||||
translate([-5.8,0,-1]) rotate([0,-57,0]) cube([7.6,6,1]);
|
||||
translate([5.8,6,-1]) rotate([0,-57,180]) cube([7.6,6,1]);
|
||||
translate([0,6,4.2]) rotate([90,0,0]) intersection() {
|
||||
difference() {
|
||||
cylinder(d=6.1,h=6,$fn=20);
|
||||
translate([0,0,-1]) cylinder(d=4,h=8,$fn=20);
|
||||
}
|
||||
translate([-5,1,-1]) cube([10,10,10]);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (search(7,animation)) {
|
||||
translate([xContrePoids,largeurBras/2-12,10.2]) rotate([0,0,180]) laser211();
|
||||
translate([xContrePoids,largeurBras/2-12,13]) rotate([0,0,180]) laser212();
|
||||
translate([xContrePoids,largeurBras/2-12,17]) screwNut(3,10,6.8);
|
||||
|
||||
translate([xContrePoids,largeurBras/2-12,12.2]) rondelle(3,6);
|
||||
|
||||
|
||||
}
|
||||
|
||||
if (search(8,animation)) {
|
||||
translate([xPulley,16,zMotor]) rotate([90,0,0]) f623zz();
|
||||
translate([xPulley,8,zMotor]) rotate([-90,0,0]) f623zz();
|
||||
translate([xPulley,0,zMotor]) rotate([90,0,0]) screwNut(3,20,16);
|
||||
translate([xPulley,2,zMotor]) rotate([-90,0,0]) rondelle(3,8,5);
|
||||
|
||||
|
||||
}
|
||||
|
||||
if (search(9,animation)) {
|
||||
translate([xMotor,0,zMotor]) rotate([-90,30,0]) motorPulley();
|
||||
translate([xMotor+fixMoteur1X,-0.5,zMotor+fixMoteur1Y]) rotate([90,0,0]) screwNut(4,10,2.5);
|
||||
translate([xMotor-fixMoteur2X,-0.5,zMotor+fixMoteur2Y]) rotate([90,0,0]) screwNut(4,10,2.5);
|
||||
|
||||
|
||||
//translate([xMotor,4,zMotor]) rotate([-90,0,180]) laser251();
|
||||
translate([xMotor,3,zMotor]) rotate([-90,0,0]) rotate([0,0,-60]) printed602();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
if (search(10,animation)) {
|
||||
translate([xCouteauIII,largeurBras+spacer108,zCouteauBrasSecondaire]) rotate([90,0,180]) laser108();
|
||||
translate([xCouteauIII,-epaisseurCouteau-spacer108,zCouteauBrasSecondaire]) rotate([90,0,180]) laser108();
|
||||
for (x=[xCouteauIII+10,xCouteauIII-20]) {
|
||||
translate([x,largeurBras+4.8,zCouteauBrasSecondaire+13]) rotate([-90,0,0]) screwNut(4,10,6.8);
|
||||
translate([x,-4.8,zCouteauBrasSecondaire+13]) rotate([90,0,0]) screwNut(4,10,6.8);
|
||||
|
||||
translate([x,largeurBras,zCouteauBrasSecondaire+13]) rotate([-90,0,0]) rondelle(4,8,0.8);
|
||||
translate([x,0,zCouteauBrasSecondaire+13]) rotate([90,0,0]) rondelle(4,8,0.8);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (search(11,animation)) {
|
||||
translate([23,largeurBras/2-21,28]) rotate([180,0,90]) SK10();
|
||||
translate([lBrasSecondaire-14,largeurBras/2-21,28]) rotate([180,0,90]) SK10();
|
||||
for (x=[30,lBrasSecondaire-7],y=[-16,16])
|
||||
translate([x,largeurBras/2+y,30]) screwNut(5,12,8);
|
||||
}
|
||||
|
||||
|
||||
if (search(12,animation)) {
|
||||
profile306();
|
||||
|
||||
}
|
||||
|
||||
if (search(13,animation)) {
|
||||
translate([lBrasSecondaire,largeurBras,0]) rotate([0,0,180]) profile305();
|
||||
}
|
||||
|
||||
if (search(14,animation)) {
|
||||
translate([longueur-xBrasSecondaire-xObturateur+0.5,0,5]) rotate([90,0,-90]) laser252();
|
||||
translate([longueur-xBrasSecondaire-xObturateur,epaisseurTole,17]) rotate([-90,0,0]) screwNut(4,10,4.5);
|
||||
|
||||
|
||||
}
|
||||
|
||||
if (search(15,animation)) {
|
||||
render() translate([xMotor,58-0.8,zMotor]) rotate([90,0,0]) 625zz();
|
||||
translate([xMotor,58-0.8,zMotor]) rotate([90,0,0]) serflex625zz();
|
||||
|
||||
for (xz=[[xMotor,zMotor+8+1.5],
|
||||
[xMotor-sqrt(pow(9.5,2)-pow((zMotor-3.5),2)),3.5],
|
||||
[xMotor+sqrt(pow(9.5,2)-pow((zMotor-3.5),2)),3.5]]) {
|
||||
x = xz[0];
|
||||
z = xz[1];
|
||||
|
||||
translate([x,largeurBras,z]) {
|
||||
rotate([-90,0,0]) screwNut(3,10,7.8);
|
||||
translate([0,-2,0]) rotate([90,0,0]) rondelle(3,8,0.8);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (search(16,animation)) {
|
||||
translate([xMotor+1,3.5,zMotor-19.3]) rotate([0,0,-90]) endstop();
|
||||
translate([xMotor+5,-5,zMotor+7]) rotate([-90,0,180]) laser216();
|
||||
translate([xMotor,-1,zMotor]) rotate([90,0,0]) serflex216();
|
||||
|
||||
}
|
||||
|
||||
if (search(17,animation)) {
|
||||
translate([xMotor,8,zMotor]) arbre321();
|
||||
}
|
||||
|
||||
//Exploded views
|
||||
if (search(50,animation)) {
|
||||
translate([xCouteauIII,largeurBras+spacer108,zCouteauBrasSecondaire]) rotate([90,0,180]) laser108();
|
||||
//translate([xCouteauIII,-epaisseurCouteau-spacer108,zCouteauBrasSecondaire]) rotate([90,0,180]) laser108();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//brasSecondaire();
|
||||
|
||||
module assemblageCouteau3(animation) {
|
||||
if (search(19,animation)) {
|
||||
laser207();
|
||||
translate([6,4,0]) rotate([-90,0,0]) screwNut(4,10,5.7);
|
||||
}
|
||||
|
||||
if (search(20,animation)) {
|
||||
translate([0,-50,0]) laser207();
|
||||
translate([6,4+20,0]) rotate([-90,0,0]) screwNut(4,10,5.7+70,true);
|
||||
}
|
||||
}
|
||||
|
||||
/*module assemblageContreCouteauIII(animation) {
|
||||
translate([0,0,0]) rotate([90,0,0]) laser105();
|
||||
translate([0,-epaisseurCouteau,0]) rotate([0,90,0]) assemblageCouteau3(animation);
|
||||
}*/
|
||||
|
||||
|
||||
//cadreInf();
|
||||
|
||||
|
||||
module cadre(animation=[0,1,2,3]) {
|
||||
if (search(0,animation)) {
|
||||
profile301();
|
||||
translate([longueur,largeur,0]) rotate([0,0,180]) profile301();
|
||||
}
|
||||
|
||||
if (search(1,animation)) {
|
||||
translate([longueur,0,0]) rotate([0,0,90]) profile302();
|
||||
translate([0,largeur,0]) rotate([0,0,-90]) profile302();
|
||||
}
|
||||
|
||||
if (search(2,animation)) {
|
||||
laser206();
|
||||
translate([longueur,largeur,0]) rotate([0,0,180]) laser206();
|
||||
translate([longueur,0,0]) rotate([0,0,90]) laser206();
|
||||
translate([0,largeur,0]) rotate([0,0,-90]) laser206();
|
||||
}
|
||||
|
||||
if (search(3,animation)) {
|
||||
for (x=[26,48,longueur-26,longueur-48],y=[10,largeur-10])
|
||||
translate([x,y,0]) rotate([180,0,0]) screwNut(4,10,4);
|
||||
for (x=[10,longueur-10],y=[26,48,largeur-26,largeur-48])
|
||||
translate([x,y,0]) rotate([180,0,0]) screwNut(4,10,4);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
module cadreSup(animation=[0,1,2,3,4,5,6]) {
|
||||
translate([0,largeur,zPlateau]) rotate([180,0,0]) cadre(animation);
|
||||
|
||||
|
||||
|
||||
if (search(4,animation)) {
|
||||
translate([longueur-xCouteauSuperieur,eCorniereCadre,zPlateau-epaisseurTole-eCorniereCadre]) rotate([-90,0,0]) laser101();
|
||||
translate([longueur-xCouteauSuperieur,largeur-eCorniereCadre-epaisseurCouteau,zPlateau-epaisseurTole-eCorniereCadre]) rotate([-90,0,0]) laser101();
|
||||
|
||||
for (y=[eCorniereCadre+epaisseurCouteau,largeur-eCorniereCadre])
|
||||
translate([xCouteauSuperieur,y,zPlateau-epaisseurTole-eCorniereCadre]) rotate([-90,0,180]) laser102();
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (search(5,animation)) {
|
||||
for (x=[xCouteauSuperieur,xCouteauInferieur]) {
|
||||
translate([longueur-x,largeur,zPlateau-12])rotate([-90,0,0]) screwNut(4,10,6);
|
||||
translate([longueur-x,0,zPlateau-12])rotate([90,0,0]) screwNut(4,10,6);
|
||||
}
|
||||
|
||||
translate([xCouteauSuperieur,0,zPlateau-12])rotate([90,0,0]) screwNut(4,10,6);
|
||||
translate([xCouteauSuperieur,largeur,zPlateau-12])rotate([-90,0,0]) screwNut(4,10,6);
|
||||
}
|
||||
|
||||
if (search(6,animation)) {
|
||||
translate([2,yMediane,zPlateau-2]) protection701();
|
||||
|
||||
for (x=[10,longueur-10],y=[y303+2-10,y304-2+10]) {
|
||||
translate([x,y,zPlateau])rotate([0,0,0]) screwNut(4,10,2.6+0.8);
|
||||
translate([x,y,zPlateau-2.6-0.8]) rondelle(4,10,0.8);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
module cadreInf(animation=[0,1,2,3,4,5,6,7,8,9,10,11]) {
|
||||
|
||||
|
||||
cadre(animation);
|
||||
|
||||
|
||||
if (search(4,animation)) {
|
||||
translate([2,y304-2,2]) profile303();
|
||||
translate([498,y303+2,2]) rotate([0,0,180]) profile304();
|
||||
}
|
||||
|
||||
if (search(5,animation)) {
|
||||
translate([xBrasSecondaire2,y303,z]) rotate([0,0,0]) rotate([90,0,0]) laser105();
|
||||
translate([xBrasSecondaire2,y304,z]) rotate([0,0,180]) rotate([90,0,0]) laser105();
|
||||
for (x=[xBrasSecondaire2+8,xBrasSecondaire2-8]){
|
||||
translate([x,y303+2,14])rotate([-90,0,0]) screwNut(4,10,6);
|
||||
translate([x,y304-2,14])rotate([90,0,0]) screwNut(4,10,6);
|
||||
}
|
||||
}
|
||||
|
||||
if (search(6,animation)) {
|
||||
//obturateur
|
||||
translate([xObturateur,y304+4,4]) rotate([90,0,180]) {
|
||||
for (x=[-6.5,15.5]) {
|
||||
translate([x,9,-6]) rotate([180,0,0]) screwNut(4,16,8);
|
||||
translate([x,9,-4]) rondelle(4,8,4);
|
||||
//for (z=[0:4]) translate([x,9,-1-z]) rondelle(4,8,1);
|
||||
|
||||
}
|
||||
|
||||
laser203();
|
||||
translate([0,26.4,epaisseurTole/2]) rotate([-90,180,0]) endstop();
|
||||
translate([-9.5,31,1])rotate([-90,30,0]) screwNut(3,12,8.6);
|
||||
for (x=[-9.5,9.5],z=[0,0.8]) {
|
||||
translate([x,24.8+z,0])rotate([-90,0,0]) rondelle(3,8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (search(7,animation)) {
|
||||
for (x=[10,longueur-10],y=[y303+2-10,y304-2+10])
|
||||
translate([x,y,0])rotate([180,0,0]) screwNut(4,10,4);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if (search(8,animation)) {
|
||||
for (y=[eCorniereCadre,largeur-eCorniereCadre-epaisseurCouteau]) {
|
||||
translate([xCouteauInferieur,y+epaisseurCouteau,epaisseurTole+eCorniereCadre]) rotate([90,0,0]) laser101();
|
||||
translate([longueur-xCouteauInferieur,y,epaisseurTole+eCorniereCadre]) rotate([90,0,180]) laser101();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (search(9,animation)) {
|
||||
for (x=[xCouteauInferieur,xCouteauSuperieur,longueur-xCouteauInferieur,longueur-xCouteauSuperieur]){
|
||||
translate([x,0,12])rotate([90,0,0]) screwNut(4,10,6);
|
||||
translate([x,largeur,12])rotate([-90,0,0]) screwNut(4,10,6);
|
||||
}
|
||||
}
|
||||
|
||||
if (search(10,animation)) {
|
||||
translate([x308,largeur-l308309-2,4]) rotate([0,0,90]) profile308();
|
||||
translate([x309,largeur-2,4]) rotate([0,0,-90]) profile309();
|
||||
|
||||
for (x=[x308-10,x309+10]) {
|
||||
translate([x,largeur-l308309-2+8,2]) rotate([180,0,0]) screwNut(4,10,4);
|
||||
}
|
||||
}
|
||||
|
||||
if (search(12,animation)) {
|
||||
translate([x309+2,largeur-90,6]) cube([100,68,50]);
|
||||
}
|
||||
|
||||
|
||||
//if (search(11,animation) || search(20,animation)) {
|
||||
|
||||
|
||||
translate([xBrasSecondaire2,y303,z]) rotate([0,0,0]) translate([0,-epaisseurCouteau,0]) rotate([0,90,0]) assemblageCouteau3(animation);
|
||||
translate([xBrasSecondaire2,y304,z]) rotate([0,0,180]) translate([0,-epaisseurCouteau,0]) rotate([0,90,0]) assemblageCouteau3(animation);
|
||||
//}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
module assemblageContreCouteau(inversion,animation) {
|
||||
rotX = inversion ? -90: 90;
|
||||
transZ = ((inversion == 1) ? epaisseurCouteau : 0); //inversion ? -epaisseurCouteau:2*epaisseurCouteau;
|
||||
transY = ((inversion == 0) ? epaisseurCouteau : 0);
|
||||
transYCentrage = ((inversion == 0) ? epaisseurCouteau : -epaisseurCouteau);
|
||||
transYFixation = ((inversion == 0) ? -epaisseurTole : epaisseurTole);
|
||||
rotZ = ((inversion == 0) ? 180 : 0);
|
||||
|
||||
|
||||
if (search(0,animation)) {
|
||||
translate([-36,transY,-14]) rotate([90,0,0]) laser106();
|
||||
}
|
||||
|
||||
//if (search(1,animation)) {
|
||||
translate([0,transYCentrage,0]) rotate([0,-90,rotZ]) assemblageCouteau3(animation);
|
||||
translate([offsetCouteau,transYCentrage,0]) rotate([0,90,rotZ]) assemblageCouteau3(animation);
|
||||
//}
|
||||
|
||||
if (search(2,animation)) {
|
||||
translate([-22,transYFixation,10]) rotate([0,0,rotZ+180]) laser201();
|
||||
translate([-22,transYFixation,-10-epaisseurTole]) rotate([0,0,rotZ+180]) laser201();
|
||||
}
|
||||
|
||||
|
||||
if (search(20,animation)) {
|
||||
translate([0,transYCentrage,0]) rotate([0,-90,rotZ]) {
|
||||
translate([0,-20,0]) laser207();
|
||||
translate([6,4+80,0]) rotate([-90,0,0]) screwNut(4,10,5.7+100,true);
|
||||
}
|
||||
}
|
||||
if (search(21,animation)) {
|
||||
translate([offsetCouteau,transYCentrage,0]) rotate([0,90,rotZ]) {
|
||||
translate([0,-20,0]) laser207();
|
||||
translate([6,4+80,0]) rotate([-90,0,0]) screwNut(4,10,5.7+100,true);
|
||||
}
|
||||
}
|
||||
//if (search(22,animation)) {
|
||||
translate([0,transYCentrage,0]) rotate([0,-90,rotZ]) assemblageCouteau3(animation);
|
||||
//}
|
||||
//if (search(23,animation)) {
|
||||
translate([offsetCouteau,transYCentrage,0]) rotate([0,90,rotZ]) assemblageCouteau3(animation);
|
||||
//}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//assemblageTriangle1([0,1,2,3,8,9,10,11]);
|
||||
module assemblageTriangle1(animation=[0,2,3,4,5,6,7,8,9,10,11,12,19]) {
|
||||
|
||||
//contre couteaux
|
||||
translate([longueur-xCouteauInferieur, largeur-epaisseurTole, zPlateau/2]) rotate([0,0,180]) assemblageContreCouteau(0,animation);
|
||||
translate([longueur-xCouteauInferieur, epaisseurTole, zPlateau/2]) rotate([0,0,180]) assemblageContreCouteau(1,animation);
|
||||
|
||||
|
||||
if (search(3,animation)) {
|
||||
translate([longueur-6,0,zPlateau / 2 - 10]) rotate([0,0,90]) tube311();
|
||||
}
|
||||
|
||||
if (search(4,animation)) {
|
||||
translate([longueur/2,y312+10+spacer104+epaisseurCouteau,zPlateau / 2]) rotate([90,0,0]) laser103();
|
||||
|
||||
for (x=[21,-21]) {
|
||||
translate([longueur/2+x,y312+10,zPlateau / 2]) rotate([-90,0,0]) rondelle(4,8,spacer104);
|
||||
translate([longueur/2+x,y312+10+4+spacer104,zPlateau / 2]) rotate([-90,0,0]) screwNut(4,30,24+spacer104);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (search(5,animation)) {
|
||||
translate([longueur-26,y312-10,zPlateau / 2+10]) rotate([0,180,0]) tube312();
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (search(6,animation)) {
|
||||
translate([longueur-xCouteauInferieur+32,y312+10,zPlateau / 2 + 10 + 2]) rotate([180,0,-90]) laser215();
|
||||
translate([longueur-xCouteauInferieur+32,y312+10,zPlateau / 2 - 10]) rotate([180,0,-90]) laser215();
|
||||
}
|
||||
|
||||
if (search(7,animation)) {
|
||||
translate([longueur-xCouteauInferieur+32-10,y312,zPlateau / 2 +12]) rotate([0,0,0]) screwNut(4,30,24);
|
||||
translate([longueur-xCouteauInferieur+32-30,y312,zPlateau / 2 +12]) rotate([0,0,0]) screwNut(4,30,24);
|
||||
translate([longueur-xCouteauInferieur+32-90,y312,zPlateau / 2 +12]) rotate([0,0,0]) screwNut(4,30,24);
|
||||
translate([longueur-xCouteauInferieur+32-10,y312-40,zPlateau / 2 +12]) rotate([0,0,0]) screwNut(4,30,24);
|
||||
}
|
||||
|
||||
|
||||
if (search(8,animation)) {
|
||||
translate([longueur/2,largeur-y312-10-spacer104,zPlateau / 2]) rotate([90,0,0]) laser103();
|
||||
|
||||
for (x=[21,-21]) {
|
||||
translate([longueur/2+x,largeur-y312-10,zPlateau / 2]) rotate([90,0,0]) rondelle(4,8,spacer104);
|
||||
translate([longueur/2+x,largeur-y312-10-4-spacer104,zPlateau / 2]) rotate([90,0,0]) screwNut(4,30,24+spacer104);
|
||||
}
|
||||
}
|
||||
if (search(9,animation)) {
|
||||
translate([longueur-26,largeur-y312-10,zPlateau / 2+10]) rotate([0,180,0]) tube312();
|
||||
}
|
||||
|
||||
if (search(10,animation)) {
|
||||
translate([longueur-xCouteauInferieur+32,largeur-y312-10,zPlateau / 2 - 10 -2]) rotate([0,0,90]) laser215();
|
||||
translate([longueur-xCouteauInferieur+32,largeur-y312-10,zPlateau / 2 + 10]) rotate([0,0,90]) laser215();
|
||||
}
|
||||
|
||||
if (search(11,animation)) {
|
||||
translate([longueur-xCouteauInferieur+32-10,largeur-y312,zPlateau / 2 +12]) rotate([0,0,0]) screwNut(4,30,24);
|
||||
translate([longueur-xCouteauInferieur+32-30,largeur-y312,zPlateau / 2 +12]) rotate([0,0,0]) screwNut(4,30,24);
|
||||
translate([longueur-xCouteauInferieur+32-90,largeur-y312,zPlateau / 2 +12]) rotate([0,0,0]) screwNut(4,30,24);
|
||||
translate([longueur-xCouteauInferieur+32-10,largeur-y312+40,zPlateau / 2 +12]) rotate([0,0,0]) screwNut(4,30,24);
|
||||
}
|
||||
|
||||
if (search(12,animation)) {
|
||||
translate([longueur-16, 12, zPlateau/2+12]) screwNut(4,30,24);
|
||||
translate([longueur-16, largeur-12, zPlateau/2+12]) screwNut(4,30,24);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//assemblageTriangle1();
|
||||
|
||||
//assemblageTriangle2([0,1,2,3,4,5,6,7,9,10,11,12,14]);
|
||||
|
||||
//4
|
||||
|
||||
module assemblageTriangle2(animation=[0,19,2,3,4,5,6,7,8,9,10,11,12,13,14]) {
|
||||
zTubeCarre = zPlateau / 2 - 10;
|
||||
|
||||
//if (search(0,animation)) {
|
||||
//contre couteaux
|
||||
translate([xCouteauInferieur,epaisseurTole,zPlateau/2]) assemblageContreCouteau(0,animation);
|
||||
translate([xCouteauInferieur,largeur-epaisseurTole,zPlateau/2]) assemblageContreCouteau(1,animation);
|
||||
//}
|
||||
|
||||
if (search(3,animation)) {
|
||||
translate([xCouteauInferieur-12,0,zTubeCarre]) rotate([0,0,90]) tube313();
|
||||
}
|
||||
|
||||
if (search(4,animation)) {
|
||||
translate([xAppuiLong,y314+10,zTubeCarre+10]) rotate([90,0,90]) laser209();
|
||||
translate([xAppuiLong,y314+10,zTubeCarre+10]) rotate([0,0,90]) laser208();
|
||||
|
||||
for (x=[10,-10])
|
||||
translate([xAppuiLong+x,y314-10,zTubeCarre+11]) rotate([90,0,0]) screwNut(4,25,22);
|
||||
}
|
||||
|
||||
if (search(5,animation)) {
|
||||
translate([26,y314-10,zPlateau / 2-10]) tube314();
|
||||
}
|
||||
|
||||
|
||||
if (search(6,animation)) {
|
||||
translate([6,y314+10,zPlateau / 2 + 10]) rotate([0,0,-90]) laser215();
|
||||
translate([6,y314+10,zPlateau / 2 - 10-2]) rotate([0,0,-90]) laser215();
|
||||
}
|
||||
|
||||
if (search(7,animation)) {
|
||||
translate([6+10,y314,zPlateau / 2 +12]) rotate([0,0,0]) screwNut(4,30,24);
|
||||
translate([6+30,y314,zPlateau / 2 +12]) rotate([0,0,0]) screwNut(4,30,24);
|
||||
translate([6+90,y314,zPlateau / 2 +12]) rotate([0,0,0]) screwNut(4,30,24);
|
||||
translate([6+10,y314-40,zPlateau / 2 +12]) rotate([0,0,0]) screwNut(4,30,24);
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (search(8,animation)) {
|
||||
|
||||
translate([longueur/2,y314-10-spacer104,zPlateau / 2]) rotate([90,0,0]) laser104();
|
||||
|
||||
for (x=[8,-8]) {
|
||||
translate([longueur/2+x,y314-10,zPlateau / 2-4]) rotate([90,0,0]) rondelle(4,8,spacer104);
|
||||
translate([longueur/2+x,y314-10-4-spacer104,zPlateau / 2-4]) rotate([90,0,0]) screwNut(4,30,24+spacer104);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (search(9,animation)) {
|
||||
|
||||
translate([xAppuiLong,largeur-y314-10,zTubeCarre+10]) rotate([90,0,-90]) laser209();
|
||||
translate([xAppuiLong,largeur-y314-10,zTubeCarre+10]) rotate([0,0,-90]) laser208();
|
||||
|
||||
for (x=[10,-10])
|
||||
translate([xAppuiLong+x,largeur-y314+10,zTubeCarre+11]) rotate([-90,0,0]) screwNut(4,25,22);
|
||||
}
|
||||
|
||||
if (search(10,animation)) {
|
||||
|
||||
translate([26,largeur-y314-10,zPlateau / 2-10]) tube314();
|
||||
}
|
||||
|
||||
|
||||
if (search(11,animation)) {
|
||||
translate([6,largeur-y314-10,zPlateau / 2 + 10+2]) rotate([180,0,90]) laser215();
|
||||
translate([6,largeur-y314-10,zPlateau / 2 - 10]) rotate([180,0,90]) laser215();
|
||||
}
|
||||
|
||||
if (search(12,animation)) {
|
||||
translate([6+10,largeur-y314,zPlateau / 2 +12]) rotate([0,0,0]) screwNut(4,30,24);
|
||||
translate([6+30,largeur-y314,zPlateau / 2 +12]) rotate([0,0,0]) screwNut(4,30,24);
|
||||
translate([6+90,largeur-y314,zPlateau / 2 +12]) rotate([0,0,0]) screwNut(4,30,24);
|
||||
translate([6+10,largeur-y314+40,zPlateau / 2 +12]) rotate([0,0,0]) screwNut(4,30,24);
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (search(13,animation)) {
|
||||
translate([longueur/2,largeur-y314+10+spacer104+epaisseurCouteau,zPlateau / 2]) rotate([90,0,0]) laser104();
|
||||
|
||||
for (x=[8,-8]) {
|
||||
translate([longueur/2+x,largeur-y314+10,zPlateau / 2-4]) rotate([-90,0,0]) rondelle(4,8,spacer104);
|
||||
translate([longueur/2+x,largeur-y314+10+4+spacer104,zPlateau / 2-4]) rotate([-90,0,0]) screwNut(4,30,24+spacer104);
|
||||
}
|
||||
}
|
||||
|
||||
if (search(14,animation)) {
|
||||
translate([16, largeur-12, zPlateau/2+12]) screwNut(4,30,24);
|
||||
translate([16, 12, zPlateau/2+12]) screwNut(4,30,24);
|
||||
}
|
||||
|
||||
|
||||
//Exploded views
|
||||
if (search(50,animation)) {
|
||||
translate([xAppuiLong,y314+10,zTubeCarre+10]) rotate([90,0,90]) laser209();
|
||||
translate([xAppuiLong,y314+10,zTubeCarre+10]) rotate([0,0,90]) laser208();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
module serflex213() {
|
||||
r1 = 19/2;
|
||||
r1ext = r1+1;
|
||||
|
||||
r2 = 2;
|
||||
r2ext = r2+1;
|
||||
h = r1-r2+1;
|
||||
|
||||
translate([0,0,-1.5]) {
|
||||
difference() {
|
||||
union() {
|
||||
cylinder(r=r1ext,h=3);
|
||||
translate([-r1ext+r2ext,h,0]) cylinder(r=r2ext,h=3);
|
||||
translate([-r1ext,0,0]) cube([r1ext*2,h,3]);
|
||||
translate([-r1ext+r2ext,h,0]) cube([r1ext*2-r2ext,r2ext,3]);
|
||||
}
|
||||
|
||||
|
||||
translate([0,0,-1]) cylinder(r=r1,h=5);
|
||||
translate([-r1+r2,h,-1]) cylinder(r=r2,h=5);
|
||||
translate([-r1,0,-1]) cube([r1*2,h,5]);
|
||||
translate([-r1+r2,h-1,-1]) cube([2*r1-r2,r2+1,5]);
|
||||
|
||||
}
|
||||
translate([r1,h+r2-1,-1]) cube([3,3,5]);
|
||||
translate([r1,h+r2,0]) cube([5,1,3]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
module serflex625zz() {
|
||||
|
||||
linear_extrude(5) {
|
||||
difference() {
|
||||
offset(delta=1) hull() {
|
||||
translate([0,0]) circle(d=16);
|
||||
for (xz=[[0,0+8+1.5],
|
||||
[0-sqrt(pow(9.5,2)-pow((zMotor-3.5),2)),-zMotor+3.5],
|
||||
[0+sqrt(pow(9.5,2)-pow((zMotor-3.5),2)),-zMotor+3.5]]) {
|
||||
translate(xz) circle(d=3,$fn=32);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
hull() {
|
||||
translate([0,0]) circle(d=16);
|
||||
for (xz=[[0,0+8+1.5],
|
||||
[0-sqrt(pow(9.5,2)-pow((zMotor-3.5),2)),3.5-zMotor],
|
||||
[0+sqrt(pow(9.5,2)-pow((zMotor-3.5),2)),3.5-zMotor]]) {
|
||||
translate(xz) circle(d=3,$fn=32);
|
||||
}
|
||||
}
|
||||
|
||||
//#translate([5.8,6.8]) rotate(43) square([4,4]);
|
||||
}
|
||||
translate([3.4,8.5]) square([4.5,1]);
|
||||
}
|
||||
translate([4,7.5,-1]) cube([3,3,7]);
|
||||
}
|
||||
|
||||
|
||||
module serflex216_0() {
|
||||
projection()
|
||||
intersection() {
|
||||
rotate([-90,0,0]) translate([0,1,0]) {
|
||||
translate([1,3.5,0-19.3]) rotate([0,0,-90]) endstop();
|
||||
translate([5,-5,0+7]) rotate([-90,0,180]) laser216();
|
||||
translate([0,0,0]) rotate([-90,30,0]) motorPulley();
|
||||
}
|
||||
translate([-50,-50,0]) cube([100,100,1]);
|
||||
}
|
||||
}
|
||||
|
||||
module serflex216() {
|
||||
linear_extrude(4)
|
||||
difference() {
|
||||
offset(1) hull() serflex216_0();
|
||||
hull() serflex216_0();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//serflex216() ;
|
||||
|
||||
//assemblageGlobal();
|
||||
//assemblageTriangle2([0,1]);
|
||||
|
||||
/*a = [1,2,3];
|
||||
function add(v, i = 0, r = 0, lim) = (i < lim) ? add(v, i + 1, r + v[i]) : r;
|
||||
output = add(a,0,0,3);
|
||||
|
||||
echo(output);*/
|
||||
|
||||
module assemblageGlobal(animation=64) {
|
||||
numSteps = [12,17,15,13,7];
|
||||
numStepsCumul = [12,29,44,57,64];
|
||||
|
||||
|
||||
if (animation >= 0) {
|
||||
for (i=[0:min(animation,numStepsCumul[0]-1)])
|
||||
cadreInf([i]);
|
||||
}
|
||||
|
||||
|
||||
if (animation >= numStepsCumul[0]) {
|
||||
for (i=[0:min(animation,numStepsCumul[1]-1)-numStepsCumul[0]])
|
||||
brasSecondaire([i]);
|
||||
}
|
||||
|
||||
if (animation >= numStepsCumul[1]) {
|
||||
for (i=[0:min(animation,numStepsCumul[2]-1)-numStepsCumul[1]])
|
||||
assemblageTriangle2([i]);
|
||||
}
|
||||
|
||||
if (animation >= numStepsCumul[2]) {
|
||||
for (i=[0:min(animation,numStepsCumul[3]-1)-numStepsCumul[2]])
|
||||
assemblageTriangle1([i]);
|
||||
}
|
||||
|
||||
if (animation >= numStepsCumul[3]) {
|
||||
for (i=[0:animation-numStepsCumul[3]])
|
||||
cadreSup([i]);
|
||||
}
|
||||
}
|
||||
//cadreSup();
|
||||
|
||||
/*
|
||||
cadreInf();
|
||||
brasSecondaire();
|
||||
#cube([60,300,100]);
|
||||
*/
|
||||
|
||||
BIN
assembly_manual.pdf
Normal file
BIN
assembly_manual.pdf
Normal file
Binary file not shown.
25
balance_v4.8.scad
Normal file
25
balance_v4.8.scad
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
include <parameters.scad>;
|
||||
include <standardParts.scad>;
|
||||
include <functions.scad>;
|
||||
include <customParts.scad>;
|
||||
include <assembly.scad>;
|
||||
//incl
|
||||
|
||||
|
||||
//percage100x();
|
||||
//percage101x();
|
||||
//percage102x();ude <views.scad>;
|
||||
|
||||
|
||||
|
||||
|
||||
assemblageGlobal();
|
||||
|
||||
|
||||
//brasSecondaire();
|
||||
//percage1024();
|
||||
//cadreInf();
|
||||
|
||||
//dxf20alu();
|
||||
|
||||
|
||||
293
cncDrill.scad
Normal file
293
cncDrill.scad
Normal file
|
|
@ -0,0 +1,293 @@
|
|||
include <customParts.scad>
|
||||
|
||||
|
||||
/////////////////////////////////////////////////
|
||||
///// Perçages CNC /////
|
||||
/////////////////////////////////////////////////
|
||||
module baseCNC() {
|
||||
color("red",0.3) render(convexity=2) translate([0,0,-20]) tubeCarre(20,220,2);
|
||||
//cube([220,20,20]);
|
||||
#translate([-2,-5,-20]) cube([2,30,25]);
|
||||
}
|
||||
|
||||
module trou(x,y) {
|
||||
//color("blue")
|
||||
#translate([x,y,-20]) cylinder(r=2,h=30);
|
||||
echo(str("G0 X" , x, " Y",y));
|
||||
}
|
||||
|
||||
module percage1001() {
|
||||
echo(";1001, sur les pièces 301 et 302");
|
||||
baseCNC();
|
||||
render() translate([500,-2,2]) rotate([0,180,0]) profile301();
|
||||
trou(26,8);
|
||||
trou(48,8);
|
||||
}
|
||||
|
||||
module percage1002() {
|
||||
echo(";1002, sur les pièces 301 et 302");
|
||||
baseCNC();
|
||||
render() translate([0,22,2]) rotate([180,0,0]) profile301();
|
||||
trou(26,12);
|
||||
trou(48,12);
|
||||
}
|
||||
|
||||
module percage1003() {
|
||||
echo(";1003, uniquement sur les pièces 301 (et pas 302)");
|
||||
baseCNC();
|
||||
//translate([0,-2,2]) rotate([-90,0,0]) cadre();
|
||||
render() translate([0,-2,2]) rotate([-90,0,0]) profile301();
|
||||
trou(38,10);
|
||||
trou(58,10);
|
||||
}
|
||||
|
||||
module percage1003bis() {
|
||||
baseCNC();
|
||||
//translate([0,-2,2]) rotate([-90,0,0]) cadre();
|
||||
render() translate([500,22,2]) rotate([90,180,0]) profile301();
|
||||
trou(38,10);
|
||||
trou(58,10);
|
||||
}
|
||||
|
||||
module percage1004() {
|
||||
echo(";1004, sur pièce 303");
|
||||
baseCNC();
|
||||
//translate([0,-2,2]) rotate([-90,0,0]) cadre();
|
||||
//render()
|
||||
//translate([0,22,2]) rotate([180,0,0]) profile303();
|
||||
render() translate([496,-2,2]) rotate([180,0,180]) profile303();
|
||||
trou(10,10);
|
||||
}
|
||||
|
||||
module percage1004bis() {
|
||||
baseCNC();
|
||||
render() translate([0,22,2]) rotate([180,0,0]) profile303();
|
||||
trou(10,10);
|
||||
}
|
||||
|
||||
|
||||
|
||||
module percage1005() {
|
||||
echo(";1005, sur pièce 303");
|
||||
baseCNC();
|
||||
//translate([0,-2,2]) rotate([-90,0,0]) cadre();
|
||||
//render()
|
||||
//translate([0,22,2]) rotate([180,0,0]) profile303();
|
||||
render() translate([496,22,2]) rotate([-90,0,180]) profile303();
|
||||
|
||||
trou(498-xBrasSecondaire2-8,10);
|
||||
trou(498-xBrasSecondaire2+8,10);
|
||||
}
|
||||
|
||||
|
||||
module percage1005bis() {
|
||||
baseCNC();
|
||||
//translate([0,-2,2]) rotate([-90,0,0]) cadre();
|
||||
//render()
|
||||
//translate([0,22,2]) rotate([180,0,0]) profile303();
|
||||
render() translate([0,-2,2]) rotate([-90,0,0]) profile307();
|
||||
|
||||
trou(498-xBrasSecondaire2-8,10);
|
||||
trou(498-xBrasSecondaire2+8,10);
|
||||
}
|
||||
|
||||
|
||||
module percage1006() {
|
||||
echo(";1006, sur pièce 302");
|
||||
baseCNC();
|
||||
|
||||
render() translate([430,-2,2]) rotate([0,180,0]) profile302();
|
||||
trou(174,10);
|
||||
}
|
||||
|
||||
module percage1006bis() {
|
||||
baseCNC();
|
||||
|
||||
render() translate([0,22,2]) rotate([0,180,180]) profile302();
|
||||
trou(174,10);
|
||||
}
|
||||
|
||||
|
||||
|
||||
module percage1007() {
|
||||
baseCNC();
|
||||
//translate([0,-2,2]) rotate([-90,0,0]) cadre();
|
||||
render() translate([0,-2,2]) rotate([-90,0,0]) profile303();
|
||||
|
||||
trou(58,9);
|
||||
}
|
||||
|
||||
|
||||
|
||||
module percage1010() {
|
||||
echo(";1010, sur pièce 312");
|
||||
baseCNC();
|
||||
render() translate([0,0,-35]) rotate([90,0,0]) tube312();
|
||||
trou(11,-10);
|
||||
trou(41,-10);
|
||||
trou(71,-10);
|
||||
}
|
||||
|
||||
module percage1011() {
|
||||
echo(";1011, sur pièce 312");
|
||||
x1 = l312 - (longueur/2 - 26) + 21;
|
||||
x2 = l312 - (longueur/2 - 26) - 21;
|
||||
baseCNC();
|
||||
|
||||
render() translate([l312,-20,-35]) rotate([90,0,180]) tube312();
|
||||
|
||||
trou(x1,-10);
|
||||
trou(x2,-10);
|
||||
|
||||
}
|
||||
|
||||
module percage1012() {
|
||||
echo(";1012, sur pièce 314");
|
||||
baseCNC();
|
||||
|
||||
render() translate([l314,-20,-35]) rotate([90,0,180]) tube314();
|
||||
|
||||
trou(13,-9);
|
||||
trou(33,-9);
|
||||
}
|
||||
|
||||
module percage1013() {
|
||||
echo(";1013, sur pièce 314");
|
||||
baseCNC();
|
||||
|
||||
render() translate([l314,0,-15]) rotate([-90,0,180]) tube314();
|
||||
//render() translate([0,-20,-35]) tubeCarre(20,370,2);
|
||||
|
||||
// pour visu, à ne pas mettre en gcode
|
||||
trou(138,-6);
|
||||
trou(154,-6);
|
||||
|
||||
|
||||
trou(13,-11);
|
||||
trou(33,-11);
|
||||
}
|
||||
|
||||
|
||||
module percage1015() {
|
||||
echo(";1015, sur pièce 311");
|
||||
baseCNC();
|
||||
|
||||
render() translate([0,-20,-35]) tube311();
|
||||
trou(12,-10);
|
||||
trou(y312,-10);
|
||||
}
|
||||
|
||||
|
||||
module percage1016() {
|
||||
echo(";1016, sur pièce 313");
|
||||
baseCNC();
|
||||
|
||||
render() translate([0,-20,-35]) tube313();
|
||||
trou(12,-10);
|
||||
trou(y314,-10);
|
||||
}
|
||||
|
||||
module percage1017() {
|
||||
echo(";1017, sur pièce 311 et 313");
|
||||
baseCNC();
|
||||
|
||||
render() translate([largeur,-0,-35]) rotate([0,0,180]) tube311();
|
||||
trou(12,-10);
|
||||
}
|
||||
|
||||
|
||||
module percage1020() {
|
||||
echo(";1020, sur pièce 305");
|
||||
baseCNC();
|
||||
|
||||
translate([0,-2,-28]) profile305();
|
||||
trou(7,12);
|
||||
}
|
||||
|
||||
module percage1021() {
|
||||
echo(";1021, sur pièce 305");
|
||||
baseCNC();
|
||||
|
||||
translate([lBrasSecondaire,22,-28]) rotate([0,0,180]) profile305();
|
||||
trou(7,8);
|
||||
}
|
||||
|
||||
module percage1022() {
|
||||
echo(";1022, sur pièce 306");
|
||||
baseCNC();
|
||||
|
||||
translate([lBrasSecondaire,28,2]) rotate([-90,0,180]) profile306();
|
||||
|
||||
|
||||
//9 , 21
|
||||
trou(lBrasSecondaire-xPulley,28-zMotor);
|
||||
}
|
||||
|
||||
module percage1023() {
|
||||
echo(";1023, sur pièce 306");
|
||||
xt = 35 / 2;
|
||||
yt = 8;
|
||||
xt1 = xt * cos(30) - yt * sin(30);
|
||||
yt1 = xt * sin(30) + yt * cos(30);
|
||||
xt2 = -xt * cos(30) - yt * sin(30);
|
||||
yt2 = -xt * sin(30) + yt * cos(30);
|
||||
|
||||
baseCNC();
|
||||
|
||||
translate([0,-8,2]) rotate([-90,0,0]) profile306();
|
||||
|
||||
trou(xMotor,-8+zMotor);
|
||||
trou(xMotor-xt1,-8+zMotor+yt1);
|
||||
trou(xMotor-xt2,-8+zMotor+yt2);
|
||||
|
||||
trou(xCouteauIII-10,-8+zCouteauBrasSecondaire+17);
|
||||
trou(xCouteauIII+10,-8+zCouteauBrasSecondaire+17);
|
||||
}
|
||||
|
||||
module percage1024() {
|
||||
echo(";1024, sur pièce 305");
|
||||
baseCNC();
|
||||
|
||||
translate([lBrasSecondaire,28,2]) rotate([-90,0,180]) profile305();
|
||||
|
||||
trou(xCouteauIII-20,28-zCouteauBrasSecondaire-13);
|
||||
trou(xCouteauIII+10,28-zCouteauBrasSecondaire-13);
|
||||
}
|
||||
|
||||
module percage100x() {
|
||||
s = -50;
|
||||
percage1001();
|
||||
translate([0,1*s,0]) percage1002();
|
||||
translate([0,2*s,0]) percage1003();
|
||||
translate([0,3*s,0]) percage1003bis();
|
||||
translate([0,4*s,0]) percage1004();
|
||||
translate([0,5*s,0]) percage1004bis();
|
||||
translate([0,6*s,0]) percage1005();
|
||||
translate([0,7*s,0]) percage1005bis();
|
||||
translate([0,8*s,0]) percage1006();
|
||||
translate([0,9*s,0]) percage1006bis();
|
||||
translate([0,10*s,0]) percage1007();
|
||||
}
|
||||
|
||||
|
||||
module percage101x() {
|
||||
s = -70;
|
||||
translate([0,0*s,0]) percage1010();
|
||||
translate([0,1*s,0]) percage1011();
|
||||
translate([0,2*s,0]) percage1012();
|
||||
translate([0,3*s,0]) percage1013();
|
||||
translate([0,4*s,0]) percage1015();
|
||||
translate([0,5*s,0]) percage1016();
|
||||
translate([0,6*s,0]) percage1017();
|
||||
}
|
||||
|
||||
module percage102x() {
|
||||
s = -70;
|
||||
translate([0,0*s,0]) percage1020();
|
||||
translate([0,1*s,0]) percage1021();
|
||||
translate([0,2*s,0]) percage1022();
|
||||
translate([0,3*s,0]) percage1023();
|
||||
translate([0,4*s,0]) percage1024();
|
||||
}
|
||||
|
||||
percage101x();
|
||||
980
customParts.scad
Normal file
980
customParts.scad
Normal file
|
|
@ -0,0 +1,980 @@
|
|||
include <parameters.scad>
|
||||
include <functions.scad>
|
||||
include <standardParts.scad>
|
||||
|
||||
/////////////////////////////////////////////////
|
||||
///// Pièces unitaires /////
|
||||
/////////////////////////////////////////////////
|
||||
module laser206() {
|
||||
color(color200)
|
||||
translate([2,2,2])
|
||||
difference() {
|
||||
cube([62,62,2]);
|
||||
translate([62,18,0]) rotate([0,0,-45]) translate([-80,0,-1]) cube([90,90,4]);
|
||||
translate([24,8,-1]) cylinder(d=drillM4, h=4, $fn=fnCylindre);
|
||||
translate([46,8,-1]) cylinder(d=drillM4, h=4, $fn=fnCylindre);
|
||||
translate([8,24,-1]) cylinder(d=drillM4, h=4, $fn=fnCylindre);
|
||||
translate([8,46,-1]) cylinder(d=drillM4, h=4, $fn=fnCylindre);
|
||||
|
||||
translate([28,28,-1]) cylinder(d=drillM8, h=4, $fn=fnCylindre);
|
||||
}
|
||||
echo(str("206"));
|
||||
}
|
||||
|
||||
|
||||
correctionHauteurImpression = pourImpression3D ? 1 : 0;
|
||||
|
||||
module laser101() {
|
||||
marge = 6;
|
||||
hTrou = 5;
|
||||
lTrou = 4;
|
||||
largeurCouteau = 12;
|
||||
longueurCouteau = offsetCouteau + 2 * marge;
|
||||
|
||||
|
||||
hauteurBaseCouteau = lIntCornierCadre - epaisseurTole;
|
||||
color(color100)
|
||||
render(0)
|
||||
translate([-marge,0,0]) difference() {
|
||||
union() {
|
||||
cube([longueurCouteau,hauteurBaseCouteau,epaisseurCouteau]);
|
||||
translate([marge,hauteurBaseCouteau+hauteurCouteau-largeurCouteau+correctionHauteurImpression,0]) toleTriangulaire(largeurCouteau,largeurCouteau,epaisseurCouteau);
|
||||
translate([marge-largeurCouteau/2,hauteurBaseCouteau,0]) cube([largeurCouteau,hauteurCouteau-largeurCouteau+correctionHauteurImpression,epaisseurCouteau]);
|
||||
//translate([marge,hauteurCadre,0]) cube([offsetCouteau/2+5,hTrou+2,epaisseurTole]);
|
||||
}
|
||||
|
||||
translate([marge,hauteurBaseCouteau/2,-1]) cylinder(epaisseurCouteau+2,d=diametreRivet, $fn=fnCylindre);
|
||||
translate([longueurCouteau-marge,hauteurBaseCouteau/2,-1]) cylinder(epaisseurCouteau+2,d=diametreRivet, $fn=fnCylindre);
|
||||
|
||||
|
||||
//translate([longueurCouteau/2-lTrou/2,hauteurCadre,-1]) cube([lTrou,hTrou,epaisseurTole+2]);
|
||||
translate([marge-2,hauteurBaseCouteau+hauteurCouteau-15,-1]) cube([lTrou,hTrou,epaisseurCouteau+2]);
|
||||
}
|
||||
echo(str("101"));
|
||||
}
|
||||
|
||||
|
||||
module laser102() {
|
||||
marge = 6;
|
||||
hTrou = 5;
|
||||
lTrou = 4;
|
||||
largeurCouteau = 12;
|
||||
longueurCouteau = offsetCouteau + 2 * marge;
|
||||
hauteurBaseCouteau = lIntCornierCadre - epaisseurTole;
|
||||
color(color100)
|
||||
render(0)
|
||||
translate([-marge,0,0]) difference() {
|
||||
union() {
|
||||
translate([0,2,0]) cube([largeurCouteau,hauteurBaseCouteau-2,epaisseurCouteau]);
|
||||
translate([marge,hauteurBaseCouteau+hauteurCouteau-largeurCouteau+correctionHauteurImpression,0]) toleTriangulaire(largeurCouteau,largeurCouteau,epaisseurCouteau);
|
||||
translate([marge-largeurCouteau/2,hauteurBaseCouteau,0]) cube([largeurCouteau,hauteurCouteau-largeurCouteau+correctionHauteurImpression,epaisseurCouteau]);
|
||||
//translate([marge,hauteurCadre,0]) cube([offsetCouteau/2+5,hTrou+2,epaisseurTole]);
|
||||
}
|
||||
translate([marge,hauteurBaseCouteau/2,-1]) cylinder(epaisseurCouteau+2,d=diametreRivet, $fn=fnCylindre);
|
||||
|
||||
translate([marge-2,hauteurBaseCouteau+hauteurCouteau-15,-1]) cube([lTrou,hTrou,epaisseurCouteau+2]);
|
||||
}
|
||||
echo(str("102"));
|
||||
}
|
||||
|
||||
|
||||
module laser207() {
|
||||
l = 28;
|
||||
hCorps = 12;
|
||||
h = hCorps + epaisseurCouteau;
|
||||
zm = -epaisseurTole/2-1;
|
||||
|
||||
color(color200)
|
||||
render(0) difference() {
|
||||
translate([-14,-hCorps,-epaisseurTole/2]) cube([l,h,epaisseurTole]); //tole de base
|
||||
translate([-11,0,zm]) cube([l - 3 - 2,h - 2,epaisseurTole+2]); //décroché
|
||||
//translate([14-2,0,zm]) cube([3,epaisseurCouteau+1,epaisseurTole+2]); // coin gauche
|
||||
translate([-11,-1,zm]) cube([7,2,epaisseurTole+2]); //decroché2
|
||||
translate([-15,3.5,zm]) cube([7,2,epaisseurTole+2]); // on enlève 5/10 pour ne pas avoir de frotement sur le montage bras secondaire
|
||||
intersection() { //décrohé biais
|
||||
translate([-5,-1,zm]) cube([7,2,epaisseurTole+2]);
|
||||
translate([0,0,zm]) rotate([0,0,20]) translate([-7,0,0]) cube([8,2,epaisseurTole+2]);
|
||||
}
|
||||
|
||||
translate([4,-hCorps+4,zm]) cube([4,9,epaisseurTole+2]); // trou boulon
|
||||
translate([6-7/2,-hCorps+7,zm]) cube([7,3.4,epaisseurTole+2]); // emplacement écrou
|
||||
}
|
||||
echo(str("207"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
module laser106() {
|
||||
l = 64;
|
||||
h = 28 ;
|
||||
hauteurTriangle = h/2+1;
|
||||
baseTriangle = hauteurTriangle * 4;
|
||||
|
||||
color(color100)
|
||||
render(0)
|
||||
difference() {
|
||||
//tole de base
|
||||
cube([l,h,epaisseurCouteau]);
|
||||
|
||||
|
||||
//premier emplacement contre couteau
|
||||
intersection() {
|
||||
translate([36,-1,-1]) rotate([0,0,0]) toleTriangulaire(baseTriangle,hauteurTriangle,epaisseurCouteau+2);
|
||||
translate([28,-1,-1]) cube([16,h/2+1,epaisseurCouteau+2]);
|
||||
}
|
||||
|
||||
//second emplacement contre couteau
|
||||
intersection() {
|
||||
translate([56,h/2+hauteurTriangle,-1]) rotate([0,0,180]) toleTriangulaire(baseTriangle,hauteurTriangle,epaisseurCouteau+2);
|
||||
translate([48,h/2,-1]) cube([17,h/2+1,epaisseurCouteau+2]);
|
||||
}
|
||||
|
||||
//Trou carré pour le tube
|
||||
|
||||
translate([4-laserSlack/2,4-laserSlack/2,-1]) cube([20+laserSlack,20+laserSlack,epaisseurCouteau+2]);
|
||||
|
||||
translate([4+epaisseurTole,4-epaisseurTole-laserSlack,-1]) cube([20-2*epaisseurTole,20+2*epaisseurTole + 2 * laserSlack,epaisseurCouteau+2]);
|
||||
|
||||
//Trous pour les tôles de centrage
|
||||
translate([36,h/2+4+2,-1]) cylinder(d=drillM4,h=epaisseurCouteau+2, $fn=fnCylindre);
|
||||
translate([56,h/2-4-2,-1]) cylinder(d=drillM4,h=epaisseurCouteau+2, $fn=fnCylindre);
|
||||
|
||||
translate([36-epaisseurTole/2,h/2+12-laserSlack,-1]) cube([epaisseurTole,2+1,epaisseurCouteau+2]);
|
||||
translate([56-epaisseurTole/2,-1+laserSlack,-1]) cube([epaisseurTole,2+1, epaisseurCouteau+2]);
|
||||
}
|
||||
echo(str("106"));
|
||||
}
|
||||
|
||||
|
||||
module laser201() {
|
||||
color(color200)
|
||||
render(0)
|
||||
difference() {
|
||||
translate([-10,0,0]) cube([20,2+epaisseurCouteau+12,epaisseurTole]);
|
||||
translate([-11+laserSlack,epaisseurTole-laserSlack/2,-1]) cube([epaisseurTole+1,epaisseurCouteau+laserSlack,epaisseurTole+2]);
|
||||
translate([10-epaisseurTole-laserSlack,epaisseurTole-laserSlack/2,-1]) cube([epaisseurTole+1,epaisseurCouteau+laserSlack,epaisseurTole+2]);
|
||||
translate([0,2+epaisseurCouteau+6,-1]) cylinder(d=drillM4,h=epaisseurTole+2, $fn=fnCylindre);
|
||||
}
|
||||
echo(str("201"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
module laser103() {
|
||||
l = 54;
|
||||
lt = 30;
|
||||
color(color100)
|
||||
render(0)
|
||||
difference() {
|
||||
translate([-l/2,-14,0]) cube([l,24,epaisseurCouteau]);
|
||||
translate([-lt/2,-11,-1]) cube([lt,15,epaisseurCouteau+2]);
|
||||
translate([-lt/2,-12,-1]) cube([lt,16,epaisseurCouteau+2]);
|
||||
translate([-lt/2+4,-15,-1]) cube([lt-8,4,epaisseurCouteau+2]);
|
||||
|
||||
translate([-21,0,-1]) cylinder(d=drillM4,h=epaisseurCouteau+2, $fn=fnCylindre);//oblong(4,2,6);
|
||||
translate([21,0,-1]) cylinder(d=drillM4,h=epaisseurCouteau+2, $fn=fnCylindre);//oblong(4,2,6);
|
||||
}
|
||||
|
||||
translate([0,7,0]) rotate([0,0,180]) toleTriangulaire(7,7,epaisseurCouteau);
|
||||
echo(str("103"));
|
||||
}
|
||||
|
||||
|
||||
module laser104() {
|
||||
l = 26;
|
||||
h = 12;
|
||||
|
||||
color(color100)
|
||||
render(0)
|
||||
difference() {
|
||||
|
||||
//tole de base
|
||||
translate([-l/2,-10,0]) cube([l,h,epaisseurCouteau]);
|
||||
|
||||
//Trou carré pour le tube
|
||||
translate([-5,0,-1]) cube([10,3,epaisseurCouteau+2]);
|
||||
|
||||
//Trous
|
||||
translate([-8,-4,-1]) cylinder(d=drillM4,h=epaisseurCouteau+2, $fn=fnCylindre);
|
||||
translate([8,-4,-1]) cylinder(d=drillM4,h=epaisseurCouteau+2, $fn=fnCylindre);
|
||||
}
|
||||
echo(str("104"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
module laser209() {
|
||||
color(color200)
|
||||
render(0)
|
||||
translate([-3,-13,-epaisseurTole/2]) difference() {
|
||||
cube([28,26,epaisseurTole]);
|
||||
translate([-1,3-laserSlack/2,-1]) cube([4,20+laserSlack,epaisseurTole+2]);
|
||||
intersection() {
|
||||
translate([29,14,-1]) rotate([0,0,-45]) translate([-35,0,0]) cube([40,20,epaisseurTole+2]);
|
||||
translate([0,17,-1]) cube([50,20,epaisseurTole+2]);
|
||||
}
|
||||
translate([11-laserSlack,13,-1]) cube([20,epaisseurTole,epaisseurTole+2]);
|
||||
|
||||
//#intersection() {
|
||||
translate([24,11,-1]) rotate([0,0,45]) translate([-40,-20,0]) cube([40,20,epaisseurTole+2]);
|
||||
translate([24,13,-1]) rotate([0,0,-20]) translate([0,-20,0]) cube([40,20,epaisseurTole+2]);
|
||||
//translate([0,-1,-1]) cube([50,15,epaisseurTole+2]);
|
||||
translate([24,13,-1]) rotate([0,0,0]) translate([0,-20,0]) cube([40,20,epaisseurTole+2]);
|
||||
//translate([0,-1,-1]) cube([50,15,epaisseurTole+2]);
|
||||
//}
|
||||
}
|
||||
echo(str("209"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
module laser208() {
|
||||
color(color200)
|
||||
translate([0,0,0]) difference() {
|
||||
translate([0,-16,0]) cube([25,32,epaisseurTole]);
|
||||
|
||||
for (z=[-10,10]) {
|
||||
translate([-1,z-4/2,-1]) cube([8,4,epaisseurTole+2]); // trou boulon
|
||||
translate([2,z-7/2-laserSlack/2,-1]) cube([3.4,7,epaisseurTole+2]); // emplacement écrou
|
||||
}
|
||||
|
||||
translate([-1+laserSlack,-epaisseurTole/2,-1]) cube([9+laserSlack,epaisseurTole,epaisseurTole+2]);
|
||||
|
||||
|
||||
translate([20,5,-1]) rotate([0,0,-45]) translate([-20,0,0]) cube([20,30,epaisseurTole+2]);
|
||||
translate([20,5,-1]) cube([20,12,epaisseurTole+2]);
|
||||
|
||||
translate([20,-5,-1]) rotate([0,0,45]) translate([-20,-30,0]) cube([20,30,epaisseurTole+2]);
|
||||
translate([20,-5-12,-1]) cube([20,12,epaisseurTole+2]);
|
||||
}
|
||||
echo(str("208"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
module laser107() {
|
||||
l = 32;
|
||||
h = 14;
|
||||
marge = 6;
|
||||
hTrou = 5;
|
||||
lTrou = 4;
|
||||
largeurCouteau = 10;
|
||||
longueurCouteau = offsetCouteau + 2 * marge;
|
||||
hauteurBaseCouteau = lIntCornierCadre - epaisseurTole;
|
||||
|
||||
color(color100)
|
||||
render(0)
|
||||
difference() {
|
||||
union() {
|
||||
translate ([-l/2,10,0]) cube([l,h,epaisseurCouteau]);
|
||||
translate([0,largeurCouteau,0]) rotate([0,0,180]) toleTriangulaire(largeurCouteau,largeurCouteau,epaisseurCouteau);
|
||||
}
|
||||
translate([-10,10+h/2,-1]) cylinder(epaisseurCouteau+2,d=diametreRivet, $fn=fnCylindre);
|
||||
translate([10,10+h/2,-1]) cylinder(epaisseurCouteau+2,d=diametreRivet, $fn=fnCylindre);
|
||||
|
||||
|
||||
//translate([longueurCouteau/2-lTrou/2,hauteurCadre,-1]) cube([lTrou,hTrou,epaisseurTole+2]);
|
||||
translate([-lTrou/2,10,-1]) cube([lTrou,hTrou,epaisseurCouteau+2]);
|
||||
}
|
||||
echo(str("107"));
|
||||
}
|
||||
|
||||
|
||||
module laser108() {
|
||||
l = 46;
|
||||
h = 29;
|
||||
marge = 6;
|
||||
hTrou = 5;
|
||||
lTrou = 4;
|
||||
largeurCouteau = 7;
|
||||
longueurCouteau = offsetCouteau + 2 * marge;
|
||||
hauteurBaseCouteau = lIntCornierCadre - epaisseurTole;
|
||||
|
||||
color(color100)
|
||||
render(0)
|
||||
difference() {
|
||||
translate ([-16,-10,0]) cube([l,h,epaisseurCouteau]);
|
||||
|
||||
translate ([-17,-11,-1]) cube([27,18,epaisseurCouteau+2]);
|
||||
translate ([20-16/2,-7,-1]) cube([16,14,epaisseurCouteau+2]);
|
||||
|
||||
translate([-10,13,-1]) cylinder(epaisseurCouteau+2,d=drillM4, $fn=fnCylindre);
|
||||
translate([20,13,-1]) cylinder(epaisseurCouteau+2,d=drillM4, $fn=fnCylindre);
|
||||
|
||||
|
||||
//translate([longueurCouteau/2-lTrou/2,hauteurCadre,-1]) cube([lTrou,hTrou,epaisseurTole+2]);
|
||||
translate([-lTrou/2,10,-1]) cube([lTrou,hTrou,epaisseurCouteau+2]); //trouCarre
|
||||
}
|
||||
color(color100) translate([0,largeurCouteau,0]) rotate([0,0,180]) toleTriangulaire(largeurCouteau,largeurCouteau,epaisseurCouteau);
|
||||
color(color100) translate([20,-largeurCouteau,0]) toleTriangulaire(largeurCouteau,largeurCouteau,epaisseurCouteau);
|
||||
echo(str("108"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
module laser105() {
|
||||
l = 26;
|
||||
h = zCouteau - 4 + 5;
|
||||
hauteurTriangle = h/2+1;
|
||||
baseTriangle = hauteurTriangle * 4;
|
||||
hauteurSousCouteau = zCouteau - 4;
|
||||
|
||||
color(color100)
|
||||
render(0)
|
||||
difference() {
|
||||
difference() {
|
||||
//tole de base
|
||||
translate([-l/2,-hauteurSousCouteau,0]) cube([l,h,epaisseurCouteau]);
|
||||
translate([7,-hauteurSousCouteau + 18,-1]) cube([10,30,epaisseurCouteau+2]);
|
||||
translate([-17,-hauteurSousCouteau + 18,-1]) cube([10,30,epaisseurCouteau+2]);
|
||||
|
||||
}
|
||||
|
||||
//premier emplacement contre couteau
|
||||
//intersection() {
|
||||
translate([0,hauteurTriangle,-1]) rotate([0,0,180]) toleTriangulaire(baseTriangle,hauteurTriangle,epaisseurCouteau+2);
|
||||
// translate([-8,0,-1]) cube([16,h/2+1,epaisseurCouteau+2]);
|
||||
//}
|
||||
|
||||
|
||||
//Trous pour les tôles de centrage
|
||||
translate([-epaisseurTole/2-laserSlack,-14-laserSlack,-1]) cube([epaisseurTole+2*laserSlack,2+2*laserSlack,epaisseurCouteau+2]);
|
||||
translate([-2,-17,-1]) cube([4,3,epaisseurCouteau+2]);
|
||||
translate([0,-4-2,-1]) cylinder(d=4,h=epaisseurCouteau+2, $fn=fnCylindre); //boulon
|
||||
|
||||
translate([-8,-hauteurSousCouteau+10,-1]) cylinder(d=drillM4,h=epaisseurCouteau+2, $fn=fnCylindre);
|
||||
translate([8,-hauteurSousCouteau+10,-1]) cylinder(d=drillM4,h=epaisseurCouteau+2, $fn=fnCylindre);
|
||||
|
||||
}
|
||||
echo(str("105"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
//!laser105();
|
||||
|
||||
module oblong(d,lLiberte,h) {
|
||||
color(color100)
|
||||
hull() {
|
||||
translate([-lLiberte/2,0,0]) cylinder(h,d=d, $fn=fnCylindre);
|
||||
translate([lLiberte/2,0,0]) cylinder(h,d=d, $fn=fnCylindre);
|
||||
}
|
||||
echo(str("oblong", d, h));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//!toleCentrageCouteau3();
|
||||
module drill205(h) {
|
||||
translate([35,10,-1]) cylinder(d=diametreRivet,h=h, $fn=fnCylindre);
|
||||
translate([65,10,-1]) cylinder(d=diametreRivet,h=h, $fn=fnCylindre);
|
||||
translate([95,10,-1]) cylinder(d=diametreRivet,h=h, $fn=fnCylindre);
|
||||
}
|
||||
|
||||
|
||||
module laser205() {
|
||||
l = 105;
|
||||
h = 28;
|
||||
hauteurTriangle = h/2+1;
|
||||
baseTriangle = hauteurTriangle * 4;
|
||||
|
||||
color(color200)
|
||||
render(0)
|
||||
difference() {
|
||||
//tole de base
|
||||
linear_extrude(epaisseurTole)
|
||||
difference() {
|
||||
hull() {
|
||||
translate([0,-4]) square([28,28]);
|
||||
translate([95,10]) circle(r=8);
|
||||
}
|
||||
|
||||
|
||||
translate([4-laserSlack,0-laserSlack]) square([20+2*laserSlack,20+2*laserSlack]);
|
||||
|
||||
//for (x=[4.4,23.6],y=[0.4,19.6])
|
||||
// translate([x,y]) circle(r=0.8, $fn=20);
|
||||
|
||||
|
||||
}
|
||||
drill205(epaisseurTole+2);
|
||||
|
||||
}
|
||||
echo(str("205"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
module laser202() {
|
||||
color(color200)
|
||||
render(0)
|
||||
difference() {
|
||||
cube([20,20,epaisseurTole]);
|
||||
translate([10,10,-1]) cylinder(d=diametreRivet,h=epaisseurTole+2, $fn=fnCylindre);
|
||||
}
|
||||
echo(str("202"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
module laser210() {
|
||||
wHole = sqrt(pow(19/2,2)-pow(7,2)) * 2;
|
||||
w = 46;
|
||||
l = 59;
|
||||
color(color200)
|
||||
render(0)
|
||||
linear_extrude(height=epaisseurTole) {
|
||||
difference() {
|
||||
|
||||
|
||||
translate([0,-w/2]) square([l,w]);
|
||||
|
||||
translate([2,-wHole/2]) square([55,wHole]);
|
||||
|
||||
for (x=[4.5,54.5],y=[-12,12])
|
||||
translate([x,y]) circle(d=drillM4,$fn=fnCylindre);
|
||||
|
||||
//for (x=[13,43],y=[-16,-12,10,14])
|
||||
for (x=[11,41],y=[-12.5,10])
|
||||
translate([x,y]) square([5,2.5]);
|
||||
|
||||
translate([l/2,12]) circle(d=3,$fn=fnCylindre);
|
||||
}
|
||||
|
||||
}
|
||||
echo(str("210"));
|
||||
}
|
||||
|
||||
|
||||
module laser213() {
|
||||
w = 46;
|
||||
l = 33;
|
||||
wHole = sqrt(pow(19/2,2)-pow(7,2)) * 2;
|
||||
|
||||
color(color200)
|
||||
render(0)
|
||||
linear_extrude(height=epaisseurTole) {
|
||||
difference() {
|
||||
|
||||
|
||||
translate([-l/2,-w/2]) square([l,w]);
|
||||
|
||||
translate([-l/2+2,-wHole/2]) square([29,wHole]);
|
||||
|
||||
for (x=[-l/2+4.5,-l/2+28.5],y=[-12,12])
|
||||
translate([x,y]) circle(d=drillM4,$fn=fnCylindre);
|
||||
|
||||
//for (x=[13,43],y=[-16,-12,10,14])
|
||||
//for (x=[-l/2+8,-l/2+20],y=[-12.5,10])
|
||||
for (x=[-6-2.5,6-2.5],y=[-12.5,10])
|
||||
translate([x,y]) square([5,2.5]);
|
||||
|
||||
translate([0,12]) circle(d=3.1,$fn=fnCylindre);
|
||||
}
|
||||
|
||||
}
|
||||
echo(str("213"));
|
||||
}
|
||||
|
||||
|
||||
module laser211() {
|
||||
color(color200)
|
||||
render(0)
|
||||
linear_extrude(height=epaisseurTole) {
|
||||
difference() {
|
||||
|
||||
translate([-4.5,-2.5]) square([9,11]);
|
||||
for (x=[-3.5:2:3.5])
|
||||
translate([x,2.5]) square([1,7]);
|
||||
translate([0,0]) circle(d=3.1,$fn=fnCylindre);
|
||||
}
|
||||
}
|
||||
echo(str("211"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
module laser212() {
|
||||
color(color200)
|
||||
render(0)
|
||||
linear_extrude(height=epaisseurTole) {
|
||||
difference() {
|
||||
translate([-4.5,-2.5]) square([9,11]);
|
||||
translate([0,0]) circle(d=3.1,$fn=fnCylindre);
|
||||
}
|
||||
}
|
||||
echo(str("212"));
|
||||
}
|
||||
|
||||
|
||||
//projection() laser203();
|
||||
module laser203() {
|
||||
hBase = 24.8;
|
||||
color(color200)
|
||||
render(0)
|
||||
difference() {
|
||||
union() {
|
||||
translate([-14,0]) cube([36,hBase, epaisseurTole]) ;
|
||||
translate([9.5-sqrt(1.25),hBase-1,0]) cube([sqrt(1.25)*2,7.2,epaisseurTole]); //ergot centrage
|
||||
|
||||
translate([15,0,0]) cube([7,70,2]);
|
||||
translate([-4,66,0]) cube([26,4,2]);
|
||||
}
|
||||
|
||||
translate([-9.5-(3+jeuPourImpression)/2,hBase-8,-1]) cube([3+jeuPourImpression,10,epaisseurTole+2]); // trou boulon
|
||||
translate([-9.5-(5.6+jeuPourImpression)/2,hBase-5,-1]) cube([5.5+jeuPourImpression,2.6+jeuPourImpression,epaisseurTole+2]); // emplacement écrou
|
||||
|
||||
|
||||
//fixation holes
|
||||
translate([-6.5,9,-1]) cylinder(d=drillM4,h=epaisseurTole+2, $fn=fnCylindre);
|
||||
translate([15.5,9,-1]) cylinder(d=drillM4,h=epaisseurTole+2, $fn=fnCylindre);
|
||||
}
|
||||
|
||||
if (pourImpression3D == 1) {
|
||||
translate([-13.5,hBase-9,0]) cube([30,18,0.2]);
|
||||
}
|
||||
echo(str("203"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
module laser252() {
|
||||
linear_extrude(height=1/*epaisseurTole*/) {
|
||||
difference() {
|
||||
union() {
|
||||
translate([0,-10-3]) square([12,28+3]);
|
||||
translate([-2,4-sqrt(4)-jeuPourImpression/2]) square([2,sqrt(4)*2-jeuPourImpression]);
|
||||
//translate([-3,-13]) square([5,13]);
|
||||
}
|
||||
translate([0,12-(4+jeuPourImpression)/2]) square([9,4+jeuPourImpression]); // trou boulon
|
||||
translate([2.5,12-(7+jeuPourImpression)/2]) square([3.4+jeuPourImpression,7+jeuPourImpression]); // emplacement écrou
|
||||
|
||||
translate([2,-10-(jeuPourImpression/2)]) square([8+jeuPourImpression,4+jeuPourImpression]); // fenetre passante
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (pourImpression3D == 1) {
|
||||
translate([-5,4,0]) cube([6.5,14,0.2]);
|
||||
}
|
||||
echo(str("252"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
module laser215() {
|
||||
linear_extrude(height=epaisseurTole) {
|
||||
difference() {
|
||||
square([60,100]);
|
||||
translate([60,20]) rotate(atan(40/80)) translate([0,0]) square([100,200]);
|
||||
|
||||
translate([10,10]) circle(d=drillM4,$fn=fnCylindre);
|
||||
translate([50,10]) circle(d=drillM4,$fn=fnCylindre);
|
||||
translate([10,30]) circle(d=drillM4,$fn=fnCylindre);
|
||||
translate([10,90]) circle(d=drillM4,$fn=fnCylindre);
|
||||
}
|
||||
}
|
||||
echo(str("215"));
|
||||
}
|
||||
|
||||
|
||||
module laser216() {
|
||||
linear_extrude(height=2) {
|
||||
rotate(-30) union() {
|
||||
difference() {
|
||||
union() {
|
||||
circle(d=36,$fn=100);
|
||||
translate([-11,-17.5-2]) square([22,10]);
|
||||
}
|
||||
circle(d=28.5,$fn=36);
|
||||
translate([-8.75,-17.5]) square([17.5,10]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
translate([sin(30)*8-5,15]) square([10,6.7]);
|
||||
translate([sin(30)*8-1.3,24-4.2]) square([2.6,5]);
|
||||
}
|
||||
echo(str("216"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
module laser251() {
|
||||
difference() {
|
||||
linear_extrude(height=1) {
|
||||
difference() {
|
||||
circle(d=27,$fn=fnCylindre);
|
||||
intersection() {
|
||||
circle(d=5.1,$fn=fnCylindre);
|
||||
translate([-3,-1.525]) square([6,3.05]);
|
||||
}
|
||||
|
||||
translate([-1,6]) square([2,6]);
|
||||
}
|
||||
}
|
||||
|
||||
//translate([0,0,0.2]) cylinder(d=13,h=2,$fn=100);
|
||||
}
|
||||
echo(str("251"));
|
||||
}
|
||||
|
||||
|
||||
module laser281() {
|
||||
linear_extrude(height=6)
|
||||
difference() {
|
||||
translate([-117/2,-45/2]) square([117,45]);
|
||||
for (x=[-12,12],y=[-12,12]) {
|
||||
translate([x,y]) circle(d=4, $fn=fnCylindre);
|
||||
}
|
||||
}
|
||||
echo(str("281"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
module profile301() {
|
||||
zTrou = epaisseurTole+eCorniereCadre+(lCorniereCadre-epaisseurTole-eCorniereCadre)/2;
|
||||
color(color300)
|
||||
render(0)
|
||||
difference() {
|
||||
cornierePercee(longueur);
|
||||
for (x1=[xCouteauInferieur,xCouteauSuperieur],x2=[0,1]) {
|
||||
translate([longueur*x2+(1-2*x2)*x1,eCorniereCadre+1,zTrou]) rotate([90,0,0]) cylinder(eCorniereCadre+2,d=diametreRivet, $fn=fnCylindre);
|
||||
}
|
||||
}
|
||||
echo(str("301"));
|
||||
}
|
||||
|
||||
module profile302() {
|
||||
color(color300)
|
||||
render(0)
|
||||
difference() {
|
||||
cornierePercee(largeur);
|
||||
for (x=[yMediane-ySupportFromMediane,yMediane+ySupportFromMediane]) {
|
||||
translate([x,10,-1]) cylinder(eCorniereCadre+2,d=drillM4, $fn=fnCylindre);
|
||||
}
|
||||
}
|
||||
echo(str("302"));
|
||||
}
|
||||
|
||||
module profile303() {
|
||||
color(color300)
|
||||
render(0)
|
||||
difference() {
|
||||
corniere(20,l303304,2);
|
||||
for (x=[8,longueur-2*eCorniereCadre-8])
|
||||
translate([x,10,-1]) cylinder(eCorniereCadre+2,d=diametreRivet, $fn=fnCylindre);
|
||||
for (x=[xBrasSecondaire2-8-2,xBrasSecondaire2+8-2])
|
||||
translate([x,-1,12]) rotate([-90,0,0]) cylinder(eCorniereCadre+2,d=diametreRivet, $fn=fnCylindre);
|
||||
|
||||
translate([xObturateur-15.5-2,-1,11]) rotate([-90,0,0]) cylinder(eCorniereCadre+2,d=diametreRivet, $fn=fnCylindre);
|
||||
translate([xObturateur+6.5-2,-1,11]) rotate([-90,0,0]) cylinder(eCorniereCadre+2,d=diametreRivet, $fn=fnCylindre);
|
||||
|
||||
|
||||
for (x=[x308-10,x309+10])
|
||||
translate([x-2,10,-1]) cylinder(eCorniereCadre+2,d=drillM4, $fn=fnCylindre);
|
||||
}
|
||||
echo(str("303"));
|
||||
}
|
||||
|
||||
|
||||
module profile308() {
|
||||
//echo(l308309);
|
||||
difference() {
|
||||
corniere(20,l308309,2);
|
||||
translate([8,10,-1]) cylinder(eCorniereCadre+2,d=diametreRivet, $fn=fnCylindre);
|
||||
}
|
||||
echo(str("308"));
|
||||
}
|
||||
|
||||
module profile309() {
|
||||
//echo(l308309);
|
||||
difference() {
|
||||
corniere(20,l308309,2);
|
||||
translate([l308309-8,10,-1]) cylinder(eCorniereCadre+2,d=diametreRivet, $fn=fnCylindre);
|
||||
}
|
||||
echo(str("309"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
module profile304() {
|
||||
color(color300)
|
||||
render(0)
|
||||
difference() {
|
||||
corniere(20,l303304,2);
|
||||
for (x=[8,longueur-2*eCorniereCadre-8])
|
||||
translate([x,10,-1]) cylinder(eCorniereCadre+2,d=diametreRivet, $fn=fnCylindre);
|
||||
for (x=[longueur-(xBrasSecondaire2-8)-2,longueur-(xBrasSecondaire2+8)-2])
|
||||
translate([x,-1,12]) rotate([-90,0,0]) cylinder(eCorniereCadre+2,d=diametreRivet, $fn=fnCylindre);
|
||||
}
|
||||
echo(str("304"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
module profile305() {
|
||||
render(0)
|
||||
difference() {
|
||||
translate([0,0,30]) rotate([-90,0,0]) corniere(30,lBrasSecondaire,2);
|
||||
for (x=[7,lBrasSecondaire-30]) translate([x,largeurBras/2-16,27]) cylinder(d=5, h=4, $fn=fnCylindre);
|
||||
|
||||
//fixation couteauIII
|
||||
translate([lBrasSecondaire-xCouteauIII-10,-1,zCouteauBrasSecondaire+13]) rotate([-90,0,0]) cylinder(d=4, h=4, $fn=fnCylindre);
|
||||
translate([lBrasSecondaire-xCouteauIII+20,-1,zCouteauBrasSecondaire+13]) rotate([-90,0,0]) cylinder(d=4, h=4, $fn=fnCylindre);
|
||||
|
||||
|
||||
//fixation roulement 625zz
|
||||
//translate([lBrasSecondaire-xMotor,3,zMotor]) rotate([90,0,0]) 625zz();
|
||||
translate([lBrasSecondaire-xMotor,-1,zMotor+8+1.5]) rotate([-90,0,0]) cylinder(d=3, h=4, $fn=fnCylindre);
|
||||
translate([lBrasSecondaire-xMotor-sqrt(pow(9.5,2)-pow((zMotor-3.5),2)),-1,3.5]) rotate([-90,0,0]) cylinder(d=3, h=4, $fn=fnCylindre);
|
||||
translate([lBrasSecondaire-xMotor+sqrt(pow(9.5,2)-pow((zMotor-3.5),2)),-1,3.5]) rotate([-90,0,0]) cylinder(d=3, h=4, $fn=fnCylindre);
|
||||
}
|
||||
echo(str("305"));
|
||||
}
|
||||
|
||||
//profile306();
|
||||
|
||||
module profile306() {
|
||||
render(0)
|
||||
difference() {
|
||||
translate([0,0,30]) rotate([-90,0,0]) corniere(30,lBrasSecondaire,2);
|
||||
for (x=[30,lBrasSecondaire-7]) translate([x,largeurBras/2-16,27]) cylinder(d=5, h=4, $fn=fnCylindre);
|
||||
|
||||
//fixation moteur
|
||||
/*translate ([xMotor,-1,zMotor]) rotate([0,-150,0]) {
|
||||
translate([0,0,0]) rotate([-90,0,0]) cylinder(d=9.5, h=4);
|
||||
translate([-35/2,0,-8]) rotate([-90,0,0]) cylinder(d=4, h=4, $fn=fnCylindre);
|
||||
translate([35/2,0,-8]) rotate([-90,0,0]) cylinder(d=4, h=4, $fn=fnCylindre);
|
||||
}*/
|
||||
|
||||
translate([xMotor,0,zMotor]) rotate([-90,0,0]) cylinder(d=9.5, h=4);
|
||||
translate([xMotor+fixMoteur1X,0,zMotor+fixMoteur1Y]) rotate([-90,0,0]) cylinder(d=4, h=4, $fn=fnCylindre);
|
||||
translate([xMotor-fixMoteur2X,0,zMotor+fixMoteur2Y]) rotate([-90,0,0]) cylinder(d=4, h=4, $fn=fnCylindre);
|
||||
|
||||
|
||||
|
||||
//poulie libre
|
||||
translate([xPulley,-1,zMotor]) rotate([-90,0,0]) cylinder(d=3, h=4, $fn=fnCylindre);
|
||||
|
||||
//fixation couteauIII
|
||||
translate([xCouteauIII-20,-1,zCouteauBrasSecondaire+13]) rotate([-90,0,0]) cylinder(d=4, h=4, $fn=fnCylindre);
|
||||
translate([xCouteauIII+10,-1,zCouteauBrasSecondaire+13]) rotate([-90,0,0]) cylinder(d=4, h=4, $fn=fnCylindre);
|
||||
|
||||
|
||||
//fixation obturateur
|
||||
//for (z=[4,12])
|
||||
for (z=[9,17])
|
||||
translate([longueur-xBrasSecondaire-xObturateur,-1,z]) rotate([-90,0,0]) cylinder(d=4, h=4, $fn=fnCylindre);
|
||||
|
||||
//echo(lBrasSecondaire);
|
||||
//echo(longueur-xBrasSecondaire-xObturateur);
|
||||
}
|
||||
echo(str("306"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
module tube311() {
|
||||
xTrouFixation = epaisseurTole+epaisseurCouteau+6;
|
||||
color(color310)
|
||||
render(0)
|
||||
difference() {
|
||||
tubeCarre(20, largeur, 2);
|
||||
|
||||
translate([xTrouFixation,10,-1]) cylinder(d=diametreRivet, h=22, $fn=fnCylindre);
|
||||
translate([largeur-xTrouFixation,10,-1]) cylinder(d=diametreRivet, h=22, $fn=fnCylindre);
|
||||
|
||||
translate([y312,10,-1]) cylinder(d=diametreRivet, h=22, $fn=fnCylindre);
|
||||
translate([y312-40,10,-1]) cylinder(d=diametreRivet, h=22, $fn=fnCylindre);
|
||||
|
||||
translate([largeur-y312,10,-1]) cylinder(d=diametreRivet, h=22, $fn=fnCylindre);
|
||||
translate([largeur-(y312-40),10,-1]) cylinder(d=diametreRivet, h=22, $fn=fnCylindre);
|
||||
}
|
||||
echo(str("311"));
|
||||
}
|
||||
|
||||
//tube313();
|
||||
//translate([2+y312+10,2+20,20-2]) rotate([0,0,180]) laser206();
|
||||
|
||||
|
||||
module tube312() {
|
||||
color(color310)
|
||||
render(0)
|
||||
difference() {
|
||||
tubeCarre(20, 251, 2);
|
||||
//translate([-24,20,0]) rotate([90,0,0]) drill205(22);
|
||||
|
||||
translate([longueur/2-26-21,-1,10]) rotate([-90,0,0]) cylinder(d=diametreRivet,h=22, $fn=fnCylindre);
|
||||
translate([longueur/2-26+21,-1,10]) rotate([-90,0,0]) cylinder(d=diametreRivet,h=22, $fn=fnCylindre);
|
||||
|
||||
translate([10,10,-1]) cylinder(d=diametreRivet, h=22, $fn=fnCylindre);
|
||||
translate([70,10,-1]) cylinder(d=diametreRivet, h=22, $fn=fnCylindre);
|
||||
|
||||
}
|
||||
echo(str("312"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
module tube313() {
|
||||
xTrouFixation = epaisseurTole+epaisseurCouteau+6;
|
||||
color(color310)
|
||||
render(0)
|
||||
difference() {
|
||||
tubeCarre(20, largeur, 2);
|
||||
|
||||
translate([xTrouFixation,10,-1]) cylinder(d=diametreRivet, h=22, $fn=fnCylindre);
|
||||
translate([largeur-xTrouFixation,10,-1]) cylinder(d=diametreRivet, h=22, $fn=fnCylindre);
|
||||
|
||||
translate([y314,10,-1]) cylinder(d=diametreRivet, h=22, $fn=fnCylindre);
|
||||
translate([y314-40,10,-1]) cylinder(d=diametreRivet, h=22, $fn=fnCylindre);
|
||||
|
||||
translate([largeur-y314,10,-1]) cylinder(d=diametreRivet, h=22, $fn=fnCylindre);
|
||||
translate([largeur-(y314-40),10,-1]) cylinder(d=diametreRivet, h=22, $fn=fnCylindre);
|
||||
}
|
||||
echo(str("313"));
|
||||
}
|
||||
|
||||
module tube314() {
|
||||
|
||||
color(color310)
|
||||
render(0)
|
||||
difference() {
|
||||
tubeCarre(20, l314, 2);
|
||||
//translate([-24,20,0]) rotate([90,0,0]) drill205(22);
|
||||
|
||||
translate([longueur/2-26-8,-1,6]) rotate([-90,0,0]) cylinder(d=diametreRivet,h=22, $fn=fnCylindre);
|
||||
translate([longueur/2-26+8,-1,6]) rotate([-90,0,0]) cylinder(d=diametreRivet,h=22, $fn=fnCylindre);
|
||||
translate([xAppuiLong-26-10,-1,11]) rotate([-90,0,0]) cylinder(d=drillM4,h=22, $fn=fnCylindre);
|
||||
translate([xAppuiLong-26+10,-1,11]) rotate([-90,0,0]) cylinder(d=drillM4,h=22, $fn=fnCylindre);
|
||||
|
||||
translate([10,10,-1]) cylinder(d=diametreRivet, h=22, $fn=fnCylindre);
|
||||
translate([70,10,-1]) cylinder(d=diametreRivet, h=22, $fn=fnCylindre);
|
||||
}
|
||||
echo(str("314"));
|
||||
}
|
||||
|
||||
/*module contrePoids315() {
|
||||
difference() {
|
||||
translate([-51,-20,0]) cube([102,40,8]);
|
||||
|
||||
for (x=[-12,12],y=[-12,12]) {
|
||||
translate([x,y,-1]) cylinder(d=4,h=10, $fn=10);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
|
||||
module arbre321() {
|
||||
rotate([-90,0,0]) cylinder(d=5,h=48,$fn=fnCylindre);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//translate([0,0,10]) laser213();
|
||||
|
||||
//contrePoids315();
|
||||
//profile303();
|
||||
//projection() laser251();
|
||||
|
||||
|
||||
module printed601() {
|
||||
difference() {
|
||||
union() {
|
||||
translate([0,0,2]) cylinder(d=11.5,h=3,$fn=128);
|
||||
cylinder(d=16,h=2,$fn=128);
|
||||
}
|
||||
translate([0,0,-1]) cylinder(d=6.2,h=7,$fn=128);
|
||||
translate([-20,-1,-1]) cube([20,2,7]);
|
||||
}
|
||||
echo(str("601"));
|
||||
}
|
||||
|
||||
//printed602();
|
||||
//pulley();
|
||||
module printed602() {
|
||||
dInt = 13 + 0.5;
|
||||
|
||||
linear_extrude(height=1) {
|
||||
difference() {
|
||||
circle(d=27,$fn=fnCylindre);
|
||||
translate([-1,-12]) square([2,4.5]);
|
||||
circle(d=dInt,$fn=fnCylindre);
|
||||
}
|
||||
}
|
||||
|
||||
difference() {
|
||||
//union() {
|
||||
difference() {
|
||||
translate([0,0,0]) cylinder(d=dInt+1,h=6-0.5,$fn=fnCylindre);
|
||||
translate([0,0,-1]) cylinder(d=dInt,h=8,$fn=fnCylindre);
|
||||
}
|
||||
//translate([6.3,0,3-0.5]) rotate([0,90,0]) cylinder(d=3.4,h=0.5,$fn=12);
|
||||
//translate([0,6.3,3-0.5]) rotate([-90,0,0]) cylinder(d=3.4,h=0.5,$fn=12);
|
||||
//}
|
||||
translate([0,0,3-0.5]) rotate([-90,0,0]) cylinder(d=3,h=10,$fn=12);
|
||||
translate([0,0,3-0.5]) rotate([0,90,0]) cylinder(d=3,h=10,$fn=12);
|
||||
}
|
||||
echo(str("602"));
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
module protection701() {
|
||||
difference() {
|
||||
translate([0,-55,-10]) cube([longueur-4,110,10]);
|
||||
translate([-1,-54.4,-11]) cube([longueur,110-2*0.6,10.6]);
|
||||
for (x=[8,longueur-4-8],y=[-ySupportFromMediane,ySupportFromMediane])
|
||||
translate([x,y,-1]) cylinder(d=drillM4,h=3);
|
||||
}
|
||||
}
|
||||
|
||||
//////Jhodi's stuffs////
|
||||
// Fonction pour dessiner la projection avec translation
|
||||
module projected_pieces() {
|
||||
translate([0, 0, 0]) projection() laser101();
|
||||
translate([0, 100, 0]) projection() laser102();
|
||||
translate([0, 200, 0]) projection() laser103();
|
||||
translate([0, 300, 0]) projection() laser104();
|
||||
translate([0, 400, 0]) projection() laser105();
|
||||
translate([0, 500, 0]) projection() laser106();
|
||||
translate([0, 600, 0]) projection() laser107();
|
||||
translate([0, 700, 0]) projection() laser108();
|
||||
|
||||
translate([100, 0, 0]) projection() laser201();
|
||||
translate([100, 100, 0]) projection() laser202();
|
||||
translate([100, 200, 0]) projection() laser203();
|
||||
translate([100, 400, 0]) projection() laser205();
|
||||
translate([100, 500, 0]) projection() laser206();
|
||||
translate([100, 650, 0]) projection() laser207();
|
||||
translate([100, 750, 0]) projection() laser208();
|
||||
|
||||
translate([250, 0, 0]) projection() laser209();
|
||||
translate([250, 100, 0]) projection() laser211();
|
||||
translate([250, 200, 0]) projection() laser212();
|
||||
translate([250, 300, 0]) projection() laser213();
|
||||
translate([250, 400, 0]) projection() laser215();
|
||||
translate([250, 550, 0]) projection() laser216();
|
||||
translate([250, 650, 0]) projection() laser252();
|
||||
translate([250, 750, 0]) projection() laser281();
|
||||
}
|
||||
//projected_pieces();
|
||||
389
drilling.scad
Normal file
389
drilling.scad
Normal file
|
|
@ -0,0 +1,389 @@
|
|||
include <customParts.scad>
|
||||
fnLocal = 60;
|
||||
|
||||
module trou(x,y,d=4) {
|
||||
echo(str(x, " ",y));
|
||||
translate([x,y,-30]) cylinder(d=d,$fn=fnLocal,h=80);
|
||||
}
|
||||
|
||||
module percageOutil1000() {
|
||||
trou(0,0);
|
||||
|
||||
//1001-1004, 1009-1010, 1015-1016
|
||||
for (x=[-160,-100,-28,28,100,160]) {
|
||||
trou(x,12);
|
||||
}
|
||||
|
||||
//1001-1004
|
||||
for (x=[-10,-30,10,30]) {
|
||||
trou(x,-12);
|
||||
}
|
||||
|
||||
//1001-1004
|
||||
for (x=[-26,-48,26,48]) {
|
||||
trou(x-((10-sqrt(2))*(x/abs(x))),sqrt(2));
|
||||
}
|
||||
|
||||
|
||||
//1005-1008, 1011-1014
|
||||
for (x=[-152,-92,-20,20,92,152]) {
|
||||
trou(x,10);
|
||||
}
|
||||
|
||||
//1005-1008
|
||||
for (x=[-38-2,-58-2,38+2,58+2]) {
|
||||
trou(x,-5);
|
||||
}
|
||||
|
||||
|
||||
//1009-1010
|
||||
for (x=[-10,10]) {
|
||||
trou(x,-5);
|
||||
}
|
||||
|
||||
//1011-1014
|
||||
for (x=[xBrasSecondaire2-500-8,xBrasSecondaire2-500+8,500-xBrasSecondaire2-8,500-xBrasSecondaire2+8]) {
|
||||
trou(x,-2);
|
||||
}
|
||||
|
||||
//1015-1016
|
||||
for (x=[-176.2,176.2]) {
|
||||
trou(x-((10-sqrt(2))*(x/abs(x))), sqrt(2));
|
||||
}
|
||||
//1015-1016
|
||||
for (x=[-160,160]) {
|
||||
trou(x,-12);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//1017-1018
|
||||
for (x=[-84,10]) {
|
||||
trou(x,11);
|
||||
}
|
||||
|
||||
//1017-1018
|
||||
for (x=[xObturateur+6.5,xObturateur-15.5]) {
|
||||
trou(x,4);
|
||||
}
|
||||
|
||||
echo("fix 308-309");
|
||||
|
||||
trou(longueur-x308+8+2,0);
|
||||
trou(x308-x309-20,0);
|
||||
|
||||
echo("/fix 308-309");
|
||||
|
||||
//reference
|
||||
for (x=[-120,0,120],y=[20,80]) {
|
||||
trou(x,y);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
module outilCorniere1000() {
|
||||
difference() {
|
||||
translate([-180,-40,-20])cube([360,140,20]);
|
||||
//translate([0,0,-25]) cylinder(d=4,$fn=fnLocal,h=30);
|
||||
percageOutil1000();
|
||||
}
|
||||
|
||||
|
||||
//percageOutil100x();
|
||||
|
||||
/*difference() {
|
||||
translate([-180,-7,3])cube([360,107,20]);
|
||||
translate([0,0,0]) cylinder(d=4,$fn=fnLocal,h=30);
|
||||
percageOutil100x();
|
||||
}*/
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
module anim1000(n=18) {
|
||||
|
||||
color("red") outilCorniere1000();
|
||||
if (n==1) translate([-26,-10]) profile301(); //1001
|
||||
if (n==2) translate([-48,-10]) profile301(); //1002
|
||||
if (n==3) translate([-500+48,-10]) profile301(); //1003
|
||||
if (n==4) translate([-500+26,-10]) profile301(); //1004
|
||||
|
||||
if (n==5) translate([38,-12,2]) rotate([90,0,180]) profile301(); //1005
|
||||
if (n==6) translate([58,-12,2]) rotate([90,0,180]) profile301(); //1006
|
||||
if (n==7) translate([500-38,-12,2]) rotate([90,0,180]) profile301(); //1007
|
||||
if (n==8) translate([500-58,-12,2]) rotate([90,0,180]) profile301(); //1008
|
||||
|
||||
if (n==9) translate([-8,-10,0]) profile303(); //1009
|
||||
if (n==10) translate([-496+8,-10,0]) profile303(); //1010
|
||||
|
||||
if (n==11) translate([xBrasSecondaire2-2-8,-12,0]) rotate([90,0,180]) profile303(); //1011
|
||||
if (n==12) translate([xBrasSecondaire2-2+8,-12,0]) rotate([90,0,180]) profile303(); //1012
|
||||
if (n==13) translate([498-xBrasSecondaire2-8,-12,0]) rotate([90,0,180]) profile307(); //1013
|
||||
if (n==14) translate([498-xBrasSecondaire2+8,-12,0]) rotate([90,0,180]) profile307(); //1014
|
||||
|
||||
if (n==15) translate([-176.2,-10]) profile302(); //1015
|
||||
if (n==16) translate([-430+176.2,-10]) profile302(); //1016
|
||||
|
||||
if (n==17) translate([xObturateur+6.5-2,-11,0]) rotate([90,0,180]) profile303(); //1017
|
||||
if (n==18) translate([xObturateur-15.5-2,-11,0]) rotate([90,0,180]) profile303(); //1018
|
||||
|
||||
if (n==19) translate([-x308+10+2,-10,0]) rotate([0,0,0]) profile303();
|
||||
if (n==20) translate([-x309-10+2,-10,0]) rotate([0,0,0]) profile303();
|
||||
}
|
||||
|
||||
|
||||
//anim1000(round($t*18)+1);
|
||||
//anim1000(20);
|
||||
//projection() outilCorniere1000();
|
||||
|
||||
|
||||
module percageOutil1030() {
|
||||
trou(0,0);
|
||||
|
||||
//1010 > Y
|
||||
for (x=[-100,-20]) {
|
||||
trou(x,12);
|
||||
}
|
||||
//1010 > X
|
||||
for (x=[12,72]) {
|
||||
trou(x,5);
|
||||
}
|
||||
|
||||
//1011 > X
|
||||
for (x=[50,8]) {
|
||||
trou(x,-5);
|
||||
}
|
||||
|
||||
//1012 > Y
|
||||
for (x=[-110,-30]) {
|
||||
trou(x,13);
|
||||
}
|
||||
//1012 > X
|
||||
for (x=[15,35]) {
|
||||
trou(x,0);
|
||||
}
|
||||
|
||||
//1013 > Y
|
||||
for (x=[-60,60]) {
|
||||
trou(x,8);
|
||||
}
|
||||
//1013 > X
|
||||
for (x=[140,156]) {
|
||||
trou(x,0);
|
||||
}
|
||||
|
||||
//1015 > X
|
||||
trou(70,12);
|
||||
for (x=[14,y312-40+2,111,y312+2,151]) {
|
||||
trou(x,-6);
|
||||
}
|
||||
|
||||
//reference
|
||||
for (x=[-120,0,120],y=[20,80]) {
|
||||
trou(x,y);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
module outilTube1030() {
|
||||
difference() {
|
||||
translate([-180,-40,-20])cube([360,140,20]);
|
||||
//translate([0,0,-25]) cylinder(d=4,$fn=fnLocal,h=30);
|
||||
percageOutil1030();
|
||||
}
|
||||
|
||||
|
||||
//percageOutil100x();
|
||||
|
||||
/*difference() {
|
||||
translate([-180,-7,3])cube([360,107,20]);
|
||||
translate([0,0,0]) cylinder(d=4,$fn=fnLocal,h=30);
|
||||
percageOutil100x();
|
||||
}*/
|
||||
}
|
||||
|
||||
|
||||
//anim1030(round($t*13)+1);
|
||||
module anim1030(n=13) {
|
||||
color("red") outilTube1030();
|
||||
|
||||
if (n == 1) translate([10,10,0]) rotate([0,0,180]) tube312();// 1031
|
||||
if (n == 2) translate([70,10,0]) rotate([0,0,180]) tube312();// 1032
|
||||
|
||||
if (n == 3) translate([-203,10,0]) rotate([90,0,0]) tube312();// 1033
|
||||
if (n == 4) translate([-245,10,0]) rotate([90,0,0]) tube312();// 1034
|
||||
|
||||
if (n == 5) translate([-357,11,0]) rotate([90,0,0]) tube314();// 1035
|
||||
if (n == 6) translate([-337,11,0]) rotate([90,0,0]) tube314();// 1036
|
||||
|
||||
if (n == 7) translate([-232,6,0]) rotate([90,0,0]) tube314();// 1037
|
||||
if (n == 8) translate([-216,6,0]) rotate([90,0,0]) tube314();// 1038
|
||||
|
||||
if (n == 9) translate([12,10]) rotate([0,0,180]) tube311();// 1039
|
||||
if (n == 10) translate([y312,10]) rotate([0,0,180]) tube311();// 1040
|
||||
if (n == 11) translate([y312-40,10]) rotate([0,0,180]) tube311();// 1041
|
||||
|
||||
if (n == 12) translate([109,10]) rotate([0,0,180]) tube313();// 1042
|
||||
if (n == 13) translate([149,10]) rotate([0,0,180]) tube313();// 1043
|
||||
}
|
||||
|
||||
module percageOutil1060() {
|
||||
trou(0,0,4); // 4mm
|
||||
trou(-20,0,3); // 3mm
|
||||
trou(20,0,5); // 5mm
|
||||
|
||||
//1020 > Y
|
||||
for (x=[-130,-20,20,130]) {
|
||||
trou(x,18);
|
||||
}
|
||||
|
||||
//1020 > X
|
||||
for (x=[-9,9,-32,32]) { //5mm
|
||||
trou(x+20,-4);
|
||||
}
|
||||
|
||||
|
||||
//fixation moteur
|
||||
trou(-110,18.5);
|
||||
trou(-10,18.5);
|
||||
trou(-1,-7);
|
||||
trou(-130,5.5);
|
||||
trou(-30,5.5);
|
||||
trou(-1-sqrt(pow(9.5,2)-pow((zMotor-3.5),2)),-12);
|
||||
trou(-1+sqrt(pow(9.5,2)-pow((zMotor-3.5),2)),-12);
|
||||
|
||||
|
||||
//fixation couteau
|
||||
for (x=[-120,-20,20,120]) {
|
||||
trou(x,10);
|
||||
|
||||
}
|
||||
for (x=[-120,0,120]) trou(x,15);
|
||||
|
||||
for (x=[xCouteauIII-18,xCouteauIII+12,-xCouteauIII-12,-xCouteauIII+18]) {
|
||||
trou(x,0);
|
||||
}
|
||||
|
||||
//moteur
|
||||
trou(110,zMotor+2);
|
||||
trou(10,zMotor+2);
|
||||
trou(-xMotor-2,-10);
|
||||
|
||||
|
||||
trou(30,zMotor+fixMoteur1Y+2);
|
||||
trou(130,zMotor+fixMoteur1Y+2);
|
||||
trou(-xMotor-fixMoteur1X-2,-10);
|
||||
|
||||
|
||||
//15
|
||||
/*trou(30,zMotor+fixMoteur2Y+2);
|
||||
trou(130,zMotor+fixMoteur2Y+2);
|
||||
trou(-xMotor+fixMoteur2X-2,10);*/
|
||||
echo("début correctif");
|
||||
trou(-50,zMotor+fixMoteur2Y+2-3);
|
||||
trou(110,zMotor+fixMoteur2Y+2-3);
|
||||
trou(-xMotor+fixMoteur2X-2-60,10-3);
|
||||
trou(-60,-3);
|
||||
echo("fin correctif");
|
||||
|
||||
|
||||
trou(-45,9);
|
||||
trou(-145,9);
|
||||
|
||||
trou(-30,14);
|
||||
trou(-140,14);
|
||||
trou(30,-10);
|
||||
trou(-40,6);
|
||||
trou(-140,6);
|
||||
|
||||
trou(-lBrasSecondaire+xPulley,-19);
|
||||
|
||||
|
||||
//16-17
|
||||
echo("fix 16-17");
|
||||
trou(-37,11);
|
||||
trou(-130,11);
|
||||
trou(-37,19);
|
||||
trou(-145,19);
|
||||
|
||||
echo("/fix 16-17")
|
||||
|
||||
|
||||
|
||||
|
||||
//reference
|
||||
for (x=[-120,0,120],y=[28,80]) {
|
||||
trou(x,y);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
module outilCorniere1060() {
|
||||
color("red") difference() {
|
||||
translate([-180,-40,-20])cube([360,140,20]);
|
||||
//translate([0,0,-25]) cylinder(d=4,$fn=fnLocal,h=30);
|
||||
percageOutil1060();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*difference() {
|
||||
translate([-180,-7,3])cube([360,107,20]);
|
||||
translate([0,0,0]) cylinder(d=4,$fn=fnLocal,h=30);
|
||||
percageOutil1060();
|
||||
translate([-60,-3,10]) cylinder(d=8,h=20,$fn=32);
|
||||
}*/
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
//anim1060(round($t*17)+1);
|
||||
anim1060(15);
|
||||
|
||||
//outilCorniere1060();
|
||||
//projection() outilCorniere1060();
|
||||
|
||||
module anim1060(n=1) {
|
||||
//projection() {
|
||||
color("red") outilCorniere1060();
|
||||
//percageOutil102x();
|
||||
|
||||
echo(n);
|
||||
|
||||
//5mm
|
||||
if (n==1) translate([7+20,-14,30]) rotate([180,0,180]) profile305();//1061
|
||||
if (n==2) translate([403+20,-14,30]) rotate([180,0,180]) profile305();//1062
|
||||
if (n==3) translate([30+20,-14,30]) rotate([180,0,180]) profile306();//1063
|
||||
if (n==4) translate([426+20,-14,30]) rotate([180,0,180]) profile306();//1064
|
||||
|
||||
//3mm
|
||||
if (n==5) translate([-436,16.5,0]) rotate([90,0,0]) profile305();//1065
|
||||
if (n==6) translate([-436-sqrt(pow(9.5,2)-pow((zMotor-3.5),2)),3.5,0]) rotate([90,0,0]) profile305();//1066
|
||||
if (n==7) translate([-436+sqrt(pow(9.5,2)-pow((zMotor-3.5),2)),3.5,0]) rotate([90,0,0]) profile305();//1067
|
||||
|
||||
if (n==8) translate([-xPulley-20,7,0]) rotate([90,0,0]) profile306();//1068 !!!butée X
|
||||
|
||||
|
||||
//4mm
|
||||
if (n==9) translate([-lBrasSecondaire+xCouteauIII+10,13,0]) rotate([90,0,0]) profile305();//1069
|
||||
if (n==10) translate([-lBrasSecondaire+xCouteauIII-20,13,0]) rotate([90,0,0]) profile305();//1070
|
||||
|
||||
|
||||
if (n==11) translate([-xCouteauIII-10,13,0]) rotate([90,0,0]) profile306();//1071
|
||||
if (n==12) translate([-xCouteauIII+20,13,0]) rotate([90,0,0]) profile306();//1072
|
||||
|
||||
if (n==13) translate([-xMotor,zMotor,0]) rotate([90,0,0]) profile306();//1073
|
||||
if (n==14) translate([-xMotor-fixMoteur1X,zMotor+fixMoteur1Y,0]) rotate([90,0,0]) profile306();//1074
|
||||
//if (n==15) translate([-xMotor+fixMoteur2X,zMotor+fixMoteur2Y,0]) rotate([90,0,0]) profile306();//1075 !!! trop porofond
|
||||
if (n==15) translate([-xMotor+fixMoteur2X-60,zMotor+fixMoteur2Y - 3,0]) rotate([90,0,0]) profile306();//1075
|
||||
|
||||
if (n==16) translate([-lBrasSecondaire+28,9,0]) rotate([90,0,0]) profile306();//1076
|
||||
if (n==17) translate([-lBrasSecondaire+28,17,0]) rotate([90,0,0]) profile306();//1077
|
||||
}
|
||||
15
encodeur1tour.scad
Normal file
15
encodeur1tour.scad
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
difference() {
|
||||
linear_extrude(height=1) {
|
||||
difference() {
|
||||
circle(d=30,$fn=100);
|
||||
intersection() {
|
||||
circle(d=5.2,$fn=100);
|
||||
translate([-3,-1.6]) square([6,3.2]);
|
||||
}
|
||||
|
||||
translate([-1,8]) square([2,5]);
|
||||
}
|
||||
}
|
||||
|
||||
//translate([0,0,0.2]) cylinder(d=13,h=2,$fn=100);
|
||||
}
|
||||
81
functions.scad
Normal file
81
functions.scad
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
include <parameters.scad>;
|
||||
|
||||
/////////////////////////////////////////////////
|
||||
///// Fonctions /////
|
||||
/////////////////////////////////////////////////
|
||||
module tubeCarre(cote, longueur, epaisseur) { //placé le long de X
|
||||
//color("LightGreen",1.0)
|
||||
difference() {
|
||||
cube([longueur,cote,cote]);
|
||||
translate([-1,epaisseur,epaisseur]) cube([longueur+2,cote - (2 * epaisseur),cote - (2 * epaisseur)]);
|
||||
}
|
||||
}
|
||||
|
||||
module tube(dExt, dInt, longueur) {
|
||||
rotate([0,90,0])
|
||||
difference() {
|
||||
cylinder(d=dExt, h=longueur, $fn=fnCylindre);
|
||||
translate([0,0,-1]) cylinder(d=dInt, h=longueur+2, $fn=fnCylindre);
|
||||
}
|
||||
}
|
||||
|
||||
module toleTriangulaire (base,hauteur,epaisseur) { //placé le long de X, base en bas, dans le plan XY
|
||||
polyhedron(points = [
|
||||
[-base/2,0,0], //0
|
||||
[base/2,0,0],//1
|
||||
[0,hauteur,0],//2
|
||||
[-base/2,0,epaisseur], //3
|
||||
[base/2,0,epaisseur],//4
|
||||
[0,hauteur,epaisseur],//5
|
||||
],
|
||||
faces=[
|
||||
[1,0,3,4],
|
||||
[0,2,5,3],
|
||||
[4,5,2,1],
|
||||
[0,1,2],
|
||||
[5,4,3]
|
||||
]);
|
||||
}
|
||||
|
||||
module profileU(hauteur,largeur,longueur,epaisseur) { //placé le long de X
|
||||
rArrondi = 1.0;
|
||||
|
||||
color("LightGreen",1.0)
|
||||
difference() {
|
||||
cube([longueur,largeur,hauteur]);
|
||||
translate([-1,epaisseur,epaisseur]) cube([longueur+2,largeur - (2 * epaisseur),hauteur - epaisseur + 1]);
|
||||
}
|
||||
}
|
||||
|
||||
module corniere(cote, longueur, epaisseur) {
|
||||
difference() {
|
||||
cube([longueur,cote,cote]);
|
||||
translate([-1,epaisseur,epaisseur]) cube([longueur+2,cote,cote]);
|
||||
}
|
||||
}
|
||||
|
||||
module corniere45(cote, longueur, epaisseur) {
|
||||
difference() {
|
||||
corniere(cote, longueur, epaisseur);
|
||||
rotate([0,0,-45]) translate([-cote*1.5,-1,-1]) cube([cote*1.5,cote*1.5,cote+2]);
|
||||
translate([longueur,0,0]) rotate([0,0,45]) translate([0,-1,-1])cube([cote*1.5,cote*1.5,cote+2]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
module cornierePercee(longueur) {
|
||||
difference() {
|
||||
corniere45(20,longueur,2);
|
||||
for (x=[26,48,longueur-26,longueur-48])
|
||||
translate([x,10,0]) cylinder(eCorniereCadre+2,d=diametreRivet, $fn=fnCylindre);
|
||||
}
|
||||
}
|
||||
|
||||
module cornierePerceeNonFraisee(longueur) {
|
||||
difference() {
|
||||
corniere45(20,longueur,2);
|
||||
for (x=[26,48,longueur-26,longueur-48])
|
||||
translate([x,10,-1]) cylinder(d=diametreRivet, h=4, $fn=fnCylindre);
|
||||
}
|
||||
}
|
||||
123
parameters.scad
Normal file
123
parameters.scad
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
niveauDetail = 5;
|
||||
fnCylindre = 32;
|
||||
//pourImpression3D = false;
|
||||
pourImpression3D = 0;
|
||||
|
||||
|
||||
epaisseurTole = 2;
|
||||
epaisseurCouteau = 4;
|
||||
|
||||
diametreRivet = pourImpression3D ? 4.2 : 4.1;
|
||||
drillM3 = 3.2;
|
||||
drillM4 = 4.2;
|
||||
drillM5 = 5.2;
|
||||
drillM8 = 8.2;
|
||||
|
||||
diametrePetitsBoulons = pourImpression3D ? 3.4 : 3;
|
||||
jeuPourImpression = pourImpression3D ? 0.2 : 0;
|
||||
laserSlack = 0.1;
|
||||
|
||||
|
||||
|
||||
|
||||
longueur = 500;
|
||||
largeur = 430;
|
||||
offsetCouteau = 20;
|
||||
//hauteurCadre = 20;
|
||||
lCorniereCadre = 20;
|
||||
eCorniereCadre = 2;
|
||||
lIntCornierCadre = lCorniereCadre - eCorniereCadre;
|
||||
zPlateau = 90; //72;
|
||||
|
||||
zCouteau = zPlateau / 2; //hauteurCouteau + lCorniereCadre;
|
||||
hauteurCouteau = zCouteau - lCorniereCadre; //(zPlateau - 2 * lCorniereCadre) / 2;
|
||||
|
||||
xCouteauInferieur = 38;
|
||||
xCouteauSuperieur = xCouteauInferieur + offsetCouteau ;
|
||||
|
||||
|
||||
entretoiseCouteau = 5;
|
||||
|
||||
taillePetitEcrou = 5.5;
|
||||
|
||||
|
||||
largeurBras = 60;
|
||||
|
||||
xBrasSecondaire = 35;
|
||||
|
||||
|
||||
//zBrasSecondaire = 50; //34;
|
||||
zBrasSecondaire = 45;
|
||||
|
||||
|
||||
|
||||
z = zPlateau / 2;
|
||||
|
||||
|
||||
l312 = 251;
|
||||
l314 = 370;
|
||||
spacer104N = 5;
|
||||
spacer104Thick = 0.8;
|
||||
spacer104 = spacer104N * spacer104Thick; //4;
|
||||
|
||||
y314 = largeur/2-largeurBras/2-1-epaisseurCouteau-21-10;
|
||||
y312 = y314 - epaisseurCouteau - 20 - (2 * spacer104);
|
||||
|
||||
color100 = "pink";
|
||||
color200 = "lightblue";
|
||||
color300 = "orange";
|
||||
color310 = "lightgreen";
|
||||
|
||||
|
||||
|
||||
lBrasSecondaire = 433; //23
|
||||
xPulley = lBrasSecondaire - 9;
|
||||
xMotor = xPulley - 407; //(852 - 32mm (16dents)) / 2 - 3mm de marge car dans la vrai vie avec le tendeur....
|
||||
|
||||
xObturateur = 60;
|
||||
|
||||
|
||||
zMotor = 7;
|
||||
rotationMoteur=150;
|
||||
a1 = atan(8/17.5);
|
||||
a2 = a1-30;
|
||||
a3 = a1+30;
|
||||
fixMoteurR = sqrt(pow(8,2)+pow(17.5,2));
|
||||
fixMoteur1X=cos(a2)*fixMoteurR;
|
||||
fixMoteur1Y=sin(a2)*fixMoteurR;
|
||||
fixMoteur2X=cos(a3)*fixMoteurR;;
|
||||
fixMoteur2Y=sin(a3)*fixMoteurR;;
|
||||
|
||||
|
||||
|
||||
xAxegravite = 321.1641094468;
|
||||
zAxegravite = 10.7211946502;
|
||||
xCouteauIII = 112;
|
||||
|
||||
//Support du bras secondaire
|
||||
//Support du bras secondaire
|
||||
xBrasSecondaire2 = longueur - xBrasSecondaire - xCouteauIII;
|
||||
|
||||
//xBrasSecondaire2 = 353;
|
||||
|
||||
xAppuiLong = longueur - xBrasSecondaire - xCouteauIII + 20;
|
||||
|
||||
zCouteauBrasSecondaire = zCouteau - zBrasSecondaire;
|
||||
|
||||
l303304 = longueur - 2*eCorniereCadre;
|
||||
|
||||
l308309 = (largeur-2*eCorniereCadre-(largeurBras+2*0.8))/2 - 0.2;
|
||||
x308 = longueur - 105;
|
||||
x309 = x308 - 100 - 2*eCorniereCadre;
|
||||
|
||||
spacer108 = 0.8;
|
||||
|
||||
y303 = largeur/2 - largeurBras/2 - 0.8;
|
||||
y304 = largeur/2 + largeurBras/2 + 0.8;
|
||||
//y1 = largeur/2 - largeurBras/2 - 0.8;
|
||||
//y2 = largeur/2 + largeurBras/2 + 0.8;
|
||||
|
||||
//xContrePoids = longueurCornieres-17-55;
|
||||
|
||||
yMediane = largeur/2;
|
||||
ySupportFromMediane = (largeurBras / 2) - eCorniereCadre + 0.8 + 10;
|
||||
BIN
profiles2D/301302.pdf
Normal file
BIN
profiles2D/301302.pdf
Normal file
Binary file not shown.
BIN
profiles2D/303304.pdf
Normal file
BIN
profiles2D/303304.pdf
Normal file
Binary file not shown.
BIN
profiles2D/305306.pdf
Normal file
BIN
profiles2D/305306.pdf
Normal file
Binary file not shown.
BIN
profiles2D/308309.pdf
Normal file
BIN
profiles2D/308309.pdf
Normal file
Binary file not shown.
BIN
profiles2D/311312.pdf
Normal file
BIN
profiles2D/311312.pdf
Normal file
Binary file not shown.
BIN
profiles2D/313314.pdf
Normal file
BIN
profiles2D/313314.pdf
Normal file
Binary file not shown.
367
standardParts.scad
Normal file
367
standardParts.scad
Normal file
|
|
@ -0,0 +1,367 @@
|
|||
include <parameters.scad>;
|
||||
|
||||
/////////////////////////////////////////////////
|
||||
///// Pièces du commerce /////
|
||||
/////////////////////////////////////////////////
|
||||
|
||||
module mountingLug() {
|
||||
difference()
|
||||
{
|
||||
hull()
|
||||
{
|
||||
cylinder(r=7/2, h=0.5, $fn=40);
|
||||
translate([0,-7/2,0]) cube([7,7,0.5]);
|
||||
}
|
||||
translate([0,0,-1]) cylinder(r=4.2/2, h=2, $fn=40);
|
||||
}
|
||||
echo(str("mountingLug;"));
|
||||
}
|
||||
|
||||
|
||||
module stepper28BYJ() {
|
||||
difference()
|
||||
{
|
||||
union()
|
||||
{
|
||||
//Body
|
||||
color("SILVER") cylinder(r=28/2, h=19, $fn=60);
|
||||
//Base of motor shaft
|
||||
color("SILVER") translate([0,8,19]) cylinder(r=9/2, h=1.5, $fn=40);
|
||||
//Motor shaft
|
||||
color("GOLD") translate([0,8,20.5])
|
||||
intersection()
|
||||
{
|
||||
cylinder(r=5/2, h=9, $fn=40);
|
||||
cube([3,6,9],center=true);
|
||||
}
|
||||
//Left mounting lug
|
||||
color("SILVER") translate([-35/2,0,18.5]) mountingLug();
|
||||
//Right mounting lug
|
||||
color("SILVER") translate([35/2,0,18.5]) rotate([0,0,180]) mountingLug();
|
||||
|
||||
difference()
|
||||
{
|
||||
//Cable entry housing
|
||||
color("BLUE") translate([-14.6/2,-17,1.9]) cube([14.6,17,17]);
|
||||
cylinder(r=27/2, h=29, $fn=60);
|
||||
}
|
||||
}
|
||||
|
||||
union()
|
||||
{
|
||||
//Flat on motor shaft
|
||||
//translate([-5,0,22]) cube([10,7,25]);
|
||||
}
|
||||
}
|
||||
echo(str("stepper28BYJ;"));
|
||||
|
||||
}//end of stepper28BYJ module wrapper
|
||||
|
||||
|
||||
|
||||
|
||||
module pulley() {
|
||||
difference() {
|
||||
union() {
|
||||
cylinder(d=13, h=6, $fn=60);
|
||||
cylinder(d=10, h=14, $fn=60);
|
||||
translate([0,0,13]) cylinder(d=13, h=1, $fn=60);
|
||||
}
|
||||
translate([0,0,-1]) cylinder(d=5, h=16, $fn=60);
|
||||
translate([0,0,3]) rotate([90,0,0]) cylinder(d=3,h=7,$fn=12);
|
||||
translate([0,0,3]) rotate([0,90,0]) cylinder(d=3,h=7,$fn=12);
|
||||
}
|
||||
echo(str("pulley;"));
|
||||
}
|
||||
|
||||
|
||||
module f623zz() {
|
||||
difference() {
|
||||
union() {
|
||||
cylinder(d=11.5, h=1, $fn=60);
|
||||
cylinder(d=10, h=4, $fn=60);
|
||||
}
|
||||
translate([0,0,-1]) cylinder(d=3, h=6, $fn=60);
|
||||
}
|
||||
echo(str("f623zz;"));
|
||||
}
|
||||
|
||||
module 625zz() {
|
||||
difference() {
|
||||
cylinder(d=16, h=5, $fn=60);
|
||||
translate([0,0,-1]) cylinder(d=5, h=7, $fn=60);
|
||||
}
|
||||
echo(str("625zz;"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
module SK10() {
|
||||
difference() {
|
||||
union() {
|
||||
cube([42,14,6]);
|
||||
translate([12,0,0]) cube([18,14,32.8]);
|
||||
}
|
||||
translate([21,15,20]) rotate([90,0,0]) cylinder(d=10, h=16, $fn=30);
|
||||
translate([5,7,-1]) cylinder(d=5.5, h=8, $fn=30);
|
||||
translate([37,7,-1]) cylinder(d=5.5, h=8, $fn=30);
|
||||
translate([20.5,-1,24]) cube([1,16,10]);
|
||||
translate([11,7,29]) rotate([0,90,0]) cylinder(d=3, h=10, $fn=30);
|
||||
translate([21,7,29]) rotate([0,90,0]) cylinder(d=4, h=10, $fn=30);
|
||||
}
|
||||
echo(str("SK10;"));
|
||||
}
|
||||
|
||||
|
||||
module belt() {
|
||||
difference() {
|
||||
union() {
|
||||
translate([6,0,-6]) cube([410,6,12]);
|
||||
translate([6,6,0]) rotate([90,0,0]) cylinder(d=12, h=6, $fn=20);
|
||||
translate([416,6,0]) rotate([90,0,0]) cylinder(d=12, h=6, $fn=20);
|
||||
}
|
||||
translate([6,-1,-5]) cube([410,8,10]);
|
||||
translate([6,7,0]) rotate([90,0,0]) cylinder(d=10, h=8, $fn=20);
|
||||
translate([416,7,0]) rotate([90,0,0]) cylinder(d=10, h=8, $fn=20);
|
||||
}
|
||||
echo(str("belt;"));
|
||||
}
|
||||
|
||||
|
||||
module LM10UU() {
|
||||
translate([0,0,-14.5])
|
||||
difference() {
|
||||
union() {
|
||||
translate([0,0,1]) color("black") cylinder(d=18, h=27, $fn=40);
|
||||
cylinder(d=19, h=5.5, $fn=40);
|
||||
translate([0,0,23.5]) cylinder(d=19, h=5.5, $fn=40);
|
||||
translate([0,0,6.8]) cylinder(d=19, h=15.4, $fn=40);
|
||||
}
|
||||
translate([0,0,-1]) cylinder(d=10, h=57, $fn=40);
|
||||
}
|
||||
echo(str("LM10UU;"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
module TCST2103() {
|
||||
difference() {
|
||||
union() {
|
||||
cube([24.5,6,3.1]);
|
||||
translate([6.3,0,0]) cube([11.9,6,10.8]);
|
||||
}
|
||||
translate([2.75,3,-1]) cylinder(d=3.3, h=5, $fn=10);
|
||||
translate([21.75,3,-1]) cylinder(d=3.3, h=5, $fn=10);
|
||||
translate([10.7,-1,3.1]) cube([3.1,8,9]);
|
||||
|
||||
translate([0,3,8.8]) rotate([0,90,0]) cylinder(d=1, h=30, $fn=10);
|
||||
}
|
||||
echo(str("TCST2103;"));
|
||||
}
|
||||
|
||||
module endstop() {
|
||||
translate([-13.25,-5.5,0])
|
||||
difference() {
|
||||
union() {
|
||||
cube([33,11,1.5]);
|
||||
translate([1,2.5,1.5]) TCST2103();
|
||||
translate([27,0,-7]) cube([6,10,7]);
|
||||
}
|
||||
translate([3.75,5.5,-1]) cylinder(d=3.3, h=3, $fn=10);
|
||||
translate([22.75,5.5,-1]) cylinder(d=3.3, h=3, $fn=10);
|
||||
}
|
||||
echo(str("endstop;"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*module boulonM4(l) {
|
||||
cylinder(h=l+1,d=4,$fn=30);
|
||||
translate([0,0,l])
|
||||
intersection() {
|
||||
translate([0,0,-0.8]) sphere(r=4,$fn=20);
|
||||
cylinder(h=2.1,d=8.8,$fn=20);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module boulonM5(l) {
|
||||
cylinder(h=l+1,d=5,$fn=30);
|
||||
translate([0,0,l])
|
||||
intersection() {
|
||||
translate([0,0,-0.8]) sphere(r=4,$fn=20);
|
||||
cylinder(h=2.1,d=8.8,$fn=20);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module boulonM3(l) {
|
||||
cylinder(h=l+1,d=3,$fn=30);
|
||||
translate([0,0,l])
|
||||
intersection() {
|
||||
translate([0,0,-0.8]) sphere(r=3.5,$fn=20);
|
||||
cylinder(h=2.1,d=6.8,$fn=20);
|
||||
}
|
||||
}*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
module nut(m) { //Hu 0.8d DIN934 ~ISO4032
|
||||
//https://www.cergy-vis.fr/media/emails/images-produit/fixnvis/fr/ECRHUA8ZN.png
|
||||
height = [0,0,0,2.4,3.2,4];
|
||||
s = [0,0,0,5.5,7,8];
|
||||
e = [0,0,0,6.01,7.66,8.79];
|
||||
|
||||
difference() {
|
||||
translate([0,0,-1*height[m]]) cylinder(h=height[m],d=s[m]/cos(30),$fn=6);
|
||||
translate([0,0,-5]) cylinder(h=6,d=m,$fn=fnCylindre);
|
||||
}
|
||||
echo(str("ECROU;",m));
|
||||
|
||||
}
|
||||
|
||||
module screw(m,h) { //ISO7680
|
||||
//https://www.visseriefixations.fr/media/emails/images-produit/fixnvis/fr/TBHCNO.png
|
||||
d2 = [0,0,0,5.7,7.6,9.5];
|
||||
k = [0,0,0,1.65,2.2,2.75];
|
||||
t = [0,0,0,1.04,1.3,1.56];
|
||||
s = [0,0,0,2,2.5,3];
|
||||
|
||||
translate([0,0,-h]) cylinder(h=h+0.1,d=m,$fn=fnCylindre);
|
||||
difference() {
|
||||
cylinder(h=k[m],d1=d2[m],d2=d2[m]*0.8,$fn=fnCylindre);
|
||||
translate([0,0,k[m] - t[m]]) cylinder(h=5,d=s[m]/cos(30),$fn=6);
|
||||
}
|
||||
echo(str("screw;", m, h));
|
||||
}
|
||||
|
||||
//screwNut(4,10,30,true);
|
||||
|
||||
module screwNut(m,h,h2,displayAxis=false) {
|
||||
render() screw(m,h);
|
||||
render() translate([0,0,-h2]) nut(m);
|
||||
if (displayAxis) rotate([180,0,0]) cylinder(d=0.4, h = h2 + (m * 0.8));
|
||||
echo(str("VIS;",m, "x", h));
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*module boulonDIN(m,h) {
|
||||
tete = [0,0,3.8,5.5,7,8.5,10,0,13,0,16,0,18];
|
||||
hex = [0,0,1.5,2.5,3,4,5,0,6,0,8,0,10];
|
||||
cylinder(h=h+1,d=m,$fn=30);
|
||||
difference() {
|
||||
translate([0,0,h]) cylinder(h=m,d=tete[m],$fn=20);
|
||||
intersection_for(i=[0:60:120])
|
||||
rotate([0,0,i]) translate([-hex[m],-hex[m]/2,h+m/2]) cube([hex[m]*2,hex[m],m/2+1]);
|
||||
}
|
||||
//translate([0,0,2]) ecrou(m,tete[m],m*0.8);
|
||||
}
|
||||
|
||||
|
||||
module rivet4Assembly(l) {
|
||||
render(0) {
|
||||
translate([0,0,-l]) cylinder(d=4,h=l,$fn=10);
|
||||
intersection() {
|
||||
translate([0,0,-1]) sphere(r=4,$fn=20);
|
||||
cylinder(h=1,d=8,$fn=20);
|
||||
}
|
||||
cylinder(d=2,h=40,$fn=10);
|
||||
translate([0,0,-l-0.5]) sphere(d=3.5,$fn=10);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
module rivet4tfAssembly(l) {
|
||||
ht = tan(30) * 1.75;
|
||||
render(0) {
|
||||
translate([0,0,-l]) cylinder(d=4,h=l,$fn=10);
|
||||
|
||||
translate([0,0,-ht]) cylinder(h=ht,d2=7.5,d1=4,$fn=20);
|
||||
|
||||
cylinder(d=2,h=40,$fn=10);
|
||||
translate([0,0,-l-0.5]) sphere(d=3.5,$fn=10);
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
/*module rivet4(l) {
|
||||
render(0) difference() {
|
||||
union() {
|
||||
translate([0,0,-l]) cylinder(d=4,h=l,$fn=10);
|
||||
intersection() {
|
||||
translate([0,0,-1]) sphere(r=4,$fn=20);
|
||||
cylinder(h=1,d=8,$fn=20);
|
||||
}
|
||||
|
||||
intersection() {
|
||||
translate([0,0,-l]) sphere(d=5.5,$fn=10);
|
||||
translate([-4,-4,-l-4]) cube([8,8,4]);
|
||||
}
|
||||
}
|
||||
|
||||
translate([0,0,-2]) cylinder(d=2,h=3,$fn=10);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
translate([-10,0,0]) rivet4(8);
|
||||
translate([10,0,0]) screwNut(4,12,8);
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
module rondelle(dInt,dExt,epaisseur=0.8) {
|
||||
render() linear_extrude(height=epaisseur) difference() {
|
||||
circle(d=dExt,$fn=fnCylindre);
|
||||
circle(d=dInt,$fn=fnCylindre);
|
||||
}
|
||||
echo(str("RONDELLE;",dInt, "x", dExt,"x",epaisseur));
|
||||
}
|
||||
|
||||
|
||||
|
||||
// tensionner();
|
||||
|
||||
module tensionner(a = 50) {
|
||||
a2 = a + atan(1.5/7.5);
|
||||
r2 = sqrt(pow(1.5,2)+pow(7.5,2));
|
||||
z = cos(a2) * r2 + 0.5;
|
||||
|
||||
translate([0,-0.5,z])
|
||||
{
|
||||
translate([0,8,0]) rotate([90,0,0]) difference() {
|
||||
cylinder(d=4,h=9,$fn=20);
|
||||
translate([0,0,-1]) cylinder(d=2,h=11,$fn=20);
|
||||
}
|
||||
|
||||
rotate([0,-a,0])
|
||||
{
|
||||
translate([1.5,-0.5,-7.5]) cylinder(d=1,h=7.5,$fn=12);
|
||||
translate([1.5,-0.5,-7.5]) rotate([-90,0,0]) cylinder(d=1,h=8,$fn=12);
|
||||
translate([1.5,7.5,-7.5]) cylinder(d=1,h=3.5,$fn=12);
|
||||
translate([1.5,-0.5,-7.5]) sphere(d=1,$fn=10);
|
||||
translate([1.5,7.5,-7.5]) sphere(d=1,$fn=10);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
rotate([0,a,0]) {
|
||||
translate([-1.5,7.5,-7.5]) cylinder(d=1,h=7.5,$fn=12);
|
||||
translate([-1.5,-0.5,-7.5]) rotate([-90,0,0]) cylinder(d=1,h=8,$fn=12);
|
||||
translate([-1.5,-0.5,-7.5]) cylinder(d=1,h=4,$fn=12);
|
||||
translate([-1.5,-0.5,-7.5]) sphere(d=1,$fn=10);
|
||||
translate([-1.5,7.5,-7.5]) sphere(d=1,$fn=10);
|
||||
}
|
||||
}
|
||||
echo(str("tensionner;"));
|
||||
}
|
||||
17
supportEndstop.scad
Normal file
17
supportEndstop.scad
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
linear_extrude(height=2) {
|
||||
rotate(-30) union() {
|
||||
difference() {
|
||||
union() {
|
||||
circle(d=36,$fn=100);
|
||||
translate([-11,-17.5-2]) square([22,10]);
|
||||
}
|
||||
circle(d=28.5,$fn=100);
|
||||
translate([-8.75,-17.5]) square([17.5,10]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
translate([sin(30)*8-5,15]) square([10,9-4.2]);
|
||||
translate([sin(30)*8-1.3,24-4.2]) square([2.6,5]);
|
||||
echo(str("216-spportendstop"));
|
||||
}
|
||||
209
timing_belts.scad
Normal file
209
timing_belts.scad
Normal file
|
|
@ -0,0 +1,209 @@
|
|||
//https://www.thingiverse.com/thing:194554/#files
|
||||
/*Parametric belting section generator
|
||||
* types GT2 2mm T2.5 T5 T10 MXL
|
||||
*
|
||||
* (c) ALJ_rprp
|
||||
*
|
||||
* Derived from http://www.thingiverse.com/
|
||||
* thing:19758 By The DoomMeister
|
||||
* thing:16627 by Droftarts
|
||||
*
|
||||
* licence GPL 2.1 or later
|
||||
*
|
||||
* deal properly with ends
|
||||
* allow circular segments
|
||||
* length is given in mm not nb of teeth
|
||||
* belt is centered at z=0 and extend along x
|
||||
*
|
||||
* TODO : add ofset for cosmetic teeth liaisons between segments
|
||||
*
|
||||
* usage :
|
||||
* belt_angle(prf = tT2_5, rad=25, bwdth = 6, angle=90,fn=128)
|
||||
* belt_len (prf = tT2_5, belt_width = 6, len = 10)
|
||||
*/
|
||||
|
||||
|
||||
// profiles
|
||||
tGT2_2=0;
|
||||
tT2_5 =1;
|
||||
tT5 =2;
|
||||
tT10 =3;
|
||||
tMXL =4;
|
||||
|
||||
//test_belt();
|
||||
/*r = 32/3.14159/2;
|
||||
translate([418,-r,0]) belt_angle(tGT2_2,r,6,180);
|
||||
translate([418,r,0]) rotate([0,0,180]) belt_len(tGT2_2,6,418);
|
||||
translate([0,r,0]) rotate([0,0,180]) belt_angle(tGT2_2,r,6,180);
|
||||
translate([0,-r,0]) rotate([0,0,0]) belt_len(tGT2_2,6,418);*/
|
||||
|
||||
module test_belt() {
|
||||
translate([-00.5,0,5.5])cube([1,40,1]);
|
||||
|
||||
belt_len(profile = tT10, belt_width = 10, len = 100);
|
||||
translate([0,0,-20])color("red")belt_len(profile = tT5, belt_width = 10, len = 100);
|
||||
translate([0,0,-40])color("green")belt_len(profile = tT2_5, belt_width = 10, len = 80);
|
||||
translate([0,0,-60])color("blue")belt_len(profile = tGT2_2, belt_width = 10, len = 100);
|
||||
translate([0,0,-80])color("orange")belt_len(profile = tMXL, belt_width = 10, len = 100);
|
||||
|
||||
translate([0,0,-0]) belt_angle(tT10,20,10,180);
|
||||
translate([0,0,-20]) belt_angle(tT5,15,10,90);
|
||||
translate([0,0,-40]) belt_angle(tT2_5,25,10,120);
|
||||
translate([0,0,-60]) belt_angle(tGT2_2,30,10,40);
|
||||
translate([0,0,-80]) belt_angle(tMXL,30,10,40);
|
||||
|
||||
|
||||
translate([0,0,-100])color("aquamarine") {
|
||||
belt_len(tT2_5,10, 50);
|
||||
translate([50,30,0]) rotate([0,0,180]) belt_len(tT2_5,10,50);
|
||||
translate([ 0,30,0]) rotate([0,0,180]) belt_angle(tT2_5,15,10,180);
|
||||
translate([50,0,0]) rotate([0,0,0]) belt_angle(tT2_5,15,10,180);
|
||||
}
|
||||
}
|
||||
|
||||
/* there is no partial rotate extrude in scad, hence the workaround
|
||||
* note that the pie slice will silently drop angles > 360 */
|
||||
module p_slice(radius, angle,height,back_t=0.6) {
|
||||
pt_slc = [[0,radius],
|
||||
[0 ,-back_t],
|
||||
[radius,-back_t],
|
||||
[radius+back_t,radius],
|
||||
[radius+back_t,radius*2],
|
||||
[0,radius*2+back_t],
|
||||
[-radius-back_t,radius*2+back_t],
|
||||
[-radius-back_t,radius],
|
||||
[-radius-back_t,-back_t],
|
||||
[(radius+back_t)*sin(angle),(radius+back_t)*(1-cos(angle))-back_t]];
|
||||
|
||||
if (angle<=90) {
|
||||
linear_extrude(height+0.2, center=true)
|
||||
polygon( points = pt_slc,
|
||||
paths=[[0,1,2,9]]);
|
||||
}else if (angle<=180){
|
||||
linear_extrude(height+0.2, center=true)
|
||||
polygon( points = pt_slc,
|
||||
paths=[[0,1,2,3,4,9]]);
|
||||
}else if (angle<=270){
|
||||
linear_extrude(height+0.2, center=true)
|
||||
polygon( points = pt_slc,
|
||||
paths=[[0,1,2,3,4,5,6,9]]);
|
||||
}else if (angle<360) {
|
||||
linear_extrude(height+0.2, center=true)
|
||||
polygon( points = pt_slc,
|
||||
paths=[[0,1,2,3,4,5,6,7,8,9]]);
|
||||
}
|
||||
}
|
||||
|
||||
dp=5;
|
||||
|
||||
module belt_angle(prf = tT2_5, rad=25, bwdth = 6, angle=90,fn=128) {
|
||||
av=360/2/rad/3.14159*tpitch[prf];
|
||||
bk=bk_thick[prf];
|
||||
|
||||
nn=ceil(angle/av);
|
||||
ang=av*nn;
|
||||
intersection(){
|
||||
p_slice(rad,angle,bwdth,bk_thick[prf]);
|
||||
union () {
|
||||
for( i = [0:nn]){
|
||||
render() translate ([0,rad,-bwdth/2])rotate ([0,0,av*i])translate ([0,-rad,0])
|
||||
draw_tooth(prf,0,bwdth);
|
||||
}
|
||||
translate ([0,rad,-bwdth/2]) rotate_extrude(angle = 90, $fn=fn)
|
||||
polygon([[rad,0],[rad+bk,0],[rad+bk,bwdth],[rad,bwdth]]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Outer Module
|
||||
module belt_len(profile = tT2_5, belt_width = 6, len = 10){
|
||||
if ( profile == tT2_5 ) { _belt_len(prf=profile,len = len,bwdth = belt_width);}
|
||||
if ( profile == tT5 ) { _belt_len(prf=profile,len = len,bwdth = belt_width);}
|
||||
if ( profile == tT10 ) { _belt_len(prf=profile,len = len,bwdth = belt_width);}
|
||||
if ( profile == tMXL ) { _belt_len(prf=profile,len = len,bwdth = belt_width);}
|
||||
if ( profile == tGT2_2 ){ _belt_len(prf=profile,len = len,bwdth = belt_width);}
|
||||
}
|
||||
|
||||
//inner module
|
||||
module _belt_len(prf = -1, len = 10, bwdth = 5) {
|
||||
|
||||
n=ceil(len/tpitch[prf]);
|
||||
|
||||
translate ([0,0,-bwdth/2]) intersection() {
|
||||
union(){
|
||||
for( i = [0:n]) {
|
||||
render() draw_tooth(prf,i,bwdth);
|
||||
}
|
||||
translate([-1,-bk_thick[prf],0])cube([len+1,bk_thick[prf],bwdth]);
|
||||
}
|
||||
translate([0,-bk_thick[prf],0])cube([len,max_h[prf]+bk_thick[prf],bwdth]);
|
||||
}
|
||||
}
|
||||
|
||||
module draw_tooth(prf,i,bwdth) {
|
||||
if ( prf == tT2_5 ) { translate([tpitch[prf]*i,0,0])
|
||||
linear_extrude(height=bwdth) polygon(pf_T2_5);}
|
||||
if ( prf == tT5 ) { translate([tpitch[prf]*i,0,0])
|
||||
linear_extrude(height=bwdth) polygon(pf_T5);}
|
||||
if ( prf == tT10 ) { translate([tpitch[prf]*i,0,0])
|
||||
linear_extrude(height=bwdth) polygon(pf_T10);}
|
||||
if ( prf == tMXL ) { translate([tpitch[prf]*i,0,0])
|
||||
linear_extrude(height=bwdth) polygon(pf_MXL);}
|
||||
if ( prf == tGT2_2 ) { translate([tpitch[prf]*i,0,0])
|
||||
linear_extrude(height=bwdth) polygon(pf_GT2_2);}
|
||||
}
|
||||
|
||||
/************************************
|
||||
* DATA TABLES *
|
||||
************************************/
|
||||
tpitch = [2,2.5,5,10,2.032];
|
||||
bk_thick=[0.6,0.6,1,2,0.64];
|
||||
max_h=[0.76447, 0.699911, 1.189895, 2.499784, 0.508035];
|
||||
|
||||
pf_GT2_2= [[ 0.747183,-0.5 ],[ 0.747183, 0 ],[ 0.647876, 0.037218],
|
||||
[ 0.598311, 0.130528],[ 0.578556, 0.238423],[ 0.547158, 0.343077],
|
||||
[ 0.504649, 0.443762],[ 0.451556, 0.53975 ],[ 0.358229, 0.636924],
|
||||
[ 0.2484 , 0.707276],[ 0.127259, 0.750044],[ 0 , 0.76447 ],
|
||||
[-0.127259, 0.750044],[-0.2484 , 0.707276],[-0.358229, 0.636924],
|
||||
[-0.451556, 0.53975 ],[-0.504797, 0.443762],[-0.547291, 0.343077],
|
||||
[-0.578605, 0.238423],[-0.598311, 0.130528],[-0.648009, 0.037218],
|
||||
[-0.747183, 0 ],[-0.747183,-0.5]];
|
||||
pf_T2_5= [[-0.839258,-0.5 ],[-0.839258, 0 ],[-0.770246, 0.021652],
|
||||
[-0.726369, 0.079022],[-0.529167, 0.620889],[-0.485025, 0.67826 ],
|
||||
[-0.416278, 0.699911],[ 0.416278, 0.699911],[ 0.484849, 0.67826 ],
|
||||
[ 0.528814, 0.620889],[ 0.726369, 0.079022],[ 0.770114, 0.021652],
|
||||
[ 0.839258, 0 ],[ 0.839258,-0.5]];
|
||||
pf_T5= [[-1.632126,-0.5 ],[-1.632126, 0 ],[-1.568549, 0.004939],
|
||||
[-1.507539, 0.019367],[-1.450023, 0.042686],[-1.396912, 0.074224],
|
||||
[-1.349125, 0.113379],[-1.307581, 0.159508],[-1.273186, 0.211991],
|
||||
[-1.246868, 0.270192],[-1.009802, 0.920362],[-0.983414, 0.978433],
|
||||
[-0.949018, 1.030788],[-0.907524, 1.076798],[-0.859829, 1.115847],
|
||||
[-0.80682 , 1.147314],[-0.749402, 1.170562],[-0.688471, 1.184956],
|
||||
[-0.624921, 1.189895],[ 0.624971, 1.189895],[ 0.688622, 1.184956],
|
||||
[ 0.749607, 1.170562],[ 0.807043, 1.147314],[ 0.860055, 1.115847],
|
||||
[ 0.907754, 1.076798],[ 0.949269, 1.030788],[ 0.9837 , 0.978433],
|
||||
[ 1.010193, 0.920362],[ 1.246907, 0.270192],[ 1.273295, 0.211991],
|
||||
[ 1.307726, 0.159508],[ 1.349276, 0.113379],[ 1.397039, 0.074224],
|
||||
[ 1.450111, 0.042686],[ 1.507589, 0.019367],[ 1.568563, 0.004939],
|
||||
[ 1.632126, 0 ],[ 1.632126,-0.5]];
|
||||
pf_T10= [[-3.06511 ,-1 ],[-3.06511 , 0 ],[-2.971998, 0.007239],
|
||||
[-2.882718, 0.028344],[-2.79859 , 0.062396],[-2.720931, 0.108479],
|
||||
[-2.651061, 0.165675],[-2.590298, 0.233065],[-2.539962, 0.309732],
|
||||
[-2.501371, 0.394759],[-1.879071, 2.105025],[-1.840363, 2.190052],
|
||||
[-1.789939, 2.266719],[-1.729114, 2.334109],[-1.659202, 2.391304],
|
||||
[-1.581518, 2.437387],[-1.497376, 2.47144 ],[-1.408092, 2.492545],
|
||||
[-1.314979, 2.499784],[ 1.314979, 2.499784],[ 1.408091, 2.492545],
|
||||
[ 1.497371, 2.47144 ],[ 1.581499, 2.437387],[ 1.659158, 2.391304],
|
||||
[ 1.729028, 2.334109],[ 1.789791, 2.266719],[ 1.840127, 2.190052],
|
||||
[ 1.878718, 2.105025],[ 2.501018, 0.394759],[ 2.539726, 0.309732],
|
||||
[ 2.59015 , 0.233065],[ 2.650975, 0.165675],[ 2.720887, 0.108479],
|
||||
[ 2.798571, 0.062396],[ 2.882713, 0.028344],[ 2.971997, 0.007239],
|
||||
[ 3.06511 , 0 ],[ 3.06511 ,-1]];
|
||||
pf_MXL= [[-0.660421,-0.5 ],[-0.660421, 0 ],[-0.621898, 0.006033],
|
||||
[-0.587714, 0.023037],[-0.560056, 0.049424],[-0.541182, 0.083609],
|
||||
[-0.417357, 0.424392],[-0.398413, 0.458752],[-0.370649, 0.48514 ],
|
||||
[-0.336324, 0.502074],[-0.297744, 0.508035],[ 0.297744, 0.508035],
|
||||
[ 0.336268, 0.502074],[ 0.370452, 0.48514 ],[ 0.39811 , 0.458752],
|
||||
[ 0.416983, 0.424392],[ 0.540808, 0.083609],[ 0.559752, 0.049424],
|
||||
[ 0.587516, 0.023037],[ 0.621841, 0.006033],[ 0.660421, 0 ],
|
||||
[ 0.660421,-0.5]];
|
||||
1225
views.scad
Normal file
1225
views.scad
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue