Customizable Fan Grill Cover – Hacks 3D Printer Model

Author: @
License: CC BY
File formats: stl
Download type: zip
Size:1.9MB

The file 'Customizable Fan Grill Cover – Hacks 3D Printer Model' is (stl) file type, size is 1.9MB.

Summary

Hack of Customizable Fan Cover - Hacks

Use scad library from:
https://www.thingiverse.com/thing:2802474

Add a random pattern module:

module random_pattern(size, line_size, line_space) {    diff = (line_space / 10);    seed=17;    min_rad = (line_space / 2 * sqrt(3)) / 2 + line_size / 2;    y_offset = sqrt(min_rad * min_rad * 4 - min_rad * min_rad);    num_x = ceil(size / min_rad / 2) * 1.42;    num_y = ceil(size / y_offset) * 1.42;    difference() {        square([size * 1.42, size * 1.42], center = true);        for(y = [floor(-num_y / 2) : ceil(num_y / 2)]) {            odd = (y % 2 == 0) ? 0 : min_rad;            for(x = [floor(-num_x / 2) : ceil(num_x / 2)]) {                translate([x * min_rad * 2 + odd, y * y_offset]) {                    rotate(30) {                        single_rand = rands(4,9,1)[0];                        circle(d=line_space-diff, $fn=single_rand);                    }                }            }        }    }}

Add a free $fn pattern module:

module free_pattern(size, line_size, line_space, fn_pattern) {    diff = (line_space / 10);    min_rad = (line_space / 2 * sqrt(3)) / 2 + line_size / 2;    y_offset = sqrt(min_rad * min_rad * 4 - min_rad * min_rad);    num_x = ceil(size / min_rad / 2) * 1.42;    num_y = ceil(size / y_offset) * 1.42;    difference() {        square([size * 1.42, size * 1.42], center = true);        for(y = [floor(-num_y / 2) : ceil(num_y / 2)]) {            odd = (y % 2 == 0) ? 0 : min_rad;            for(x = [floor(-num_x / 2) : ceil(num_x / 2)]) {                translate([x * min_rad * 2 + odd, y * y_offset]) {                    rotate(30) {                         circle(d=line_space-diff, $fn=single_rand);                   }                }            }        }    }}

and modify fan_cover module adding new pattern modules:

                        if(grill_pattern == "random") {                            random_pattern(cover_size, line_size, line_space);                        }                        else if(grill_pattern == "honeycomb") .....                        ..                        } else                         {                            free_pattern(cover_size, line_size, line_space, grill_pattern);                        }

For use free_pattern, grill_pattern var will be a number >= 3 (not a string)

Another interesting hack is introduce spherical projection to the pattern:

       // scale intersection (projection) with the sphere       scale([1,1,0.2])        intersection()        {            difference()            {                sphere(d=cover_size - min_border_size );                sphere(d=cover_size - min_border_size * 3);            };       // add cover_size to original linear_extrude height       linear_extrude(height = grill_pattern_h+cover_size, convexity = 20) {            ....        }    }

With the spherical projection, you can apply some scale on linear_extrude + eliminate the second sphere (which eliminate the hole) and you obtain funnels for air dispersion (Example 11,12 or 13)

            difference()            {                sphere(d=cover_size - min_border_size );                *sphere(d=cover_size - min_border_size * 3); // eliminate the hole            };           linear_extrude(height = grill_pattern_h+cover_size, convexity = 20                                   , scale=1.5) // add scale for dispersion           {....

Finally, add some twist effects and get something like example 14:

        linear_extrude(height = grill_pattern_h+cover_size, convexity = 20, scale=1.5                                 , twist = -50, slices=100)  // add twist efect       {..
customizable_fan_cover1.stl 340.4KB
customizable_fan_cover10.stl 733.9KB
customizable_fan_cover11.stl 789.1KB
customizable_fan_cover12.stl 1.2MB
customizable_fan_cover13.stl 641.5KB
customizable_fan_cover14.stl 5.9MB
customizable_fan_cover2.stl 538.0KB
customizable_fan_cover3.stl 379.7KB
customizable_fan_cover4.stl 466.6KB
customizable_fan_cover5.stl 1.8MB
customizable_fan_cover6.stl 1.3MB
customizable_fan_cover7.stl 1.2MB
customizable_fan_cover8.stl 1.1MB
customizable_fan_cover9.stl 1.1MB