w=24; l=24; d=5; $fn=360; difference() { color("white") union() { // 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); } union() { // internal key tang supports color("red") translate([0, -11.4, 0]) union() { for (i = [0:8]) { translate([-d, i*1.2, -2]) cube([10, 0.4, 4]); } } // key tang clearance color("red") translate([0, -(l/2) + (11/2) - 0.01, 0]) cube([7, 11, 2.5], center=true); // recessed Probatem logo color("black") union() { translate([0, 0, 2.11]) scale([0.28, 0.28, 1]) linear_extrude(0.4) import("probatem-logo.svg", center=true); // 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() { // 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); /* // 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); // 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); // 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); } } }