diff --git a/vitamins/blower.scad b/vitamins/blower.scad index e0aeba8..aac753e 100644 --- a/vitamins/blower.scad +++ b/vitamins/blower.scad @@ -40,8 +40,10 @@ function blower_base(type) = type[13]; //! Thickness of the base function blower_top(type) = type[14]; //! Thickness of the top function blower_wall(type) = type[15]; //! Side wall thickness function blower_lug(type) = type[16]; //! Height of the lugs +function blower_wall_left(type) = type[15]; //! Left side wall thickness +function blower_wall_right(type) = type[17]; //! Right wall thickness (for square fans) -function blower_casing_is_square(type) = len(blower_screw_holes(type)) > 3; //! True for square radial fans, false for spiral shape radial blowers +function blower_casing_is_square(type) = blower_depth(type) < 15; //! True for square radial fans, false for spiral shape radial blowers function blower_exit_offset(type) = blower_casing_is_square(type) ? blower_length(type) / 2 : blower_exit(type) / 2; //! Offset of exit's centre from the edge fan_colour = grey(20); @@ -74,41 +76,54 @@ module blower_fan(type, casing_is_square) { module blower_square(type) { //! Draw a square blower width = blower_width(type); depth = blower_depth(type); - wall = blower_wall(type); + wall_left = blower_wall_left(type); + wall_right = blower_wall_right(type); + hole_count = len(blower_screw_holes(type)); hole_pitch = (blower_screw_holes(type)[1].x - blower_screw_holes(type)[0].x) / 2; corner_radius = width / 2 - hole_pitch; - corner_inset = (width - blower_exit(type)) / 2; + corner_inset = (width - blower_exit(type) - wall_left - wall_right) / (hole_count == 2 ? 1 : 2); + + module inset_corners() + translate([width / 2, width / 2]) + for(i = hole_count == 2 ? [1, 3] : [0 : 3]) + rotate(i * 90) + translate([-width / 2 - eps, -width/ 2 - eps]) + quadrant(corner_inset, corner_inset - corner_radius); module square_inset_corners(remove_center = false) difference() { //overall outside - square([width, width], center = false); + rounded_square([width, width], corner_radius, center = false); if (remove_center) { // cut out the inside, leaving the corners - translate([corner_inset + wall, -eps]) - square([width - 2 * (wall + corner_inset), width - wall + eps], center = false); - - translate([wall, corner_inset + wall]) - square([width - 2 * wall, width - 2 * (wall + corner_inset)], center = false); + translate([hole_count == 2 ? wall_left : corner_inset + wall_left, -eps]) + square([blower_exit(type), width / 2], center = false); + translate(blower_axis(type)) + circle(d = blower_bore(type) + 1); } else { // cut out the bore for the fan translate(blower_axis(type)) circle(d = blower_bore(type)); } - // corner inset - translate([width / 2, width / 2]) - for(i = [0 : 3]) - rotate(i * 90) - translate([-width / 2 - eps, -width/ 2 - eps]) - quadrant(corner_inset, corner_inset - corner_radius); + inset_corners(); } base_height = blower_base(type); linear_extrude(base_height) difference () { rounded_square([width, width], corner_radius, center = false); + blower_hole_positions(type) + circle(d = blower_screw_hole(type)); + } + // add the lugs which may be higher than the base + linear_extrude(blower_lug(type)) + difference () { + intersection() { + rounded_square([width, width], corner_radius, center = false); + inset_corners(); + } blower_hole_positions(type) circle(d = blower_screw_hole(type)); } diff --git a/vitamins/blowers.scad b/vitamins/blowers.scad index 9897dc5..5908922 100644 --- a/vitamins/blowers.scad +++ b/vitamins/blowers.scad @@ -24,8 +24,9 @@ // h h s t t RB5015 = ["RB5015", "Blower Runda RB5015", 51.3, 51, 15, 31.5, M4_cap_screw, 26, [27.3, 25.4], 4.5, [[4.3, 45.4], [47.3,7.4]], 20, 14, 1.5, 1.3, 1.2, 15]; PE4020 = ["PE4020", "Blower Pengda Technology 4020", 40, 40, 20, 27.5, M3_cap_screw, 22, [21.5, 20 ], 3.2, [[37,3],[3,37],[37,37]], 29.3, 17, 1.7, 1.2, 1.3, 13]; -BL40x10 =["BL40x10","Square radial fan 4010", 40, 40,9.5, 27, M2_cap_screw, 16, [24, 20 ], 2.4, [[2,2],[38,2],[2,38],[38,38]], 30 , 9.5, 1.5, 1.5, 1.1, 1.5]; +BL30x10 =["BL30x10","Square radial fan 3010", 30, 30,10.1,25, M2_cap_screw, 16, [16, 15 ], 2.4, [[2,28],[28,2]], 21.2, 9.5, 1.1, 1.2, 2.5, 2.8, 0.9]; +BL40x10 =["BL40x10","Square radial fan 4010", 40, 40,9.5, 27, M2_cap_screw, 16, [24, 20 ], 2.4, [[2,2],[38,2],[2,38],[38,38]], 27.8, 9.5, 1.5, 1.5, 1.1, 1.5, 1.1]; -blowers = [BL40x10, PE4020, RB5015]; +blowers = [BL30x10, BL40x10, PE4020, RB5015]; use