// Thermaltake Xaser III frame for an RGB-Controller for a retro-computer // by zeus - 2022-06-18 - CC-BY-NC-SA-4.0 // ### // vars: mt=6; //material thickness hole_dia=3; //hole-diameter for mounting holes hole_pair_dist=14; // distance of the two holes of one pair of holes hole_lr_dist=52; // center-to-center-distance between the pairs top_hole_dist=5; // distance from hole-center to end of the latch (z-axis), measured value is ~7.25 on the outside, this value has to be less than that on the inside, and accomodate the chamfer by the bent metal-sheeting ctrl_hole_dist_x=33; // x-spacing between mounting holes in the RGB-controller ctrl_hole_dist_y=78.65; // y-spacing between mounting holes in the RGB-controller ctrl_hole_dia=2; ow=100; // overall width oh=155; // overall height bh=35; // height of bottom part bbt=8.5; // thicknes of bottom screw-block, this needs to overcome the latch in depth. 8 would be enough bbh=bh-10; // height of bottom screw-block uh=100; // height of upper part mh=oh-bh-uh; // height of the angled center section; y_deflection=30; // y-coordinate difference between top and bottom corner_dia=mt; // roundness of curved edge text_h=0.5; text_size=24; $fn=100; use // "free for personal use" version // ### // model: module upper(){ difference(){ cube([ow,mt,uh],center=true); translate([0,-mt/2+text_h-0.01,0])rotate([90,0,0])#linear_extrude(text_h){ translate([0,text_size/1.5,0])text("Retro",text_size*0.8,halign="center",valign="center",font="Origin Tech Demo:style=Regular"); //some text translate([0,-text_size/1.5,0])text("ZEUS",text_size,halign="center",valign="center",font="Origin Tech Demo:style=Regular"); //some text } for(x=[-ctrl_hole_dist_x/2,ctrl_hole_dist_x/2],y=[-ctrl_hole_dist_y/2,ctrl_hole_dist_y/2]){ translate([x,mt/4,y])rotate([90,0,0])cylinder(h=mt/2+0.1,d1=ctrl_hole_dia,d2=ctrl_hole_dia*0.5,center=true); //mounting holes for the controller } } } module center(){ //cube([ow,mt,mh],center=true); hull(){ // for(x=[-mh/2,mh/2],y=[-y_deflection/2,y_deflection/2]) translate([0,y_deflection/2,-mh/2])rotate([0,90,0])cylinder(d=corner_dia,h=ow,center=true); translate([0,-y_deflection/2,mh/2])rotate([0,90,0])cylinder(d=corner_dia,h=ow,center=true); } } module bottom(){ difference(){ union(){ cube([ow,mt,bh],center=true); translate([0,bbt/2+mt/2,-(bh/2+bbh/2)+bbh])cube([ow,bbt,bbh],center=true); } for(xa=[hole_lr_dist/2,-hole_lr_dist/2]){// define distance between pairs translate([xa,0,0]){ for(xb=[hole_pair_dist/2,-hole_pair_dist/2]){ // define one pair of holes translate([xb,bbt/2+mt/2,-(bh/2)+bbh-top_hole_dist]){ rotate([90,0,0])cylinder(h=bbt+0.1,d1=hole_dia,d2=hole_dia*0.75,center=true); // mounting hole to case } } } } translate([0,mt/2+bbt,-bh/2+bbh])rotate([0,90,0])cylinder(d=mt/2,h=ow+0.1,center=true,$fn=4); // cutoff to accomodate for the bent in the metal sheeting } } translate([0,-y_deflection/2,+(mh/2+uh/2)])upper(); translate([0,y_deflection/2,-(mh/2+bh/2)])bottom(); translate([0,0,0])center();