61 lines
No EOL
1.4 KiB
OpenSCAD
61 lines
No EOL
1.4 KiB
OpenSCAD
|
|
case_inside_h = 54.5;
|
|
case_standoff_h = 6.0;
|
|
pcb_h = 1.6;
|
|
switch_h = 12.2;
|
|
glue_h = 0.2;
|
|
tolerance = 0.7;
|
|
height = case_inside_h - case_standoff_h - pcb_h - switch_h - glue_h - tolerance + 2;
|
|
|
|
eps = 0.01;
|
|
base_w = 20;
|
|
base_h = base_w;
|
|
base_d = 6;
|
|
stem_w = 10;
|
|
stem_h = stem_w;
|
|
plunger_w = 20;
|
|
plunger_h = 25;
|
|
plunger_d = 3;
|
|
|
|
// cylinder chain parameters
|
|
c_h = 14;
|
|
c_w = base_w;
|
|
c_intersect = 1;
|
|
c_wall = 0.8;
|
|
|
|
module narf(w, h, d) {
|
|
translate([0, 0, 1])
|
|
minkowski(){
|
|
cube([w-2*d, h-2*d, eps], center=true);
|
|
cylinder(d, d, 0, $fn=32);
|
|
};
|
|
|
|
minkowski(){
|
|
cube([w-2*d, h-2*d, eps], center=true);
|
|
cylinder(1, d, d, $fn=32);
|
|
};
|
|
}
|
|
|
|
rotate ([0, 180, 0]) {
|
|
|
|
difference() {
|
|
union() {
|
|
narf(base_w, base_h, base_d);
|
|
|
|
translate([0, 0, height-c_h/2-plunger_d])
|
|
//cube([stem_w, stem_h, height], center=true);
|
|
for (i=[0:1]) {
|
|
rotate([0, 90, 0]) translate([i*(c_h - c_intersect), 0, -c_w/2]) cylinder(d=c_h, h=c_w, $fn=32);
|
|
}
|
|
|
|
translate([0, 0, height])
|
|
mirror([0, 0, 1])
|
|
narf(plunger_w, plunger_h, plunger_d);
|
|
}
|
|
|
|
translate([0, 0, height-c_h/2-plunger_d])
|
|
for (i=[0:1]) {
|
|
rotate([0, 90, 0]) translate([i*(c_h - c_intersect), 0, -c_w/2-eps]) cylinder(d=c_h - 2*c_wall, h=c_w+2*eps, $fn=32);
|
|
}
|
|
}
|
|
} |