You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

73 lines
1.5 KiB

max_x = 18.95;
max_y = 10.9;
max_z = 3.6;
btm_x = 12.3;
btm_z = 1.6;
rbt_x = 1;
rbt_h = 1.75;
mid_x = 7;
mid_y = 7.2;
grp_x = 4.5;
grp_y = 11.75;
grp_z = 1.5;
tri_y = 2.56;
tri_z = 1;
tri_d = 5;
tri_a = 30;
union() {
// main part
difference() {
// overall shape
cube([max_x, max_y, max_z]);
// bottom clearance
translate([(max_x-btm_x)/2,-1,-1])
cube([btm_x,max_y+2,btm_z+1]);
// rabbets
translate([-1,-1,rbt_h])
cube([rbt_x+1,max_y+2,max_z-rbt_h+1]);
translate([max_x-rbt_x,-1,rbt_h])
cube([rbt_x+1,max_y+2,max_z-rbt_h+1]);
translate([(max_x-mid_x)/2,-1,-1])
cube([mid_x,mid_y+1,max_z+2]);
}
// grip
translate([
(max_x-grp_x)/2,
(-grp_y+mid_y),
btm_z
])
union() {
// main grip section
difference() {
cube([grp_x, grp_y+1, grp_z]);
translate([0,0,grp_z/2])
rotate([0,0,45])
cube([1,5,grp_z+1], center = true);
translate([grp_x,0,grp_z/2])
rotate([0,0,45])
cube([5,1,grp_z+1], center = true);
}
// triangular catch
translate([0,tri_d,-tri_z])
difference() {
cube([grp_x,tri_y,tri_z]);
translate([-1,tri_y,tri_z])
rotate([tri_a-180,0,0])
cube([grp_x+2,tri_y,tri_z]);
}
}
}