diff --git a/openscad/own/supermicro_sc808t/ssd-diskshelf_slider/IMG/disk-slider.png b/openscad/own/supermicro_sc808t/ssd-diskshelf_slider/IMG/disk-slider.png new file mode 100644 index 0000000..ca4cc6c Binary files /dev/null and b/openscad/own/supermicro_sc808t/ssd-diskshelf_slider/IMG/disk-slider.png differ diff --git a/openscad/own/supermicro_sc808t/ssd-diskshelf_slider/STL/iteration_1/disk-slider_base.stl b/openscad/own/supermicro_sc808t/ssd-diskshelf_slider/STL/iteration_1/disk-slider_base.stl new file mode 100644 index 0000000..dbfe2c1 Binary files /dev/null and b/openscad/own/supermicro_sc808t/ssd-diskshelf_slider/STL/iteration_1/disk-slider_base.stl differ diff --git a/openscad/own/supermicro_sc808t/ssd-diskshelf_slider/STL/iteration_1/disk-slider_clip_small.stl b/openscad/own/supermicro_sc808t/ssd-diskshelf_slider/STL/iteration_1/disk-slider_clip_small.stl new file mode 100644 index 0000000..b716664 Binary files /dev/null and b/openscad/own/supermicro_sc808t/ssd-diskshelf_slider/STL/iteration_1/disk-slider_clip_small.stl differ diff --git a/openscad/own/supermicro_sc808t/ssd-diskshelf_slider/STL/iteration_1/disk-slider_clip_wide.stl b/openscad/own/supermicro_sc808t/ssd-diskshelf_slider/STL/iteration_1/disk-slider_clip_wide.stl new file mode 100644 index 0000000..2fe0156 Binary files /dev/null and b/openscad/own/supermicro_sc808t/ssd-diskshelf_slider/STL/iteration_1/disk-slider_clip_wide.stl differ diff --git a/openscad/own/supermicro_sc808t/ssd-diskshelf_slider/STL/iteration_1/disk-slider_filler.stl b/openscad/own/supermicro_sc808t/ssd-diskshelf_slider/STL/iteration_1/disk-slider_filler.stl new file mode 100644 index 0000000..e9bead1 Binary files /dev/null and b/openscad/own/supermicro_sc808t/ssd-diskshelf_slider/STL/iteration_1/disk-slider_filler.stl differ diff --git a/openscad/own/supermicro_sc808t/ssd-diskshelf_slider/STL/iteration_1/disk-slider_top.stl b/openscad/own/supermicro_sc808t/ssd-diskshelf_slider/STL/iteration_1/disk-slider_top.stl new file mode 100644 index 0000000..6041d71 Binary files /dev/null and b/openscad/own/supermicro_sc808t/ssd-diskshelf_slider/STL/iteration_1/disk-slider_top.stl differ diff --git a/openscad/own/supermicro_sc808t/ssd-diskshelf_slider/disk-slider.scad b/openscad/own/supermicro_sc808t/ssd-diskshelf_slider/disk-slider.scad new file mode 100644 index 0000000..8e3337e --- /dev/null +++ b/openscad/own/supermicro_sc808t/ssd-diskshelf_slider/disk-slider.scad @@ -0,0 +1,190 @@ +// supermicro SC808 (and others) extended slider drawers to re-utilize 3.5"-hdd-cages for multiple 2.5" ssds +// by zeus - 2023-06-15 - CC-BY-NC-SA-4.0 - https://git.kostianix.de/zeus/3d-stuff/openscad/own/supermicro_sc808t/ +// ##################################### +$fn=50; +q=0.01; +Q=1; +slack=0.5; +mt=2; +layer=0.3; // layer height of the 3d-printer to archieve some very narrow walls or floors without strange rounding errors +rod_hole_dia=4.5; // with some slack for m4 threaded bolts +slide_base_hole_dia=4; // 4.0 for m3 short inserts from cnc-kitchen +disk_w=70+slack; // real measurement more like 69.9 +disk_l=100+slack; // real measurement more like 100.4/101 (connector overhang). effective length with cables at least 125mm! +disk_h=7.0; // unfortunately this is not really standardized. most relevant ssds will have 6.74-7.1mm thickness + +//slider-vars +slide_base_l=130; +slide_base_w=75; +slide_base_h=12; +slide_top_h=12; +slide_wall_t=7.5; +slide_bottom_t=3.3; // for m3 short inserts from cnc-kitchen at least 3mm is needed, regular is 5.7mm +slide_wall_hole_dia=slide_base_hole_dia; // same as bottom to accomodate same inserts +slide_wall_hole_t=3; // minimal distance of 3mm, because space is tight here +slide_wall_z_offset=6.5; // distance from bottom +slide_channel_w=17.5; +// supermicro 3.5"-hdd-drawer mockup for reference +draw_w_inner=101; +draw_l_inner=150; // slightly less in reality, but non-critical dimension +draw_h_inner=21; // from bottom upwards +draw_w_front=107.5; +draw_l_front=31.5; +draw_h_front=27; +draw_t_outer=(draw_w_front-draw_w_inner)/2; //thickness of the rails +draw_hole_h=6.5; // height of the center of the mounting hole (from the bottom) +draw_hole_dia=slide_base_hole_dia; +draw_hole_y1=19; // distance of first sidehole (from front) +draw_hole_y2=79; +draw_hole_y3=121; +filler_w=draw_w_inner-slide_base_w-slack; +flange_d=1; +flange_h=3; + +// ##################################### +module drawer_mockup(){ + color("brown")translate([0,draw_l_front/2,draw_h_front/2])cube([draw_w_front,draw_l_front,draw_h_front],center=true); + difference(){ + color("brown")translate([0,draw_l_front+draw_l_inner/2,draw_h_inner/2])cube([draw_w_inner+(2*draw_t_outer),draw_l_inner,draw_h_inner],center=true); + translate([0,draw_l_front+draw_l_inner/2,draw_h_inner/2])cube([draw_w_inner,draw_l_inner+q,draw_h_inner+q],center=true); + // hdd mounting-holes + for(x=[-(draw_w_front/2-draw_t_outer/2),(draw_w_front/2-draw_t_outer/2)],y=[draw_hole_y1,draw_hole_y2,draw_hole_y3]){ + translate([x,draw_l_front+y,draw_hole_h])rotate([0,90,0])cylinder(h=draw_t_outer+q,r=draw_hole_dia/2,center=true); + } + } +} +module disk_mockup(){ + color("teal")translate([0,0,disk_h/2])cube([disk_w,disk_l,disk_h],center=true); +} + +module slider_base(){ + translate([0,slide_base_l/2,slide_base_h/2]){ + difference(){ + cube([slide_base_w,slide_base_l,slide_base_h],center=true); + translate([0,0,slide_bottom_t/2+q])cube([slide_base_w-(2*slide_wall_t),slide_base_l+q,slide_base_h-slide_bottom_t],center=true); + for(x=[-(slide_base_w/2-slide_wall_t/2),(slide_base_w/2-slide_wall_t/2)], // used for M4-rods + x2=[-slide_channel_w/2:1:slide_channel_w/2], // center cable channel + x3=[-(slide_base_w/3+slide_base_w/5)/2,(slide_base_w/3+slide_base_w/5)/2]){ // offset cable channels + // M4-Rod-Holes for connecting the trays + translate([x,0,-slide_base_h/2+slide_bottom_t/2+rod_hole_dia/4]){ + rotate([90,0,0])cylinder(h=slide_base_l+q,r=rod_hole_dia/2,center=true); + } + // center cable-channel cutout + hull(){ + translate([x2,0,-slide_base_h/2+slide_bottom_t/3+rod_hole_dia/2]){ + rotate([90,0,0])cylinder(h=slide_base_l+q,r=rod_hole_dia/2,center=true); + } + } + // offset cable channel cutouts + translate([x3,0,-slide_base_h/2+slide_bottom_t/3+rod_hole_dia/2]){ + rotate([90,0,0])cylinder(h=slide_base_l+q,r=rod_hole_dia/2,center=true); + } + } + // base bottom mounting holes + for(x=[-slide_base_w/3,-slide_base_w/5,+slide_base_w/3,+slide_base_w/5],y=[-slide_base_l/2.5,-slide_base_l/7.5,+slide_base_l/2.5,+slide_base_l/7.5]){ + translate([x,y,-(slide_base_h/2)+(slide_bottom_t/2)]){ + cylinder(h=slide_bottom_t+Q,r=slide_base_hole_dia/2,center=true); + } + } + // mounting holes on top of the walls + for(x=[-(slide_base_w/2-slide_wall_t/2),(slide_base_w/2-slide_wall_t/2)],y=[-(slide_base_l/2-slide_wall_t/2),(slide_base_l/2-slide_wall_t/2)]){ + translate([x,y,(slide_base_h/2)-(slide_wall_hole_t/2)]){ + cylinder(h=slide_wall_hole_t+q,r=slide_wall_hole_dia/2,center=true); + } + } + // hdd mounting-holes + for(x=[-(slide_base_w/2-slide_wall_hole_t/2),(slide_base_w/2-slide_wall_hole_t/2)],y=[draw_hole_y1,draw_hole_y2,draw_hole_y3]){ + translate([x,-draw_hole_y3-draw_hole_dia*2.5+y+draw_hole_y3/2,-slide_base_h/2+slide_wall_z_offset])rotate([0,90,0])cylinder(h=slide_wall_hole_t+q,r=draw_hole_dia/2,center=true); + } + } + } +} + +module slider_filler(){ + difference(){ + cube([filler_w,draw_hole_y3,draw_hole_dia*2],center=true); + for(x=[draw_hole_y1,draw_hole_y2,draw_hole_y3]){ + translate([0,-(draw_hole_y3+draw_hole_dia)/2-7.5+x,0])rotate([0,90,0])#cylinder(h=filler_w+q,r=(draw_hole_dia/2)+0.5,center=true); + } + } +} + +module slider_top(){ + translate([0,slide_base_l/2,slide_top_h/2+slide_base_h]){ + difference(){ + cube([slide_base_w,slide_base_l,slide_top_h],center=true); + translate([0,0,0])cube([slide_base_w-(2*slide_wall_t),slide_base_l+q,slide_base_h+q],center=true); + for(x=[-(slide_base_w/2-slide_wall_t/2),(slide_base_w/2-slide_wall_t/2)],y=[-(slide_base_l/2-slide_wall_t/2),(slide_base_l/2-slide_wall_t/2)]){ + translate([x,y,0]){ + translate([0,0,flange_h])cylinder(h=slide_top_h+q,r=slide_wall_hole_dia/2+flange_d,center=true); + cylinder(h=slide_top_h+q,r=slide_wall_hole_dia/2,center=true); + } + } + } + } +} + +module clip_small(){ + translate([(slide_base_w/3+slide_base_w/5)/2,slide_base_l/2-slide_base_l/2.5,slide_bottom_t/2+mt*1.5]){ + difference(){ + union(){ + cube([(slide_base_w/3+slide_base_w/5)/2-slide_base_hole_dia,slide_base_hole_dia*2,mt],center=true); + translate([0,0,mt/4])rotate([90,0,0])scale([1.25,1,1])cylinder(h=slide_base_hole_dia*2,r=rod_hole_dia/2,center=true); + } + for(x=[-(((slide_base_w/3+slide_base_w/5)/2-slide_base_hole_dia)/2-slide_base_hole_dia*0.75),(((slide_base_w/3+slide_base_w/5)/2-slide_base_hole_dia)/2-slide_base_hole_dia*0.75)]){ + translate([x,0,0])cylinder(h=slide_bottom_t+Q,r=slide_base_hole_dia/2-0.5,center=true); + } + translate([0,0,-mt/2])rotate([90,0,0])cylinder(h=slide_base_hole_dia*2+q,r=rod_hole_dia/2,center=true); + } + } +} + +module clip_wide(){ + translate([0,slide_base_l/2-slide_base_l/2.5,slide_bottom_t/2+mt*1.5]){ + difference(){ + union(){ + hull(){ + translate([slide_base_w/5,0,0])cylinder(h=mt,r=slide_base_hole_dia*0.66,center=true); + translate([-slide_base_w/5,0,0])cylinder(h=mt,r=slide_base_hole_dia*0.66,center=true); + } + } + translate([slide_base_w/5,0,mt/2])cylinder(h=mt*0.75,r=slide_base_hole_dia+q,center=true); + translate([-slide_base_w/5,0,mt/2])cylinder(h=mt*0.75,r=slide_base_hole_dia+q,center=true); + for(x=[-(slide_base_w/5),(slide_base_w/5)]){ + translate([x,0,0])cylinder(h=slide_bottom_t+Q,r=slide_base_hole_dia/2-0.5,center=true); + } + for(x=[-slide_channel_w/2:1:slide_channel_w/2]){ + hull(){ + translate([x,0,-slide_base_hole_dia/2+mt/2-layer*2]){ + rotate([90,0,0])cylinder(h=slide_base_hole_dia*0.66*2+q,r=rod_hole_dia/2,center=true); + } + } + } + } + } +} +// ##################################### +//drawer_mockup(); +difference(){ + union(){ + translate([13,draw_l_front+5.5,0]){ + slider_base(); + translate([0,0,0.1])slider_top(); + } + } + translate([13,draw_l_front+63,8]){ + disk_mockup(); + translate([0,0,8])disk_mockup(); + } +} +//translate([13,draw_l_front+5.5,0])clip_small(); +//translate([13,draw_l_front+5.5,0])clip_wide(); +translate([-(draw_w_inner/2-filler_w/2-slack/2),draw_l_front+draw_l_inner/2-5,slide_wall_z_offset])color("pink")slider_filler(); + + + + + + + +