// craftcutter holder // hbs 11/24/2024 gmy = 22.4; clipx=14; clipt=4; clipy=18; clipz=11; sh=3.6; basex=99.1; basey=28.0; basez = 4.7; holes=9; base(); translate([5,-1,0]) clip(); module base() { difference() { translate([0,0,basez/2]) cube([basex,basey,basez],true); #translate([basex/2,0,basez]) rotate([0,45,0]) cube([4.5*sqrt(2),33,4.5*sqrt(2)],true); translate([5,2,0]) { // leave space for groovemount translate([0,0,-basez]) cylinder(r=gmy/2,h=basez*2); // groovemount hole translate([0,gmy/2,0]) cube([gmy,gmy,basez*2],true); } // put a few holes for less plastic translate([-36,0,-10]) cylinder(r=holes,h=20); translate([-17,0,-10]) cylinder(r=holes,h=20); translate([32,0,-10]) cylinder(r=holes,h=20); } } module clip() { difference() { union() { cylinder(r=(clipx+clipt)/2,h=clipz); translate([0,clipy/2,clipz/2]) cube([clipx+clipt,clipy,clipz],true); } union() { cylinder(r=clipx/2,h=clipz); translate([0,clipy/2,clipz/2]) cube([clipx,clipy,clipz],true); } translate([-10,clipy-4,7]) rotate([0,90,0]) cylinder(r=sh/2,h=50); } }