======Partie 3 (rodMountPlunger)====== {{:wiki:projets:pousse-seringue:snip20160416_4.png?300|}} include /* === Model-specific Constants === */ //add some clearance, we don't want this against the 8020 rails spaceAboveFloor = 2; //plunger plungerDiameter = 26.5; plungerThickness = 2.2; plungerInnerDiameter = 15; plungerClipThickness = 3; plungerWellDepth = plungerThickness + plungerClipThickness; //trap nut nutAcross = 13.2; nutDepth = 6.5; nutWellDepth = nutDepth + 0.05; //tight so it won't rattle nutWallThicknessFront = plungerWellDepth+3; nutWallThicknessBack = 4; nutSlotSizeX = nutWallThicknessFront; nutSlotSizeY = nutAcross; nutSlotSizeZ = nutAcross/2; //linear bearing LM8UU_dia = 15.4; LM8UU_length = 24; //cube containing nut, linear bearing, and plunger mountXSize = nutWellDepth + nutWallThicknessFront + nutWallThicknessBack; mountZSize = syringeCenterHeight + plungerDiameter/2 + 3; /* === Model === */ //main cube, holds the two axes difference(){ translate([0,0,spaceAboveFloor]){ cube(size=[mountXSize,baseSizeY,mountZSize]); } //nut translate([-floatCorrection+nutWallThicknessFront,centerY,threadedAxisHeight]){ rotate(a=[0,90,0]){ nutWell(); } //nut insertion slot translate([0,0,nutAcross/sqrt(3)]){ rotate(a=[0,90,0]){ nutWell(); } } translate([nutWellDepth,0,nutAcross/sqrt(3)]){ rotate(a=[0,90,0]){ nutWell(); } } } //bore hole for threaded rod translate([-floatCorrection,centerY,threadedAxisHeight]){ rotate(a=[0,90,0]){ cylinder(h=mountXSize+floatCorrection2, r=smoothRodRadius); } } //hole for LM8UU translate([-floatCorrection,centerY,smoothAxisHeight]){ rotate(a=[0,90,0]){ bearingLM8UU(); } } //U-shaped hole for syringe plunger to go in translate([plungerClipThickness,centerY,syringeCenterHeight]){ rotate(a=[0,90,0]){ cylinder(h=plungerThickness, r=plungerDiameter/2); } translate([0,-plungerDiameter/2,0]){ cube(size=[plungerThickness,plungerDiameter,mountZSize]); } } translate([-floatCorrection,centerY,syringeCenterHeight]){ rotate(a=[0,90,0]){ cylinder(h=plungerClipThickness+floatCorrection2, r=plungerInnerDiameter/2); } translate([0,-plungerInnerDiameter/2,0]){ cube(size=[plungerClipThickness+floatCorrection2,plungerInnerDiameter,mountZSize]); } } //remove excess volume from sides translate([-floatCorrection,centerY+plungerDiameter/2 + 4,0]){ cube(size=[mountXSize + floatCorrection2, baseSizeY, mountZSize+spaceAboveFloor]); } cube(size=[mountXSize + floatCorrection2, centerY-plungerDiameter/2-4, mountZSize+spaceAboveFloor]); } module nutWell(){ //compose the outline of the 6-sided nut using 3 cubes. Yay geometry. nutEdgeLength = nutAcross / (sqrt(3)); translate([-nutEdgeLength/2, -nutAcross/2, 0]){ cube(size=[nutEdgeLength,nutAcross,nutWellDepth+floatCorrection2]); } rotate(a=[0,0,60]){ translate([-nutEdgeLength/2, -nutAcross/2, 0]){ cube(size=[nutEdgeLength,nutAcross,nutWellDepth+floatCorrection2]); } } rotate(a=[0,0,-60]){ translate([-nutEdgeLength/2, -nutAcross/2, 0]){ cube(size=[nutEdgeLength,nutAcross,nutWellDepth+floatCorrection2]); } } } module bearingLM8UU(){ cylinder(h=LM8UU_length, r=LM8UU_dia/2); }