OpenBeeLab/assembly.scad
2025-12-02 16:13:28 +01:00

753 lines
26 KiB
OpenSCAD

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]);
*/