2024-08-05 07:50:32 -05:00
|
|
|
w=24;
|
|
|
|
l=24;
|
|
|
|
d=5;
|
2024-06-04 23:13:12 -05:00
|
|
|
$fn=360;
|
|
|
|
|
|
|
|
difference() {
|
|
|
|
color("white") union() {
|
2024-08-05 07:50:32 -05:00
|
|
|
// top-half of the main body
|
|
|
|
translate([-(w/2), 0, -(d/2)]) cube([w, (l/2), d]);
|
|
|
|
|
|
|
|
// key tang channel
|
|
|
|
translate([-6, -12, -(d/2)]) cube([12, 12, d]);
|
|
|
|
|
|
|
|
// bottom, rounded half of the main body
|
|
|
|
translate([0, 0, 1.5]) cylinder(r1=(w/2), r2=11, h=1);
|
|
|
|
translate([0, 0, -1.501]) cylinder(r=(w/2), h=3.002);
|
|
|
|
translate([0, 0, -(d/2)]) cylinder(r1=11, r2=(w/2), h=1);
|
|
|
|
|
|
|
|
// key-hole support at the top
|
|
|
|
translate([0, 12, 1.5]) cylinder(r1=6, r2=d, h=1);
|
|
|
|
translate([0, 12, -1.501]) cylinder(r=6,h=3.002);
|
|
|
|
translate([0, 12, -(d/2)]) cylinder(r1=d, r2=6, h=1);
|
2024-06-04 23:13:12 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
union() {
|
2024-08-05 07:50:32 -05:00
|
|
|
// internal key tang supports
|
2024-06-04 23:13:12 -05:00
|
|
|
color("red") translate([0, -11.4, 0]) union() {
|
|
|
|
for (i = [0:8]) {
|
2024-08-05 07:50:32 -05:00
|
|
|
translate([-d, i*1.2, -2]) cube([10, 0.4, 4]);
|
2024-06-04 23:13:12 -05:00
|
|
|
}
|
2024-08-05 07:50:32 -05:00
|
|
|
|
2024-06-04 23:13:12 -05:00
|
|
|
}
|
|
|
|
|
2024-08-05 07:50:32 -05:00
|
|
|
// key tang clearance
|
|
|
|
color("red") translate([0, -(l/2) + (11/2) - 0.01, 0]) cube([7, 11, 2.5], center=true);
|
|
|
|
|
|
|
|
// recessed Probatem logo
|
2024-06-04 23:13:12 -05:00
|
|
|
color("black") union() {
|
2024-08-05 07:50:32 -05:00
|
|
|
translate([0, 0, 2.11]) scale([0.28, 0.28, 1])
|
|
|
|
linear_extrude(0.4) import("probatem-logo.svg", center=true);
|
2024-06-04 23:13:12 -05:00
|
|
|
|
|
|
|
// translate([0, 0, -2.301]) rotate([0, 180, 0]) scale([0.32, 0.32, 0.201])
|
|
|
|
// linear_extrude(1) import("probatem-logo.svg", center=true);
|
|
|
|
}
|
|
|
|
|
|
|
|
color("slateblue") union() {
|
2024-08-05 07:50:32 -05:00
|
|
|
// side chamfers
|
|
|
|
translate([-(w/2), (l/4) + 0.4, (d/2)]) rotate([0, 45, 0]) cube([1.414, (l/2) + 1, 1.414], center=true);
|
|
|
|
translate([-(w/2), (l/4) + 0.4, -(d/2)]) rotate([0, 45, 0]) cube([1.414, (l/2) + 1, 1.414], center=true);
|
|
|
|
|
|
|
|
translate([(w/2), (l/4) + 0.4, (d/2)]) rotate([0, 45, 0]) cube([1.414, (l/2)+1, 1.414], center=true);
|
|
|
|
translate([(w/2), (l/4) + 0.4, -(d/2)]) rotate([0, 45, 0]) cube([1.414, (l/2)+1, 1.414], center=true);
|
2024-06-04 23:13:12 -05:00
|
|
|
|
2024-08-05 07:50:32 -05:00
|
|
|
/*
|
|
|
|
// top chamfers (old)
|
|
|
|
translate([0, (l/2), (d/2)]) rotate([45, 0, 0]) cube([w+2, 1.414, 1.414], center=true);
|
|
|
|
translate([0, (l/2), -(d/2)]) rotate([45, 0, 0]) cube([w+2, 1.414, 1.414], center=true);
|
|
|
|
*/
|
|
|
|
// top chamfers
|
|
|
|
translate([9, (l/2), (d/2)]) rotate([45, 0, 0]) cube([6, 1.414, 1.414], center=true);
|
|
|
|
translate([9, (l/2), -(d/2)]) rotate([45, 0, 0]) cube([6, 1.414, 1.414], center=true);
|
|
|
|
translate([-9, (l/2), (d/2)]) rotate([45, 0, 0]) cube([6, 1.414, 1.414], center=true);
|
|
|
|
translate([-9, (l/2), -(d/2)]) rotate([45, 0, 0]) cube([8, 1.414, 1.414], center=true);
|
2024-06-04 23:13:12 -05:00
|
|
|
|
2024-08-05 07:50:32 -05:00
|
|
|
// top edge chamfers
|
|
|
|
translate([-(w/2), (l/2), 0]) rotate([0, 0, 45]) cube([1.414, 1.414, 6], center=true);
|
|
|
|
translate([(w/2), (l/2), 0]) rotate([0, 0, 45]) cube([1.414, 1.414, 6], center=true);
|
2024-06-04 23:13:12 -05:00
|
|
|
|
2024-08-05 07:50:32 -05:00
|
|
|
// keyhole
|
|
|
|
translate([0, 12, 2.25]) cylinder(r1=2.4, r2=2.8, h=0.751, center=true);
|
|
|
|
translate([0, 12, 0]) cylinder(r=2.4, h=d, center=true);
|
|
|
|
translate([0, 12, -2.251]) cylinder(r2=2.4, r1=2.8, h=0.751, center=true);
|
|
|
|
//translate([8.4, 8.4, 0]) cylinder(r=2, h=1, center=true);
|
2024-06-04 23:13:12 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|