1
0
mirror of https://github.com/nophead/Mendel90.git synced 2025-01-16 20:38:15 +01:00
Mendel90/scad/fan-guard.scad
2016-01-05 10:58:01 +00:00

56 lines
1.5 KiB
OpenSCAD

//
// Mendel90
//
// GNU GPL v2
// nop.head@gmail.com
// hydraraptor.blogspot.com
//
//
//
include <conf/config.scad>
thickness = 2;
nozzle = 0.45;
//wall = 2 * filament_width - layer_height * (PI / 4 - 0.5);
wall = filament_width - layer_height / 2 + nozzle / 2 + filament_width / 2;
finger_width = 7;
spokes = 4;
function fan_guard_thickness() = thickness;
module fan_guard(type) {
stl("fan_guard");
hole_pitch = fan_hole_pitch(type);
screw = fan_screw(type);
corner_radius = washer_diameter(screw_washer(screw)) / 2 + 1;
width = max(2 * (hole_pitch + corner_radius), fan_bore(type) + 2 * wall);
hole = fan_bore(type) / 2;
rings = ceil(hole / (wall + finger_width)) - 1;
inner_ring = hole - rings * (wall + finger_width);
union() {
difference() {
rounded_rectangle([width, width, thickness], r = width / 2 - hole_pitch, center = false);
fan_holes(type, true);
}
for(i = [1 : rings])
difference() {
cylinder(r = hole - i * (wall + finger_width) + wall / 2, h = thickness);
cylinder(r = hole - i * (wall + finger_width) - wall / 2, h = 2 * thickness + 1, center = true);
}
for(i = [0 : spokes - 1])
rotate([0, 0, i * 360 / spokes + 180 / spokes - 90])
translate([inner_ring, -wall / 2, 0])
cube([hole - inner_ring + eta, wall, thickness]);
}
}
module fan_guard_stl() fan_guard(case_fan);
fan_guard(fan80x38);
//fan_guard(fan60x25);