Update fan logic to handle larger fan sizes better. Improved positioning and placement of fan parts.
This commit is contained in:
@@ -2421,61 +2421,40 @@ module fan_mask(size, thick, style) {
|
||||
size == 70 ? 61.9 :
|
||||
size == 80 ? 71.5 :
|
||||
size * 0.8; // Use 80% as default
|
||||
bar_width = size < 40 ? 2 : 3;
|
||||
ring_width = size <= 40 ? 3 : 8;
|
||||
|
||||
screw_offset = (size - inner) / 2;
|
||||
translate_xy = size * 0.5;
|
||||
rings = 5;
|
||||
base_ring_size = (size * 0.9) / rings;
|
||||
ring_height = thick + 2;
|
||||
ring_diff_height = ring_height + 2;
|
||||
rings = size <= 40 ? 4 : 6;
|
||||
bar_size = size <= 40 ? 2 : 3;
|
||||
|
||||
translate([0, 0, -1]) difference() {
|
||||
screw_offset = inner / 2;
|
||||
center_point = size * 0.5;
|
||||
base_ring_size = size * 0.9;
|
||||
rings_spacing = size / rings;
|
||||
|
||||
translate([size/2, size/2, -1])
|
||||
union() {
|
||||
translate([screw_offset, screw_offset, (thick+2)/2]) cylinder(d=3, h=thick+2, center=true);
|
||||
translate([-screw_offset, screw_offset, (thick+2)/2]) cylinder(d=3, h=thick+2, center=true);
|
||||
translate([screw_offset, -screw_offset, (thick+2)/2]) cylinder(d=3, h=thick+2, center=true);
|
||||
translate([-screw_offset, -screw_offset, (thick+2)/2]) cylinder(d=3, h=thick+2, center=true);
|
||||
|
||||
difference() {
|
||||
union() {
|
||||
// screw holes
|
||||
translate([screw_offset, screw_offset, 0]) cylinder(d=3, h=thick+2);
|
||||
translate([size-screw_offset, screw_offset, 0]) cylinder(d=3, h=thick+2);
|
||||
translate([screw_offset, size-screw_offset, 0]) cylinder(d=3, h=thick+2);
|
||||
translate([size-screw_offset, size-screw_offset, 0]) cylinder(d=3, h=thick+2);
|
||||
|
||||
// fan grates;
|
||||
for(i=[0:rings]) {
|
||||
difference() {
|
||||
translate([translate_xy, translate_xy, 0]) cylinder(d=base_ring_size * i, h=ring_height);
|
||||
translate([translate_xy, translate_xy, -1]) cylinder(d=base_ring_size * i - ring_width, h=ring_diff_height);
|
||||
}
|
||||
}
|
||||
for(i=[inner:-rings_spacing:0]) {
|
||||
difference() {
|
||||
translate ([size/2,size/2,-1]) cylinder(h=thick+2, d=size-10);
|
||||
translate ([size/2,size/2,-2]) cylinder(h=thick+4, d=size-14);
|
||||
echo("Ring", base_ring_size - i);
|
||||
echo("Ring Cut", base_ring_size - i - (rings_spacing/2));
|
||||
cylinder(d=base_ring_size - i, h=thick+2);
|
||||
translate([0, 0, -1]) cylinder(d=base_ring_size - i - (rings_spacing/2), h=thick+4);
|
||||
}
|
||||
difference() {
|
||||
translate ([size/2,size/2,-1]) cylinder(h=thick+2, d=size-18);
|
||||
translate ([size/2,size/2,-2]) cylinder(h=thick+4, d=size-22);
|
||||
}
|
||||
difference() {
|
||||
translate ([size/2,size/2,-1]) cylinder(h=thick+2, d=size-26);
|
||||
translate ([size/2,size/2,-2]) cylinder(h=thick+4, d=size-30);
|
||||
}
|
||||
difference() {
|
||||
translate ([size/2,size/2,-1]) cylinder(h=thick+2, d=size-34);
|
||||
translate ([size/2,size/2,-2]) cylinder(h=thick+4, d=size-38);
|
||||
}
|
||||
// translate ([size/2,size/2,-2]) cylinder(h=thick+4, d=size-34);
|
||||
// mount holes
|
||||
translate ([size-4,size-4,-1]) cylinder(h=thick+2, d=3);
|
||||
translate ([size-4,4,-1]) cylinder(h=thick+2, d=3);
|
||||
translate ([4,size-4,-1]) cylinder(h=thick+2, d=3);
|
||||
translate ([4,4,-1]) cylinder(h=thick+2, d=3);
|
||||
}
|
||||
|
||||
// cross bars
|
||||
// NOTE: The math could be better here to figure out the bar's offset, but it works
|
||||
// okay until you get up to a bar width of 6mm.
|
||||
bar_offset = inner / 7;
|
||||
translate([sqrt((bar_width*bar_width)/2) + bar_offset, bar_offset, -1]) rotate([0, 0, 45]) cube([size, bar_width, 12]);
|
||||
translate([bar_offset, -sqrt((bar_width*bar_width)/2)+size - bar_offset, -1]) rotate([0, 0, -45]) cube([size, bar_width, 12]);
|
||||
|
||||
translate([0, 0, -1]) union() {
|
||||
cylinder(d=bar_size*2+0.1, thick+6); // Add a circle to prevent any tiny holes around cross bar
|
||||
rotate([0, 0, 45]) cube([size, bar_size, 12], center=true);
|
||||
rotate([0, 0, 45]) cube([bar_size, size, 12], center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user