diff --git a/lawnmower washer.scad b/lawnmower washer.scad index 9df732f..651fefa 100644 --- a/lawnmower washer.scad +++ b/lawnmower washer.scad @@ -7,11 +7,14 @@ innerShaftDiameter = 22.30; bulbsLength = 32.40; bulbsDiameter = 11.60; bladeWidth = 44.40 + tolerance; -washerThickness = 2.00; -metalWasherThickness = 3.46; -bladeThickness = 2.24; +washerThickness = 3.00; // 2.00; +metalWasherThickness = 4.00; // 3.46; +bladeThickness = 2.50; // 2.24; -minGuideRidgeThickness = 3.00; +minGuideRidgeThickness = 8.00; // 3.00; + +bladeBumpWidth = bladeWidth * 0.3333; +bladeBumpHeight = bladeThickness; innerShaftRadius = innerShaftDiameter / 2; bulbRadius = bulbsDiameter / 2; @@ -19,6 +22,8 @@ washerLength = max(topMetalWasherLength, bladeWidth) + (minGuideRidgeThickness * bladeRidgeThickness = max(minGuideRidgeThickness, (washerLength - bladeWidth) / 2); metalWasherRidgeThickness = max(minGuideRidgeThickness, (washerLength - topMetalWasherLength) / 2); +bladeBumpOffsetFromCenter = washerLength * 0.375; + circleResolution=360*4; // faces per rotation zFightingOffset=0.01; // offset for shape subtraction @@ -32,6 +37,17 @@ module shaft(height) { cylinder(r=bulbRadius, h=height, $fn=circleResolution); } +module bump(length, width, height) { + translate([0, width/2, height]) + scale([length, width / 2, height]) + rotate([0, 90, 0]) + cylinder(r=1, h=1, $fn=circleResolution); + translate([0, 0, height]) + cube([length, width, height + zFightingOffset]); +} + +//bump(washerLength, bladeBumpWidth + zFightingOffset, washerThickness); + difference() { translate([-washerLength / 2, -washerLength / 2, 0]) { cube([washerLength, washerLength, washerThickness]); @@ -42,17 +58,33 @@ difference() { translate([0, bladeWidth / 2,0]) cube([washerLength, bladeRidgeThickness, bladeThickness]); } - // metal washer ridges - translate([washerLength / 2, 0, - washerThickness + zFightingOffset]) { + // metal washer ridges (standard) + translate([washerLength / 2, 0, - metalWasherThickness + zFightingOffset]) { translate([-(topMetalWasherLength / 2) - metalWasherRidgeThickness, 0,0]) cube([metalWasherRidgeThickness, washerLength, metalWasherThickness]); translate([topMetalWasherLength / 2,0,0]) cube([metalWasherRidgeThickness, washerLength, metalWasherThickness]); } + // metal washer ridges (optional) + translate([0, washerLength / 2, - metalWasherThickness + zFightingOffset]) { + translate([0, -(topMetalWasherLength / 2) - metalWasherRidgeThickness,0]) + cube([washerLength, metalWasherRidgeThickness, metalWasherThickness]); + translate([0, topMetalWasherLength / 2,0]) + cube([washerLength, metalWasherRidgeThickness, metalWasherThickness]); + } } - translate([0,0,-zFightingOffset]) + translate([0,0,-zFightingOffset]) { + // shaft rotate([0,0,0]) shaft(washerThickness + (zFightingOffset * 2)); + // blade shaft bumps + translate([0, -bladeBumpWidth/2, washerThickness - bladeBumpHeight]) { + translate([-(washerLength + bladeBumpOffsetFromCenter), 0, 0]) + bump(washerLength, bladeBumpWidth + zFightingOffset, washerThickness); + translate([bladeBumpOffsetFromCenter, 0, 0]) + bump(washerLength, bladeBumpWidth + zFightingOffset, washerThickness); + } + } /* // blade stand-in translate([-50, -bladeWidth/2, washerThickness]) diff --git a/lawnmower washer.stl b/lawnmower washer.stl index 5e322c9..12a5019 100644 Binary files a/lawnmower washer.stl and b/lawnmower washer.stl differ diff --git a/monitor headphone mount.scad b/monitor headphone mount.scad index 242cbb1..bc067ca 100644 --- a/monitor headphone mount.scad +++ b/monitor headphone mount.scad @@ -18,13 +18,14 @@ screenBaseThickness = 45.00; mountProtrusionFromScreenBack = 33.10; headphoneArmLength = 50.00; -miscThickness = 6.00; +horizontalThickness = 8.00; +verticalThickness = 6.50; circleResolution=360*4; // faces per rotation union() { - translate([0, 0, mountToScreenBottomHeight + miscThickness]) mountEnd(miscThickness); - headphoneMount(miscThickness); + translate([0, 0, mountToScreenBottomHeight + horizontalThickness]) mountEnd(verticalThickness); + headphoneMount(horizontalThickness, verticalThickness); //mountEnd(miscThickness); } @@ -49,31 +50,31 @@ module mountEnd(thickness) { } } -module headphoneMount(thickness) { +module headphoneMount(zThickness, yThickness) { // stock down from monitor mount to clear bottom of monitor - cube([mountWidthEnd, thickness, mountToScreenBottomHeight + thickness]); + cube([mountWidthEnd, yThickness, mountToScreenBottomHeight + zThickness]); //color("red") cube([mountWidthEnd, thickness + screenBaseThickness + mountProtrusionFromScreenBack, thickness]); // quarter circle under monitor translate ([mountWidthEnd/2, screenBaseThickness + mountProtrusionFromScreenBack, 0]) difference() { - cylinder(r = screenBaseThickness + mountProtrusionFromScreenBack, h = thickness, $fn=circleResolution); + cylinder(r = screenBaseThickness + mountProtrusionFromScreenBack, h = zThickness, $fn=circleResolution); translate([0,0,-0.01]) - cylinder(r = (screenBaseThickness + mountProtrusionFromScreenBack) - (mountWidthEnd), h = thickness + 0.02, $fn=circleResolution); - translate([-(screenBaseThickness + mountProtrusionFromScreenBack) - 0.01, thickness, -0.01]) - cube([(screenBaseThickness + mountProtrusionFromScreenBack) * 2.01, (screenBaseThickness + mountProtrusionFromScreenBack), thickness + 0.02]); + cylinder(r = (screenBaseThickness + mountProtrusionFromScreenBack) - (mountWidthEnd), h = zThickness + 0.02, $fn=circleResolution); + translate([-(screenBaseThickness + mountProtrusionFromScreenBack) - 0.01, yThickness, -0.01]) + cube([(screenBaseThickness + mountProtrusionFromScreenBack) * 2.01, (screenBaseThickness + mountProtrusionFromScreenBack), zThickness + 0.02]); translate([mountWidthEnd/2, -(screenBaseThickness + mountProtrusionFromScreenBack)-0.01, -0.01]) - cube([screenBaseThickness + mountProtrusionFromScreenBack, screenBaseThickness + mountProtrusionFromScreenBack + thickness+0.02, thickness + 0.02]); + cube([screenBaseThickness + mountProtrusionFromScreenBack, screenBaseThickness + mountProtrusionFromScreenBack + yThickness+0.02, zThickness + 0.02]); } // right angle connection reinforcement quarter circle difference() { - cube([mountWidthEnd, mountWidthEnd + 0.25, mountWidthEnd + thickness]); - translate([-0.01, mountWidthEnd + thickness, mountWidthEnd + thickness]) + cube([mountWidthEnd, mountWidthEnd + 0.25, mountWidthEnd + zThickness]); + translate([-0.01, mountWidthEnd + yThickness, mountWidthEnd + zThickness]) rotate([0,90,0]) cylinder(r = mountWidthEnd * 1.02, h = mountWidthEnd + 0.02, $fn=circleResolution); } // headphone arm - translate([-(screenBaseThickness + mountProtrusionFromScreenBack) + (mountWidthEnd / 2), (screenBaseThickness + mountProtrusionFromScreenBack + thickness), 0]) { - cube([mountWidthEnd,headphoneArmLength + thickness,thickness]); - translate([0, headphoneArmLength + thickness, 0]) - cube([mountWidthEnd, thickness, thickness * 2]); + translate([-(screenBaseThickness + mountProtrusionFromScreenBack) + (mountWidthEnd / 2), (screenBaseThickness + mountProtrusionFromScreenBack + yThickness), 0]) { + cube([mountWidthEnd,headphoneArmLength + yThickness,zThickness]); + translate([0, headphoneArmLength + yThickness, 0]) + cube([mountWidthEnd, yThickness / 2, zThickness * 2]); } } \ No newline at end of file diff --git a/monitor headphone mount.stl b/monitor headphone mount.stl index 7082379..01d610a 100644 Binary files a/monitor headphone mount.stl and b/monitor headphone mount.stl differ