# HG changeset patch # User Dennis Fink # Date 2018-02-04 00:24:56 # Node ID 2a624ea601853e16c2e0650984af4dfa3031612e # Parent 7fb8b2a3dfcff4f9c854976d7b106a1d19339408 Add version 0.1 and 0.2 diff --git a/Version_0_1.scad b/Version_0_1.scad new file mode 100644 --- /dev/null +++ b/Version_0_1.scad @@ -0,0 +1,86 @@ +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; +ring_24_inner_diameter = 52.3; + +ring_12_outer_diameter = 36.8; +ring_12_inner_diameter = 23.3; + +ring_thickness = 6.7; +ring_z_offset = neopixel_holder_thickness - ring_thickness; + +channel_length = (ring_12_outer_diameter - ring_12_inner_diameter); +channel_position = (-ring_12_outer_diameter - ring_12_inner_diameter)/2; + +cable_channel_width = (overall_outer_diameter/2 - ring_24_outer_diameter/2)/2; +cable_channel_position = (-overall_outer_diameter/2) + cable_channel_width; + +alignment_pin_diameter = 2.5; +alignment_pin_height = neopixel_holder_thickness - 2.5; +alignment_pin_position = (-overall_outer_diameter/2) + alignment_pin_diameter; + +$fn = 200; + +module ring(h, od, id) { + difference() { + cylinder(h=h, d=od); + cylinder(h=h, d=id); + } +}; + +module channel() { + translate([channel_position, -1.25, ring_z_offset]) + cube([channel_length, 2.5, ring_thickness+1]); + + mirror([1, 0, 0]) + translate([channel_position, -1.25, ring_z_offset]) + cube([channel_length, 2.5, ring_thickness+1]); + + translate([cable_channel_position, 0, -1]) + cylinder(h=neopixel_holder_thickness+2, d=2.5); + + translate([cable_channel_position, -1.25, ring_z_offset]) + cube([cable_channel_width+0.1, 2.5, ring_thickness+0.1]); +}; + +module neopixel_holder() { + alignment_pin_z_position = neopixel_holder_thickness - alignment_pin_height; + + 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(); + + translate([-alignment_pin_position, 0, alignment_pin_z_position]) + cylinder(h=alignment_pin_height+0.1, d=alignment_pin_diameter); + + for (y=[alignment_pin_position, -alignment_pin_position]) + translate([0, y, alignment_pin_z_position]) + cylinder(h=alignment_pin_height+0.1, d=alignment_pin_diameter); + }; + +}; + +module translucent_disk() { + alignment_pin_diameter_l = alignment_pin_diameter - 0.1; + cylinder(h=translucent_disk_thickness, d=overall_outer_diameter); + + translate([-alignment_pin_position, 0, translucent_disk_thickness]) + cylinder(h=alignment_pin_height, d=alignment_pin_diameter_l); + + for (y=[alignment_pin_position, -cable_channel_position]) + translate([0, y, translucent_disk_thickness]) + cylinder(h=alignment_pin_height, d=alignment_pin_diameter_l); +}; + +translate([-(overall_outer_diameter/2+1), 0, 0]) neopixel_holder(); +translate([(overall_outer_diameter/2+1), 0, 0]) rotate([180, 180, 0]) translucent_disk(); \ No newline at end of file diff --git a/Version_0_2.scad b/Version_0_2.scad new file mode 100644 --- /dev/null +++ b/Version_0_2.scad @@ -0,0 +1,72 @@ +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; +ring_24_inner_diameter = 52.3; + +ring_12_outer_diameter = 36.8; +ring_12_inner_diameter = 23.3; + +ring_thickness = 6.7; +ring_z_offset = neopixel_holder_thickness - ring_thickness; + +channel_length = overall_outer_diameter-3; + +alignment_pin_position = (-overall_outer_diameter/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/2), -2, ring_z_offset]) cube([channel_length, 4, ring_thickness+1]); + translate([0, 0, -1]) cylinder(h=neopixel_holder_thickness+2, d=10); +}; + +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(); + + for (y=[0, 1]) + mirror([0, y, 0]) + mirror([1, 1, 0]) + translate([alignment_pin_position, -2, ring_z_offset]) + cube([5, 4, ring_thickness+1]); + + }; + +}; + +module translucent_disk() { + cylinder(h=translucent_disk_thickness, d=overall_outer_diameter); + + + for (y=[0, 1]) + mirror([0, y, 0]) + mirror([1, 1, 0]) + translate([alignment_pin_position, -(4-0.2)/2, translucent_disk_thickness]) + cube([3, 4-0.2, neopixel_holder_thickness -ring_z_offset]); + 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]); +}; + +translate([-(overall_outer_diameter/2+1), 0, 0]) neopixel_holder(); +translate([(overall_outer_diameter/2+1), 0, 0]) translucent_disk(); \ No newline at end of file