/* Small grip you attach to two wood stick to grab stuff */ // allviews print base top pull guide use view="base"; view="top"; view="pull"; //view="guide"; //view="grip"; //view="print"; view="sample"; thick=2; // Size of the contact part contact_l=20; contact_w=10; woodr=11.6/2+0.25; // Long wood stick holding the base pullr=7.8/2+0.25; // Long wood stick pulling on the top handlel=30; module base(printpad){ translate([handlel,-0.5,0]) cube([contact_l,1,woodr+2]); translate([handlel,0,woodr+3]){ translate([0,-contact_w/2,0]) cube([contact_l,contact_w,thick]); rotate([90,180,90]) triangle_isocel(contact_w,3,contact_l); // Add some grips for (i=[0:9]){ translate([1.5+i*contact_l/10,-contact_w/2,thick]) rotate([90,0,180]) triangle_isocel(1,1,contact_w); } } translate ([0,0,woodr+1]) difference(){ union(){ rotate([0,90,0]) cylinder(r=woodr+1,h=handlel); // The hinges translate([handlel-5,-woodr-1,1]) cube([4,2,12]); translate([handlel-5,woodr-1,1]) cube([4,2,12]); } union(){ // hole in the handle rotate([0,90,0]) cylinder(r=woodr,h=handlel-3); // screw hole in handle rotate ([90,0,0]) translate([handlel/2,0,-woodr-2]) cylinder(r=1,h=woodr*3); // Hole in the hinge rotate([90,0,0]) translate([handlel-3,woodr+5,-woodr-2]) cylinder(r=1,h=woodr*3); } } if (printpad){ // Help stick to the printing bed translate([-10,-5,0]) cube([15,10,0.5]); translate([handlel+contact_l-5,-5,0]) cube([15,10,0.5]); } } module top(printpad){ translate([0,-contact_w/2,0.75]) cube([contact_l+2,contact_w,thick]); // Add some grips for (i=[0:18]){ translate([3.5+i*contact_l/20,-contact_w/2,1]) rotate([90,180,180]) triangle_isocel(1,1,contact_w); } // hinge hingeh=20; difference(){ union(){ translate([-3,-contact_w/2,0]) cube([4,contact_w,hingeh]); // Make it stronger translate([0,1,thick]) rotate([90,0,0]) triangle_rectangle(12,10,2); } union(){ // Make room for the push/push stick translate([-3,-2,hingeh-10]) cube([5,4,20]); // Two holes, one to connect to the base // and the other to connect the pull/push wood stick translate([-1,-10,hingeh-4]) rotate([-90,0,0]) cylinder(r=1,h=20); translate([-1,-10,3]) rotate([-90,0,0]) cylinder(r=1,h=20); } } if (printpad){ // Help stick to the printing bed translate([-10,-5,0]) cube([10,10,0.5]); translate([contact_l,-5,0]) cube([10,10,0.5]); } } module pull(printpad){ translate([0,0,pullr+1.5]){ difference(){ rotate([0,90,0]) cylinder(r=pullr+1.5,h=handlel); union(){ rotate([0,90,0]) cylinder(r=pullr+0.25,h=handlel-3); translate([handlel/2,15,0]) rotate([90,90,0]) cylinder(r=1,h=30); } } translate([handlel,-1.75,-3]) difference(){ cube([8,3.5,6]); translate([6,15,3]) rotate([90,90,0]) cylinder(r=1,h=30); } translate([handlel,-1.75,-pullr-1.5]){ cube([8,3.5,pullr]); } } if (printpad){ // Help stick to the printing bed translate([-7,-5,0]) cube([10,10,0.5]); translate([handlel+5,-5,0]) cube([10,10,0.5]); } } module guide(){ thick=10; difference(){ union(){ translate([0,-2.5,0]) cube([20,5,thick]); translate([0,0,0]) cylinder(r=woodr+1.5,h=thick); translate([25,0,0]) cylinder(r=pullr+2,h=thick); } union(){ translate([0,0,0]) cylinder(r=woodr+0.5,h=thick); translate([25,0,0]) cylinder(r=pullr+1,h=thick,$fn=40); translate([0,-8,5]) rotate([-90,0,0]) cylinder(r=1,h=5); } } } if (view == "base"){ base(true); }else if (view == "top"){ top(true); }else if (view == "pull"){ pull(true); }else if (view == "guide"){ guide(); }else if (view == "grip"){ base(false); translate([handlel-2,0,15]) top(false); translate([-9,0,26]) pull(false); translate([-30,0,woodr]) rotate([0,-90,0]) guide(); }else if (view == "sample"){ base(false); translate([handlel-2,0,15]) top(false); translate([-9,0,26]) pull(false); translate([-60,0,woodr]) rotate([0,-90,0]) guide(); translate([-100,0,woodr]) rotate([0,90,0]) cylinder(r=woodr,h=100); translate([-100,0,32]) rotate([0,90,0]) cylinder(r=pullr,h=100); }else if (view == "print"){ base(); translate([30,0,0]) top(); }