1
0
Fork 0
3d/lawnmower washer.scad

64 lines
2.6 KiB
OpenSCAD

// Lawnmower washer square thing
// length units are millimeters
tolerance = 1.00;
topMetalWasherLength = 45.00 + tolerance; // this is (basically) square
innerShaftDiameter = 22.30;
bulbsLength = 32.40;
bulbsDiameter = 11.60;
bladeWidth = 44.40 + tolerance;
washerThickness = 2.00;
metalWasherThickness = 3.46;
bladeThickness = 2.24;
minGuideRidgeThickness = 3.00;
innerShaftRadius = innerShaftDiameter / 2;
bulbRadius = bulbsDiameter / 2;
washerLength = max(topMetalWasherLength, bladeWidth) + (minGuideRidgeThickness * 2);
bladeRidgeThickness = max(minGuideRidgeThickness, (washerLength - bladeWidth) / 2);
metalWasherRidgeThickness = max(minGuideRidgeThickness, (washerLength - topMetalWasherLength) / 2);
circleResolution=360*4; // faces per rotation
zFightingOffset=0.01; // offset for shape subtraction
module shaft(height) {
cylinder(r=innerShaftRadius, h=height, $fn=circleResolution);
translate([-(bulbsLength - (bulbRadius * 2)) / 2,-bulbRadius,0])
cube([bulbsLength - (bulbRadius * 2), bulbRadius * 2, height]);
translate([innerShaftRadius, 0, 0])
cylinder(r=bulbRadius, h=height, $fn=circleResolution);
translate([-innerShaftRadius, 0, 0])
cylinder(r=bulbRadius, h=height, $fn=circleResolution);
}
difference() {
translate([-washerLength / 2, -washerLength / 2, 0]) {
cube([washerLength, washerLength, washerThickness]);
// blade ridges
translate([0, washerLength / 2, washerThickness - zFightingOffset]) {
translate([0, - (bladeWidth / 2) - bladeRidgeThickness,0])
cube([washerLength, bladeRidgeThickness, bladeThickness]);
translate([0, bladeWidth / 2,0])
cube([washerLength, bladeRidgeThickness, bladeThickness]);
}
// metal washer ridges
translate([washerLength / 2, 0, - washerThickness + zFightingOffset]) {
translate([-(topMetalWasherLength / 2) - metalWasherRidgeThickness, 0,0])
cube([metalWasherRidgeThickness, washerLength, metalWasherThickness]);
translate([topMetalWasherLength / 2,0,0])
cube([metalWasherRidgeThickness, washerLength, metalWasherThickness]);
}
}
translate([0,0,-zFightingOffset])
rotate([0,0,0])
shaft(washerThickness + (zFightingOffset * 2));
/*
// blade stand-in
translate([-50, -bladeWidth/2, washerThickness])
#cube([100, bladeWidth, bladeThickness]);
// top metal washer stand-in
translate([-topMetalWasherLength/2, -topMetalWasherLength/2, -metalWasherThickness])
#cube([topMetalWasherLength, topMetalWasherLength, metalWasherThickness]);
*/
}