3d-stuff/openscad/own/xaser3-controller-frame/xaser3-controller-frame.scad

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();