71 lines
3.2 KiB
OpenSCAD
71 lines
3.2 KiB
OpenSCAD
// 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 <SRC/OriginTech.ttf> // "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(); |