Files @ 16d8fef75aa7
Branch filter:

Location: Wearables/Neopixel-Respirator/3D_Models/Holder.scad

Dennis Fink
Added tag h0.5v0.1 for changeset b7b7c4d94bc2
overall_outer_diameter = 75;
overall_thickness = 15;

neopixel_holder_thickness = 7.5;
translucent_disk_thickness = overall_thickness - neopixel_holder_thickness;

ring_24_outer_diameter = 65.6 + 0.5;
ring_24_inner_diameter = 52.3 - 0.5;

ring_12_outer_diameter = 36.8 + 0.5;
ring_12_inner_diameter = 23.3 - 0.5;

ring_thickness = 6.7;
ring_z_offset = neopixel_holder_thickness - ring_thickness;

channel_length = ring_24_inner_diameter/2;
channel_width = 4;
channel_angle = 32.5;
main_channel_diameter = 10;


alignment_pin_position = (-overall_outer_diameter/2) + 1.5; 
alignment_pin_width = 4;
alignment_pin_length = ((overall_outer_diameter/2 - ring_24_outer_diameter/2)/2) + 1.5;

$fn = 200;

module ring(h, od, id) {
    difference() {
        cylinder(h=h, d=od);
        cylinder(h=h, d=id);
    }
};

module channel() {    
    translate([-(channel_length), -(channel_width/2), ring_z_offset])
        cube([channel_length, channel_width, ring_thickness+1]);
    
    for (angle=[channel_angle, -channel_angle])
        rotate([0, 0, angle])
            translate([0, -(channel_width/2), ring_z_offset])
                cube([channel_length, channel_width, ring_thickness+1]);
    
    translate([0, 0, -1])
        cylinder(h=neopixel_holder_thickness+2, d=main_channel_diameter);
};

module alignment_pin() {
    for (x=[0, 1])
      mirror([x, 0, 0])
        translate([alignment_pin_position, -(alignment_pin_width-0.2)/2, ring_z_offset])
          cube([alignment_pin_length, alignment_pin_width-0.2, neopixel_holder_thickness - ring_z_offset + 0.1]);
}

module neopixel_holder() {
    
    difference () {
        
        cylinder(h=neopixel_holder_thickness, d=overall_outer_diameter);
        
        for (d=[[ring_24_outer_diameter, ring_24_inner_diameter], [ring_12_outer_diameter, ring_12_inner_diameter]])
            translate([0, 0, ring_z_offset])
                ring(h=ring_thickness+1, od=d[0], id=d[1]);
        channel();
        alignment_pin();
    }
};

module translucent_disk() {
    cylinder(h=translucent_disk_thickness, d=overall_outer_diameter);
    for (x=[0, 1])
        mirror([x, 0, 0])
            translate([alignment_pin_position, -(4-0.2)/2, translucent_disk_thickness])
                cube([3, 4-0.2, neopixel_holder_thickness -ring_z_offset]);
};

neopixel_holder();
// translate([-(overall_outer_diameter/2+1), 0, 0]) neopixel_holder();
//translate([(overall_outer_diameter/2+1), 0, 0]) translucent_disk();