CEB Press v17.08/SCAD Files/
work in progress
creating an OpenSCAD replica of v17.08
Latest files on Google Drive for download: link
Contents
Default Variables
By making a SCAD file with the variables used throughout the CEB press, we can use the "include" command within each individual part's file to pull in the same dimensions. Read More
- vars.scad
brickW=6; brickL=12; brickCH=6; //Is brick height being shortened by d1z?? grateX=56; grateY=23; grateH=37; //Height mounted above press's frame grateA=17.5; //angle of grate //3.625 x 2.25 x 8 //6 x 12 x 6 $fn=8; //defines resolution of circles. 8 is okay for review. 100 or greater should be used for for final dxf export. dZstandard=0.5; //thickness of steel to be cut for drawer parts fZstandard=0.5; aZstandard=0.5; //thickness of steel to be cut for arm parts hZstandard=0.125; fBOLTHOLEstandardD=1; //standard bolts used on frame aBOLTHOLEstandardD=1; sliderodholeOD=1.2; d1bushingOD=1.25; d1bushingL=1.25; d1shaftOD=1; d1bolt1OD=1; d1bolt2OD=0.75; d1nut2AF=1.25; d1nut2H=0.665; dGap=0.03125; //gap between a hole cut's edge and the part sitting within the hole. //D3 appears to use 0.3125, is this in error? //all parts set to standard thickness below //off standard preferences can be defined below //drawer drawergap=0.0283; //extra room for drawer to slide in the space between f1 and f4 drawerHgap=0.1884; //total extra space from drawer sides to frame walls. sum of both sides. d2clevispinaccessholeOD=3; d1z=dZstandard; d2z=dZstandard; d3z=dZstandard; d4z=dZstandard; d5z=dZstandard; d6z=dZstandard; d5z=dZstandard; d7z=dZstandard; d8z=dZstandard; d9z=dZstandard; d11z=dZstandard; d12z=dZstandard; //frame f1y=6; f1z=fZstandard; f2y=3.5; f2z=fZstandard; f3y=3.5; f3z=fZstandard; f4y=11; f4z=fZstandard; f5y=3.5; f5z=fZstandard; f6y=8; f6z=fZstandard; f8y=brickW; f8z=fZstandard; f8boltD=1; f9y=4.5; f9z=fZstandard; f12z=fZstandard; f11x=1.25; f11z=fZstandard; f13z=fZstandard; f14y=3.5; f14z=fZstandard; //arms a1x=4; a1z=aZstandard; a1out=24; //length from frame to A5 edge for bricks to sit on as they exit a2x=6; a2z=aZstandard; a3x=4; a3y=72; a3z=aZstandard; a4x=6; a4y=72; a4z=aZstandard; a5x=6; a5y=72; a5z=aZstandard; a6z=aZstandard; //guards h1x=grateX; h1y=grateH; //might need to tweak for grate thickness h1z=hZstandard; h2z=hZstandard; h3z=hZstandard; h4z=hZstandard; h5z=hZstandard; h6z=hZstandard; h7z=hZstandard; h8z=hZstandard; // //Input your main cylinder's dimenions here // cylMainBore = 5; cylMainStroke = 16; cylMainExt = 43; cylMainRet = 27; cylMainA = (cylMainRet-cylMainStroke); //center to center minus stroke length cylMainB = 0.25; // cylinder wall thickness cylMainD = 2.5; //Rod OD cylMainE = 5.75; //rear pin holder width cylMainG = 4; //rod pin holder width cylMainJ = 3.8; //distance from the end of the cylinder body to rod pin center cylMainR = 1.52; //pin hole ID cylMainS = 2.5; //pin holder OD // //Input your drawer cylinder's dimenions here // // cylDrawerBore = 5; cylDrawerStroke = 16; cylDrawerExt = 43; cylDrawerRet = 27; cylDrawerA = (cylMainRet-cylMainStroke); //center to center minus stroke length cylDrawerB = 0.25; // cylinder wall thickness cylDrawerD = 2.5; //Rod OD cylDrawerE = 5.75; //rear pin holder width cylDrawerG = 4; //rod pin holder width cylDrawerJ = 3.8; //distance from the end of the cylinder body to rod pin center cylDrawerR = 1.52; //pin hole ID cylDrawerS = 2.5; //pin holder OD cylinderDRAWERbodyH=3; //measured when in position, largest length from top to bottom of cylinder cylinderDRAWERminC2C=0; //drawer's hydraulic cylinder's distance from the center of one mounting hole to the center of the other when fully compressed. cylinderDRAWERmaxC2C=0; ///drawer's hydraulic cylinder's distance from the center of one mounting hole to the center of the other when fully extended. cylinderDRAWERrodclevisW=2.5; //width of cylinders' clevis on end of rod cylinderDRAWERrodclevisID=1; cylinderDRAWERrodclevisOD=2; cylinderDRAWERrearclevisW=2.5; //width of mounting clevis cylinder body cylinderDRAWERrearclevisID=1; cylinderDRAWERrearclevisOD=2; cylinderDRAWERrearclevisClearance=3; //usable space around rear clevis pin (in diameter). be aware of hyraulic fittings. //the following variables are calculated in order of dependence on preceding variables d3x=brickL+(d2z*2); d3y=brickCH-d1z; d4x=brickW+d3z+d3z; d4y=brickCH-d1z; d5x=brickL+(d2z*2); d5y=brickW; d6x=brickL+(d2z*2); d6y=brickCH; d7x=cylinderDRAWERrearclevisClearance; d7y=a4z+d8z+cylinderDRAWERbodyH; d9x=cylinderDRAWERbodyH+d6z; //should be based on clevis size? d9y=cylinderDRAWERbodyH+d8z; d8x=brickL+(d2z*2); d8y=max(5,(d9x-d6z)); //need to review fundamentals, 5 minimun unless d9 gets larger than d8 d11x=1.5+(d1bolt1OD*2)+d1bushingOD; d11y=max((0.5+d1bushingL),4); d12x=d8x; d12y=d11y+1; f1x=((brickL+(d2z*2)+drawerHgap+(f9y*2))); f3x=f1x; d1x=(brickL+d2z+d2z); //d1x=(((f1x/2)-(((brickL+(d2z*2)+drawerHgap)/2)-fZstandard-(sliderodholeOD/2)))+(d11x/2))*2; d1y=((brickW+d3z+d3z)*3)+1; d2x=d8y+d6z+brickW+d3z+d5y+d3z; d2y=brickCH; f11y=f8y; f6x=brickL+(d2z*2)+(f9y*2)+drawerHgap; f9x=(f2z+((cylMainS+0.125)/2)+cylMainRet-cylMainJ+1+f4y+drawergap+d2y+f1y); //leaves 1" between top of cylinder and bottom of F4 f8x=f9x; f2x=brickL+(d2z*2)+drawerHgap+(f9y*2)-(1.4*2); //distance between large cut outs in f9 f5x=brickL+(d2z*2)+drawerHgap+(f9y*2)+(a1x*2); //distance between outer edges of each A1 f4x=f5x-0.5; //same as f5 but minus 0.25 on each side to give a little overhang f14x=brickL+(1*2)+(.125*2)+(dGap*2); f12x=f3x; f12y=(f3y*2)+brickW; sliderodoffset=(((brickL+(d2z*2)+drawerHgap)/2)-fZstandard-(sliderodholeOD/2)); distancetof8center=(cylDrawerExt+(a4x/2)+((d9x-d6z)/2)+d6z+(brickW/2)); //F8 center on A1 a1y=distancetof8center+(brickW/2)+a1out; a2y=a1y; h7x=f5x-((a1x/2)*2)+(1.5*2); h7y=cylDrawerStroke; h8x=f5x-((a1x/2)*2)+(1.5*2); h8y=a1out-a5x-f5y; //distance between a5 and f5 hopperBaseX=brickL; hopperBaseY=brickW; h2x=grateX; h2y=sqrt(((h1y-(sin(grateA)*grateY))*(h1y-(sin(grateA)*grateY)))+(((cos(grateA)*grateY)-hopperBaseY)*((cos(grateA)*grateY)-hopperBaseY))); //h1y-(sin(grateA)*grateY) //(cos(grateA)*grateY)-hopperBaseY echo(h1y-(sin(grateA)*grateY)); echo((cos(grateA)*grateY)-hopperBaseY); echo(h2y); echo(atan((h1y-(sin(grateA)*grateY))/((cos(grateA)*grateY)-hopperBaseY))); echo((h1y-(sin(grateA)*grateY))/(h1y)); // ECHO - REQUIRED PARTS BASED ON INPUTS echo(str("Minimum drawer cylinder stroke length: ",(d3z*2)+d5y+brickW)); //would be cool to validate and confirm user inputed stroke length. set error=1; if drawer cylinder is not long enough. print an echo warning. echo(str("Grate hieght above ground level: ",(1)));
Common Modules
Creating a file of modules will allow for them to be utilized in other files with the "use" command.
modus.scad
//Corner Joint - allows the sides of two parts to create inlayed corner. Aids with welding. //need to verify module math is the same throughout all parts. module cornerjoint(Z,L,H,EndGap,PadL,PadH,CJangle,CJcenter){ //change so that H = Z of inlayed part (usually 0.5) //add center and angle in degrees option, orgin far side of cut out area if((CJangle==0)&&(CJcenter==0)) { translate([0,0,0]) rotate([0,0,CJangle]) difference(){ cube([L,H+PadH,Z]); translate([EndGap,H,0]) cube([PadL,PadH,Z]); translate([L-EndGap-PadL,H,0]) cube([PadL,PadH,Z]);} } else if((CJangle==90)&&(CJcenter==0)) { translate([H+PadH,0,0]) rotate([0,0,CJangle]) difference(){ cube([L,H+PadH,Z]); translate([EndGap,H,0]) cube([PadL,PadH,Z]); translate([L-EndGap-PadL,H,0]) cube([PadL,PadH,Z]);} } else if((CJangle==180)&&(CJcenter==0)) { translate([L,H+PadH,0]) rotate([0,0,CJangle]) difference(){ cube([L,H+PadH,Z]); translate([EndGap,H,0]) cube([PadL,PadH,Z]); translate([L-EndGap-PadL,H,0]) cube([PadL,PadH,Z]);} } else if((CJangle==270)&&(CJcenter==0)) { translate([0,L,0]) rotate([0,0,CJangle]) difference(){ cube([L,H+PadH,Z]); translate([EndGap,H,0]) cube([PadL,PadH,Z]); translate([L-EndGap-PadL,H,0]) cube([PadL,PadH,Z]);} } //centered else if((CJangle==0)&&(CJcenter==1)) { translate([-L/2,0,0]) rotate([0,0,CJangle]) difference(){ cube([L,H+PadH,Z]); translate([EndGap,H,0]) cube([PadL,PadH,Z]); translate([L-EndGap-PadL,H,0]) cube([PadL,PadH,Z]);} } else if((CJangle==90)&&(CJcenter==1)) { translate([0,-L/2,0]) rotate([0,0,CJangle]) difference(){ cube([L,H+PadH,Z]); translate([EndGap,H,0]) cube([PadL,PadH,Z]); translate([L-EndGap-PadL,H,0]) cube([PadL,PadH,Z]);} } else if((CJangle==180)&&(CJcenter==1)) { translate([L/2,0,0]) rotate([0,0,CJangle]) difference(){ cube([L,H+PadH,Z]); translate([EndGap,H,0]) cube([PadL,PadH,Z]); translate([L-EndGap-PadL,H,0]) cube([PadL,PadH,Z]);} } else if((CJangle==270)&&(CJcenter==1)) { translate([0,L/2,0]) rotate([0,0,CJangle]) difference(){ cube([L,H+PadH,Z]); translate([EndGap,H,0]) cube([PadL,PadH,Z]); translate([L-EndGap-PadL,H,0]) cube([PadL,PadH,Z]);} } } //end cornerjoint module //Tab Insert - used to cut a hole for an abutting part to insert into. Typically aids with welding the two parts. module tabinsert(X,Y,Z,dGap,cGap,c1,c2,c3,c4,c5,c6,c7,c8,center){ translate([-dGap-(center*(X/2)),-dGap-(center*(Y/2)),0]){ //main cut cube([X+(dGap*2),Y+(dGap*2),Z]); //corner c1c2 translate([-cGap,(Y+(dGap*2))-c1+cGap,0]) { cube([c2,c1,Z]);} //corner c3c4 translate([(X+(dGap*2))-c3+cGap,(Y+(dGap*2))-c4+cGap,0]){ cube([c3,c4,Z]); } //corner c5c6 translate([(X+(dGap*2))-c6+cGap,-cGap,0]) { cube([c6,c5,Z]); } //corner c7c8 translate([-cGap,-cGap,0]){ cube([c7,c8,Z]); } } //end center translate } //end tabinsert module module nut(flattoflat,nutheight){ //distance from one flat side to the other flat side "A/F" //typical sizes found here: //https://en.wikipedia.org/wiki/Nut_(hardware) difference(){ translate([0,0,nutheight/2]) cube(size = [10,10,nutheight], center = true); for(i=[1:6]){ rotate([0,0,i*60]) difference(){ translate([-10,0,0]) cube([20,20,nutheight]); translate([-10,0,0]) cube([20,flattoflat/2,nutheight]); } //end difference } //end for } //end differeence } //end module
Frame
Frame Assembly
- F4 holes look slightly more narrow than the F9 holes.
- calculate F4 and F5 Z height from the top down. Let f9 length be adjusted by cylinder. try to avoid calculation again.
- Fp.scad
include <vars.scad>; use <modus.scad>; use <f1p.scad>; use <f2p.scad>; use <f3p.scad>; use <f4p.scad>; use <f5p.scad>; use <f6p.scad>; //use <f7p.scad>; use <f8p.scad>; use <f9p.scad>; //use <f10p.scad>; //part retired? use <f11p.scad>; use <f12p.scad>; //use <f13p.scad>; use <f14p.scad>; Fp(); module Fp(){ translate([0,(f8y/2)+f1z,f9x]) rotate([90,180,0]) f1p(); translate([0,-(f8y/2),f9x]) rotate([90,180,0]) f1p(); translate([-f2x/2,(f8y/2),f9x-f1y]) rotate([0,0,0]) f2p(); //connected to F1 translate([f2x/2,-(f8y/2),f9x-f1y]) rotate([0,0,180]) f2p(); translate([0,(f8y/2),f9x]) rotate([0,180,0]) f3p(); //connected to F1 translate([0,-(f8y/2),f9x]) rotate([0,180,180]) f3p(); //connected to F1 translate([0,-f12y/2,f9x]) f12p(); translate([0,(f8y/2)+f6z,(f9x-f1y-brickCH-drawergap-f4y)]) rotate([90,0,0]) f4p(); //?group with f5? translate([0,-(f8y/2),(f9x-f1y-brickCH-drawergap-f4y)]) rotate([90,0,0]) f4p(); translate([0,(f8y/2),(f9x-f1y-brickCH-drawergap-f4y)+f4y]) rotate([0,180,0]) f5p(); //connected to F4 translate([0,-(f8y/2),(f9x-f1y-brickCH-drawergap-f4y)+f4y]) rotate([0,180,180]) f5p(); //connected to F4 translate([-f14x/2,(f8y/2),(f9x-f1y-brickCH-drawergap-f4y)+7.5-(f14z/2)]) rotate([0,0,0]) f14p(); //connected to F4 translate([f14x/2,-(f8y/2),(f9x-f1y-brickCH-drawergap-f4y)+7.5-(f14z/2)]) rotate([0,0,180]) f14p(); //connected to F4 translate([0,(f8y/2)+f6z,f6y]) rotate([90,180,0]) f6p(); translate([0,-(f8y/2),f6y]) rotate([90,180,0]) f6p(); translate([-f2x/2,(f8y/2),0]) rotate([0,0,0]) f2p(); //connected to F6 translate([f2x/2,-(f8y/2),0]) rotate([0,0,180]) f2p(); translate([f6x/2,0,0]) rotate([0,0,180]) f11p(); translate([f6x/2,0,f9x-f1y-d2y-f4y-drawergap-0.5]) rotate([0,0,180]) f11p(); translate([f6x/2,0,f9x-0.5]) rotate([0,0,180]) f11p(); translate([-f6x/2,0,0]) rotate([0,0,0]) f11p(); translate([-f6x/2,0,f9x-f1y-d2y-f4y-drawergap-0.5]) rotate([0,0,0]) f11p(); translate([-f6x/2,0,f9x-0.5]) rotate([0,0,0]) f11p(); translate([-((brickL+(d2z*2)+drawerHgap)/2),0,0]){ //??? rotate([0,0,90]){ translate([(f8y/2),f8z,0]) rotate([90,-90,0]) f8p(); translate([(f8y/2)+(f9z/2)-(f8z/2),0,0]) rotate([0,-90,0]) f9p(); translate([-(f8y/2)+(f9z/2)+(f8z/2),0,0]) rotate([0,-90,0]) f9p(); } //end rotate } //end translate translate([((brickL+(d2z*2)+drawerHgap)/2),0,0]){ rotate([0,0,-90]){ translate([(f8y/2),f8z,0]) rotate([90,-90,0]) f8p(); translate([(f8y/2)+(f9z/2)-(f8z/2),0,0]) rotate([0,-90,0]) f9p(); translate([-(f8y/2)+(f9z/2)+(f8z/2),0,0]) rotate([0,-90,0]) f9p(); } //end rotate } //end translate } //end Fp module
F1
Welds to: F2, F3
Bolts to: F9
Abuts: A2
- need to tweak bolt translates?
- change to use cornerjoint module instead of insert module on outter ends of F3 connections
include <vars.scad>; use <modus.scad>; f1p(); module f1p(){ difference(){ translate([-(f1x/2),0,0]) cube([f1x,f1y,f1z]); translate([-(f1x/2),0,0]) cuts(); translate([(f1x/2),0,0]) mirror([1,0,0]) cuts(); } //end difference module cuts(){ tabinsert(1,f3z,f1z,0.0625,0.125,0,0,0.25,0.25,0.0,0,0,0,0); translate([0,f1y-0.25,0]) cube([0.4,0.25,f1z]); //appears to be intended to interface with A2, but not sure why translate([(f1x-f2x)/2,f1y-f2z,0]) tabinsert(1,f2z,f1z,0.0625,0.125,0,0,0,0,0.25,0.25,0.25,0.25,0); //f2 translate([(f1x/2)-1,0,0]) tabinsert(1,f3z,f1z,0.0625,0.125,0.25,0.25,0,0,0.0,0,0,0,0); translate([((f1x-d3x-drawerHgap)/2)-2,1.5,0]) //bolt center to inner edge of f9=2 cylinder(h = f1z, r = 0.375); translate([((f1x-d3x-drawerHgap)/2)-2,4.5,0]) cylinder(h = f1z, r = 0.375); translate([(f1x/2)-(((brickL+(d2z*2)+drawerHgap)/2)-fZstandard-(sliderodholeOD/2)),f1y-(d2z+0.5+(sliderodholeOD/2)),0]) //slider rod cylinder(h = f1z, r = sliderodholeOD/2); } //end cuts module } //end f1p module
F2
Welds to: F1, F4, F6
include <vars.scad>; use <modus.scad>; f2p(); module f2p(){ difference(){ cube([f2x,f2y,f2z]); translate([1,0,0]) cornerjoint(f2z,f2x-2,f1z,0.125,f2x-2-0.25,0.125,0,0); } //end difference } //end f2p module
F3
Welds to: F1
Bolts to: F12
- F3 and F1 should probably be made the same length.
- going to set f3y=f1y. also some tweaks to insert holes
include <vars.scad>; use <modus.scad>; f3p(); module f3p(){ difference(){ translate([-(f3x/2),0,0]) cube([f3x,f3y,f3z]); translate([-(f3x/2),0,0]) cuts(); translate([(f3x/2),0,0]) mirror([1,0,0]) cuts(); } //end difference module cuts(){ translate([1,0,0]) cornerjoint(f3z,(f3x-4)/2,f1z,1,1,0.125,0,0); translate([5.375,f3y/2,0]) cylinder(h = f3z, r = 0.5); } //end cuts module } //end f3p module
F4
Welds to: F14, F5
Bolts to: F9
- bolt holes look like they're maybe slightly miss aligned?
- are they different sized?
include <vars.scad>; use <modus.scad>; f4p(); module f4p(){ difference(){ translate([-(((brickL+(d2z*2)+drawerHgap+(f9y*2)))/2),0,0]) union(){ cube([(brickL+(d2z*2)+drawerHgap+(f9y*2)),f4y,f4z]); translate([-((f4x-(brickL+(d2z*2)+drawerHgap+(f9y*2))))/2,f4y/2,0]) f4triangle(); translate([f4x-((f4x-(brickL+(d2z*2)+drawerHgap+(f9y*2)))/2),f4y/2,0]) mirror([1,0,0]) f4triangle(); } translate([-(f4x/2),0,0]) cuts(); translate([(f4x/2),0,0]) mirror([1,0,0]) cuts(); } //end difference module cuts(){ //f5 outer translate([(f4x/2)+((f5x/2)-2),f4y,0]) cornerjoint(f4z,4,f5z,0.125,1,0.125,180,1); //tabinsert(4,f5z*2,f4z,0.0625,0.125,0,0,0,0,0,0,0.25,0.25,1); //f5 center translate([(f4x/2),f4y,0]) tabinsert(2,f5z*2,f4z,0.0625,0.125,0,0,0,0,0.0,0,0.25,0.25,1); //f14 - previoiusly f2 translate([(f4x-f14x+1)/2,7.5,0]) tabinsert(1,f2z,f6z,0.0625,0.125,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,1); //f9 bolts translate([((f4x-brickL-(d2z*2)-drawerHgap)/2)-2,2,0]) cylinder(h = f4z, r = 0.5025); //diameter 1.0? translate([((f4x-brickL-(d2z*2)-drawerHgap)/2)-2,6,0]) cylinder(h = f4z, r = 0.5025); translate([((f4x-brickL-(d2z*2)-drawerHgap)/2)-2,9,0]) cylinder(h = f4z, r = 0.5025); } //end module module f4triangle (){ difference(){ cube([(f4x-(brickL+(d2z*2)+drawerHgap+(f9y*2)))/2,f4y/2,f4z]); difference(){ cube([(f4x-(brickL+(d2z*2)+drawerHgap+(f9y*2)))/2,f4y/2,f4z]); translate([(f4x-(brickL+(d2z*2)+drawerHgap+(f9y*2)))/2,0,0]) rotate([0,0,atan(((f4x-(brickL+(d2z*2)+drawerHgap+(f9y*2)))/2)/(f4y/2))]) cube([10,10,f4z]); translate([(f4x-(brickL+(d2z*2)+drawerHgap+(f9y*2)))/2,0,0]) cube([10,10,f4z]); } } } //end f4triangle module } //end f4p module
F5
Welds to: F4
Bolts to: A1
- f5p.scad
include <vars.scad>; use <modus.scad>; f5p(); module f5p(){ difference(){ translate([-(f5x/2),0,0]) cube([f5x,f5y,f5z]); translate([-(f5x/2),0,0]) cuts(); translate([(f5x/2),0,0]) mirror([1,0,0]) cuts(); } //end difference module cuts(){ translate([4,0,0]) cornerjoint(f5z,(f5x-(4*2)-2)/2,f4z,1,1,0.125,0,0); //arm bolt hole translate([(a1x/2),f5y-1.5,0]) //aligns with hole in center of a1x cylinder(h = f5z, r = 0.5); //might add an insert for an A6 type of support } //end cuts module } //end f5p module
F6
Welds to: F2, F7, DOM Tube
Bolts to: F9
- changed bolt hole distance to outer edge, the drawerHgap makes it goofy to have a round number from center.
- need to change translate to accomidate for drawerHgap
- need to use insert module for f2 holes
- cylinder mounting hole diameter is same as cylinders pin holder + 1/16
- DOM inserted into hole then welded in place, using cylinder as guide
- DOM tube welds to F6 and F2
include <vars.scad>; use <modus.scad>; f6p(); module f6p(){ difference(){ translate([-(f6x/2),0,0]) cube([f6x,f6y,f6z]); translate([-(f6x/2),0,0]) cuts(); translate([(f6x/2),0,0]) mirror([1,0,0]) cuts(); } //end difference module cuts(){ translate([(f6x-f2x)/2,f6y-f2z,0]) tabinsert(1,f2z,f6z,0.0625,0.125,0,0,0,0,0.25,0.25,0.25,0.25,0); //F2 //need to change this section to match MAINcylinder specs translate([f6x/2,f6y-f2z-((cylMainS+0.125)/2),0]) cylinder(h = f6z, r = (cylMainS+0.125)/2); // bolt holes to f9 translate([((f6x-brickL-(d2z*2)-drawerHgap)/2)-2,2,0]) cylinder(h = f6z, r = 0.38); //diameter 0.76? translate([((f6x-brickL-(d2z*2)-drawerHgap)/2)-2,6,0]) cylinder(h = f6z, r = 0.38); } //end cuts module } //end f6p module
F7
F8
Welds to: F9, F10
Bolts to: Rub Plate ?
- need to redo cornerjoint module inputs
- need to set standard bolt size
include <vars.scad>; use <modus.scad>; f8p(); module f8p(){ difference(){ cube([f8x,f8y,f8z]); translate([(1/12)*f8x,0,0]) cornerjoint(f8z,(f8x/6),f9z,0.25,0.5,0.125,0,1); translate([(5/12)*f8x,0,0]) cornerjoint(f8z,(f8x/6),f9z,0.25,0.5,0.125,0,1); translate([(9/12)*f8x,0,0]) cornerjoint(f8z,(f8x/6),f9z,0.25,0.5,0.125,0,1); translate([(1/12)*f8x,f8y,0]) cornerjoint(f8z,(f8x/6),f9z,0.25,0.5,0.125,180,1); translate([(5/12)*f8x,f8y,0]) cornerjoint(f8z,(f8x/6),f9z,0.25,0.5,0.125,180,1); translate([(9/12)*f8x,f8y,0]) cornerjoint(f8z,(f8x/6),f9z,0.25,0.5,0.125,180,1); hull(){ translate([f8x-7-((f1y+d2y+drawergap+1)-(0.26/2)),f8y/2,0]) //?x interfaces with what? need to calculate center of F8 cylinder(h = f8z, r = f8boltD/2); translate([f8x-7-((f1y+d2y+drawergap+1)+(0.26/2)),f8y/2,0]) cylinder(h = f8z, r = f8boltD/2); } hull(){ translate([f8x-((f1y+d2y+drawergap+1)-(0.26/2)),f8y/2,0]) //?x interfaces with what? cylinder(h = f8z, r = f8boltD/2); translate([f8x-((f1y+d2y+drawergap+1)+(0.26/2)),f8y/2,0]) cylinder(h = f8z, r = f8boltD/2); } } } //end f8p module
F9
Welds to: F8, F11
Bolts to: F1, F4, F6
Abuts: A1 ?, A2 ?, F12
include <vars.scad>; use <modus.scad>; f9p(); module f9p(){ difference(){ cube([f9x,f9y,f9z]); translate([(3/12)*f9x,0,0]) cornerjoint(f9z,(f8x/6),f8z,0.25,0.5,0.125,0,1); translate([(7/12)*f9x,0,0]) cornerjoint(f9z,(f8x/6),f8z,0.25,0.5,0.125,0,1); translate([(11/12)*f9x,0,0]) cornerjoint(f9z,(f8x/6),f8z,0.25,0.5,0.125,0,1); translate([0,f9y-0.5,0]) tabinsert(0.5,0.5,f9z,0.03125,0.125,0,0,0,0,0.25,0.25,0,0,0); translate([f9x-f1y-d2y-f4y-drawergap-0.5,f9y-0.5,0]) tabinsert(0.5,0.5,f9z,0.03125,0.125,0,0,0,0,0.25,0.25,0.25,0.25,0); translate([f9x-0.5,f9y-0.5,0]) tabinsert(0.5,0.5,f9z,0.03125,0.125,0,0,0,0,0,0,0.25,0.25,0); //big cutout translate([f9x-(f1y-0.2)-(a2x+0.4),f9y-1.4,0]) cube([a2x+0.4,1.4,f9z]); //?interfaces with a2? //bolt holes //f6 translate([2,2,0]) //?x interfaces with f6? //replacing translate y=1.9 with y=f9y-2.5 cylinder(h = f9z, r = 0.38); translate([6,2,0]) //?x interfaces with f6? cylinder(h = f9z, r = 0.38); //distance from center to edge of part is 1.5 //distance between center to center is 9.5283 //distance from center to edge of part is 2 //gap between parts is 6.0283 //drawer is 6.0 tall //leaves 0.0283 space //should this be 0.03125? (1/32) //should f4 be attached with 4 smaller bolts instead of 3 big ones. would prevent all movement? //f4 translate([f9x-f1y-d2y-drawergap-2,2,0]) //replacing translate y=1.9 with f9y-2.5 cylinder(h = f9z, r = 0.5025); translate([f9x-f1y-d2y-drawergap-5,2,0]) cylinder(h = f9z, r = 0.5025); translate([f9x-f1y-d2y-drawergap-9,2,0]) cylinder(h = f9z, r = 0.5025); //f1 translate([f9x-4.5,2,0]) //?x interfaces with f1? cylinder(h = f9z, r = 0.38); translate([f9x-1.5,2,0]) //?x interfaces with f1? cylinder(h = f9z, r = 0.38); } }
F10
Welds to: F8?
- is this part being retired?
F10x=5.9; F10y=2; F10z=0.5; cube([F10x,F10y,F10y]);
F11
Welds to: F9
include <vars.scad>; use <modus.scad>; f11p(); module f11p(){ difference(){ translate([0,-(f11y/2),0]) cube([f11x,f11y,f11z]); translate([0,-(f11y/2),0]) cuts(); translate([0,(f11y/2),0]) mirror([0,1,0]) cuts(); } //end difference module cuts(){ translate([0.5,0,0]) cube([0.125,0.125+f9z,f11z]); translate([0.625,0,0]) cube([f11x-0.5-0.125,f9z,f11z]); } //end cuts module } //end f11p module
F12
Bolts to Hopper Seat
include <vars.scad>; use <modus.scad>; f12p(); module f12p(){ difference(){ translate([-(f12x/2),0,0]) cube([f12x,f12y,f12z]); translate([-(f12x/2),0,0]) cuts(); translate([(f12x/2),0,0]) mirror([1,0,0]) cuts(); } //end difference module cuts(){ translate([5.375,(f3y/2),0]) //??5.375 should this be something else cylinder(h = f12z, r = 0.5); translate([5.375,(f12y/2)+(brickW/2)+(f3y/2),0]) cylinder(h = f12z, r = 0.5); translate([f12x/2,f12y/2,f12z/2]) cube(size=[brickL+(d2z*2)+fZstandard,brickW+fZstandard,f12z], center=true); } //end cuts module } //end f12p module
F13
Spacer betwwen F6 and F9 used to accomidate MAINcylinder with larger diameter than brickW
include <vars.scad>; use <modus.scad>; f13p(); module f13p(){ difference(){ cube([f6y,f9y,f13z]); translate([2,f9y-2.5,0]) //?x interfaces with f6? //replacing translate y=1.9 with y=f9y-2.5 cylinder(h = f9z, r = 0.38); translate([6,f9y-2.5,0]) //?x interfaces with f6? cylinder(h = f9z, r = 0.38); } } //end f13p module
F14
Weld to F4
Same as F2 but different length
include <vars.scad>; use <modus.scad>; f14p(); module f14p(){ difference(){ cube([f14x,f14y,f14z]); translate([1,0,0]) cornerjoint(f14z,f14x-2,f4z,0.125,f14x-2-0.25,0.125,0,0); } //end difference } //end f14p module
Arms
Arm Assembly
- need to add inserts for drawer cylinder mount
include <vars.scad>; use <modus.scad>; use<a1p.scad>; use<a2p.scad>; use<a3p.scad>; use<a4p.scad>; use<a5p.scad>; use<d7p.scad>; Ap(); module Ap(){ translate([-(f5x/2)+(a1x/2),0,0]){ translate([(a1x/2)-a1x,0,0]) a1p(); translate([(a1x/2)-a2z,0,a2x]) rotate([0,90,0]) a2p(); } //end translate translate([(f5x/2)-(a1x/2),0,0]){ mirror([1,0,0]){ translate([(a1x/2)-a1x,0,0]) a1p(); translate([(a1x/2)-a2z,0,a2x]) rotate([0,90,0]) a2p(); } //end mirror } //end translate translate([a3y/2,a3z,-a3x]) rotate([0,270,90]) a3p(); translate([a4y/2,a4x,0]) rotate([180,0,270]) a4p(); translate([cylDrawerE/2,-(d7x/2)+(a4x/2),-a4z]) rotate([90,0,90]) d7p(); mirror([1,0,0]){ translate([cylDrawerE/2,-(d7x/2)+(a4x/2),-a4z]) rotate([90,0,90]) d7p(); } translate([a3y/2,a2y,-a3x]) rotate([0,270,90]) a3p(); translate([a5y/2,a2y-a5x,-a5z]) rotate([0,0,90]) a5p(); }
A1
Welds to: A2, A6
Bolts to: A4, A5, F1, H7, H8
Abuts: F9
- need to tweak so that fully extended drawer cylinder places drawer with opening beneath hopper opening
- use cylinder spec of minimum length/maximum length when extended
include <vars.scad>; use <modus.scad>; a1p(); module a1p(){ difference(){ cube([a1x,a1y,a1z]); translate([(0.625/2),1,0]) tabinsert(0.625,a6z+(dGap*2),a1z,0.0625,0.125,0,0,0.25,0.25,0.25,0.25,0,0,1); translate([(0.625/2),distancetof8center,0]) // center in middle F8 tabinsert(0.625,a6z+(dGap*2),a1z,0.0625,0.125,0,0,0.25,0.25,0.25,0.25,0,0,1); translate([(0.625/2),a1y-1,0]) tabinsert(0.625,a6z+(dGap*2),a1z,0.0625,0.125,0,0,0.25,0.25,0.25,0.25,0,0,1); translate([a1x/2,(a4x/2)-1,0]) cylinder(h = a1z, r = 0.4); // could create a variable for this bolt size translate([a1x/2,(a4x/2)+1,0]) cylinder(h = a1z, r = 0.4); //H7 translate([a1x/2,distancetof8center-(brickW/2)-f5y-(1.75),0]) cylinder(h = a1z, r = 0.4); //H7 translate([a1x/2,distancetof8center-(brickW/2)-f5y-(h7y-1.75),0]) cylinder(h = a1z, r = 0.4); //F5 translate([a1x/2,distancetof8center-(brickW/2)-(f5y-1.5),0]) cylinder(h = a1z, r = 0.4); //F5 translate([a1x/2,distancetof8center+(brickW/2)+(f5y-1.5),0]) cylinder(h = a1z, r = 0.4); //H8 translate([a1x/2,distancetof8center+(brickW/2)+f5y+(2),0]) cylinder(h = a1z, r = 0.4); //H8 translate([a1x/2,distancetof8center+(brickW/2)+f5y+(5),0]) cylinder(h = a1z, r = 0.4); //H8 translate([a1x/2,distancetof8center+(brickW/2)+f5y+(h8y-2),0]) cylinder(h = a1z, r = 0.4); //A5 translate([a1x/2,a1y-(a5x/2),0]) cylinder(h = a1z, r = 0.4); //corner joints cjtablength=((a1y-(0.125*5.5))/12); cjinsertlength=cjtablength+0.125; for(i=[0:5]) translate([a1x+0.00001,(i*(cjtablength+cjinsertlength))+(cjinsertlength/2)-(0.125/2),0]) rotate([0,0,90]) cornerjoint(a1z,cjinsertlength,a2z,0.125,0.5,0.125,0,1); } //end difference } //end a1p module
A2
Welds to: A1, A6
Bolts to: Guards, Hopper mounts
Abuts: F1 (?), F9
include <vars.scad>; use <modus.scad>; a2p(); module a2p(){ difference(){ cube([a2x,a2y,a2z]); translate([(0.625/2),1,0]) tabinsert(0.625,a6z+(dGap*2),a2z,0.0625,0.125,0,0,0.25,0.25,0.25,0.25,0,0,1); translate([(0.625/2),distancetof8center,0]) // center in middle F8 tabinsert(0.625,a6z+(dGap*2),a2z,0.0625,0.125,0,0,0.25,0.25,0.25,0.25,0,0,1); translate([(0.625/2),a2y-1,0]) tabinsert(0.625,a6z+(dGap*2),a2z,0.0625,0.125,0,0,0.25,0.25,0.25,0.25,0,0,1); //corner joints cjtablength=((a2y-(0.125*5.5))/12); cjinsertlength=cjtablength+0.125; for(i=[0:5]) translate([a2x+0.00001,(i*(cjtablength+cjinsertlength))+(cjinsertlength/2)-(0.125/2)+(cjtablength+(0.125/2)),0]) rotate([0,0,90]) cornerjoint(a2z,cjinsertlength,a1z,0.125,0.5,0.125,0,1); } //end difference } //end a2p module
A3
Welds to: A4, A5
include <vars.scad>; use <modus.scad>; a3p(); module a3p(){ difference(){ cube([a3x,a3y,a3z]); //corner joints cjtablength=((a3y-(0.125*5.5))/12); cjinsertlength=cjtablength+0.125; for(i=[0:5]) translate([a3x+0.00001,(i*(cjtablength+cjinsertlength))+(cjinsertlength/2)-(0.125/2)+(cjtablength+(0.125/2)),0]) rotate([0,0,90]) cornerjoint(a3z,cjinsertlength,a4z,0.125,0.5,0.125,0,1); } //end difference } //end a3p module
A4
Welds to: A3
Bolts to: A1
- add insert holes for drawer part D7
- location will be determined by cylinder specifications.
- length of A1 and holes to attach to A4 will need to be go along with this.
include <vars.scad>; use <modus.scad>; a4p(); module a4p(){ difference(){ cube([a4x,a4y,a4z]); //corner joints cjtablength=((a4y-(0.125*5.5))/12); cjinsertlength=cjtablength+0.125; for(i=[0:5]) translate([a4x+0.00001,(i*(cjtablength+cjinsertlength))+(cjinsertlength/2)-(0.125/2),0]) rotate([0,0,90]) cornerjoint(a4z,cjinsertlength,a3z,0.125,0.5,0.125,0,1); } //end difference } //end a4p module
A5
Welds to: A3
Bolts to: A1
include <vars.scad>; use <modus.scad>; a5p(); module a5p(){ difference(){ cube([a5x,a5y,a5z]); //corner joints cjtablength=((a5y-(0.125*5.5))/12); cjinsertlength=cjtablength+0.125; for(i=[0:5]) translate([a5x+0.00001,(i*(cjtablength+cjinsertlength))+(cjinsertlength/2)-(0.125/2),0]) rotate([0,0,90]) cornerjoint(a5z,cjinsertlength,a3z,0.125,0.5,0.125,0,1); } //end difference } //end a5p module
A6
Welds to: A1, A2
include <vars.scad>; use <modus.scad>; a6p(); module a6p(){ X=a2x; Y=a1x; Zx=a2z; Zy=a1z; W=min(((1)/cos((atan((Y-1)/(X-1))))),((1)/sin((atan((Y-1)/(X-1)))))); //trying to make some overhang for insert to butt up against. not perfect but working //trying for 0.5, but not getting there exactly difference(){ union(){ translate([-1/tan(atan((Y-1)/(X-1))),0,0]) rotate([0,0,atan((Y-1)/(X-1))]) translate([0,-W,0]) #cube([50,W,a6z]); cube([0.625,Zx,a6z]); translate([X-Zy,Y-0.625,0]) cube([Zy,0.625,a6z]); } //end union - start difference translate([0.625,0,0]) cube([100,Zx,a6z]); translate([-100,-99,0]) cube([100,100,a6z]); translate([0,-100,0]) cube([100,100,a6z]); translate([0,Y,0]) cube([100,100,a6z]); translate([X,0,0]) cube([100,100,a6z]); translate([X-Zy,Y-0.625-100,0]) cube([Zy,100,a6z]); } //end difference } //end a6p module
Drawer
Drawer Assembly
- origin located at center of bottom of compression chamber
- X-axis oriented along movement of drawer
- Dp.scad
include <vars.scad>; use <modus.scad>; use<d1p.scad>; use<d2p.scad>; use<d3p.scad>; use<d4p.scad>; use<d5p.scad>; use<d6p.scad>; use<d8p.scad>; use<d9p.scad>; use<d12p.scad>; use<dRodBushingHolder2top.scad>; use<dRodBushingHolder2bottom.scad>; Dp(); module Dp(){ //main translate translate([-d8y-d6z-(brickW/2),-d2z-(brickL/2),0]){ translate([0,d2z,0]) rotate([90,0,0]) d2p(); translate([0,d2z+d2z+brickL,0]) rotate([90,0,0]) d2p(); translate([0,d8x/2,0]) rotate([0,0,270]) d8p(); translate([d8y-f2y+d6z,d12x/2,d2y-d12z]) rotate([0,0,90]) d12p(); translate([d8y-f2y+d6z-d12y,((d1x/2)+(d11x/2))-((((brickL+(d2z*2)+drawerHgap)/2)-fZstandard-(sliderodholeOD/2))),d3y+d1z]) rotate([0,0,270]) dRodBushingHolderbottom(d1bushingOD,d1bushingOD,d1shaftOD,d1bolt1OD,d1bolt2OD,d1nut2AF,d1nut2H); translate([d8y-f2y+d6z-d12y+d11y,(d1x/2)-(d11x/2)+((((brickL+(d2z*2)+drawerHgap)/2)-fZstandard-(sliderodholeOD/2))),d3y+d1z]) rotate([0,0,90]) dRodBushingHolderbottom(d1bushingOD,d1bushingOD,d1shaftOD,d1bolt1OD,d1bolt2OD,d1nut2AF,d1nut2H); translate([d8y+d6z,d6x/2,0]) rotate([90,0,270]) d6p(); translate([d8y+d6z+brickW,d3x/2,d3y]) rotate([270,0,270]) d3p(); translate([d8y+d6z+brickW+d3z,d5x/2,0]) rotate([0,0,270]) d5p(); translate([d8y+d6z+brickW+d3z+(d5y/2),((d5x/2)+(d5z/2))-(brickL/4),0]) rotate([90,0,0]) d4p(); translate([d8y+d6z+brickW+d3z+(d5y/2),(d5x/2)+(d5z/2),0]) rotate([90,0,0]) d4p(); translate([d8y+d6z+brickW+d3z+(d5y/2),((d5x/2)+(d5z/2))+(brickL/4),0]) rotate([90,0,0]) d4p(); translate([d8y+d6z+brickW+d5y+d3z,d3x/2,d3y]) rotate([270,0,270]) d3p(); translate([d8y+d6z,(((d6x-cylinderDRAWERrodclevisW)/2)-(d9z)),0]) rotate([90,0,180]) d9p(); translate([d8y+d6z,(cylinderDRAWERrodclevisW+d9z)+((((d6x-cylinderDRAWERrodclevisW)/2)-(d9z))),0]) rotate([90,0,180]) d9p(); translate([(d8y+d6z+brickW),(brickL/2)+d2z,d3y]) rotate([0,0,270]) d1p(); translate([(d8y+d6z+brickW)+d1y-d11y,((d1x/2)+(d11x/2))-((((brickL+(d2z*2)+drawerHgap)/2)-fZstandard-(sliderodholeOD/2))),d3y+d1z]) rotate([0,0,270]) dRodBushingHolderbottom(d1bushingOD,d1bushingOD,d1shaftOD,d1bolt1OD,d1bolt2OD,d1nut2AF,d1nut2H); translate([(d8y+d6z+brickW)+d1y,(d1x/2)-(d11x/2)+((((brickL+(d2z*2)+drawerHgap)/2)-fZstandard-(sliderodholeOD/2))),d3y+d1z]) rotate([0,0,90]) dRodBushingHolderbottom(d1bushingOD,d1bushingOD,d1shaftOD,d1bolt1OD,d1bolt2OD,d1nut2AF,d1nut2H); //translate([0,0,0]) //dRodBushingHoldertop(d1bushingOD,d1bushingOD,d1shaftOD,d1bolt1OD,d1bolt2OD); // //add drawer cylinger rod half and rod clevis // } //end main translate } //end Dp module
D1
- does D1 need to be longer to prevent bushing holder from hitting D3?
- can the holes for the bushing holders be tapped? do they need to have bolts?
- any room below? bricks sliding here.
- can nuts welded above holes?
- d1p.scad
include <vars.scad>; use <modus.scad>; d1p(); module d1p(){ difference(){ translate([-(d1x/2),0,0]) cube([d1x,d1y,d1z]); translate([-(d1x/2),0,0]) cuts(); translate([(d1x/2),0,0]) mirror([1,0,0]) cuts(); } //end difference module cuts(){ translate([(d1x-brickL-d2z-d2z)/2,1.5,0]) //1.5 could be better defined cube([d2z+dGap,d3z+brickW-1.5,d1z]); //June freecad model has larger cut out //d11 bolt 1a - will these holes need to be tapped? translate([((d1x/2)-(((brickL+(d2z*2)+drawerHgap)/2)-fZstandard-(sliderodholeOD/2)))+(d11x/2)-((d1bolt1OD/2)+0.5),d1y-(d1bolt1OD/2)-0.5,0]) cylinder(h = f1z, r = d1bolt1OD/2); //d11 bolt 1b - will these holes need to be tapped? translate([((d1x/2)-(((brickL+(d2z*2)+drawerHgap)/2)-fZstandard-(sliderodholeOD/2)))+(d11x/2)-((d1bolt1OD/2)+0.5),d1y-d11y+((d1bolt1OD/2)+0.5),0]) cylinder(h = f1z, r = d1bolt1OD/2); //mid section excess cut translate([((d1x/2)-(((brickL+(d2z*2)+drawerHgap)/2)-fZstandard-(sliderodholeOD/2)))+(d11x/2),d1y-brickW,0]) cube([d1x-((((d1x/2)-(((brickL+(d2z*2)+drawerHgap)/2)-fZstandard-(sliderodholeOD/2)))+(d11x/2))*2),brickW,d1z]); } //end module } //end d1p module
D2
- need to switch to "tabinsert" module
Welds to: D1, D3 (2), D5, D6, D8
include <vars.scad>; use <modus.scad>; echo(d8y+d6z+brickW+d3z+d5y+d3z); //total length of part d2p(); module d2p(){ difference(){ cube([d2x,d2y,d2z]); //cuts numbered clockwise from top left //1 - D12 translate([0,d2y-d12z,0]) tabinsert(d8y-f2y+d6z,d12z,d2z,dGap,0.125,0,0,0,0,0.25,0.25,0,0,0); //2 - D6 translate([d8y,d2y-0.5,0]) tabinsert(d6z,0.5,d2z,dGap,0.125,0,0,0,0,0.25,0.25,0.25,0.25,0); //3 - D3, D1 translate([d8y+d6z+brickW,d2y-d1z-0.75,0]) tabinsert(d3z,d1z+0.75,d2z,dGap,0.125,0,0,0,0,0.375,0.25,0.25,0.375,0); translate([d8y+d6z+brickW+d3z,d2y-d1z,0]) tabinsert(1.5-d3z,d1z,d2z,dGap,0.125,0,0,0,0,0.25,0.625,0,0,0); //4 - D3, D1 translate([d2x-d3z,d2y-0.75-d1z,0]) //put in far corner tabinsert(d3z,d1z+0.75,d2z,dGap,0.125,0,0,0,0,0,0,0.25,0.5,0); //5 - D3, D5 translate([d8y+d6z+brickW+d3z+(d5y-0.5),0,0]) tabinsert(0.5,d5z,d2z,dGap,0.125,0.25,0.25,0,0,0,0,0,0,0); translate([d8y+d6z+brickW+d3z+d5y,0,0]) tabinsert(d3z,0.75,d2z,dGap,0.125,0.25,0.25,0,0,0,0,0,0,0); //6 - D3, D5 translate([d8y+d6z+brickW,0,0]) tabinsert(d3z,0.75,d2z,dGap,0.125,0.5,0.25,0.25,0.25,0,0,0,0,0); translate([d8y+d6z+brickW+d3z,0,0]) tabinsert(0.5,d5z,d2z,dGap,0.125,0,0,0.25,0.375,0,0,0,0,0); //7 - D6, D8 translate([d8y-0.75,0,0]) tabinsert(0.75,d8z,d2z,dGap,0.125,0.25,0.25,0,0,0,0,0,0,0); translate([d8y,0,0]) tabinsert(d6z,1,d2z,dGap,0.125,0.25,0.25,0.25,0.625,0,0,0,0,0); //8 - D8 tabinsert(0.75,d8z,d2z,dGap,0.125,0,0,0.25,0.25,0,0,0,0,0); //clovis pin access hole translate([min((d8y-(d2clevispinaccessholeOD/2)),(d8y-((d9x-d6z)/2))),max((d8z+0.25+(d2clevispinaccessholeOD/2)),(((d9y-d8z)/2)+d8z)),0]) cylinder(h = d2z, r = d2clevispinaccessholeOD/2); } //end difference } //end d2p module
D3
include <vars.scad>; use <modus.scad>; //this part is rendered upside down from placement d3p(); module d3p(){ difference(){ translate([-(d3x/2),0,0]) cube([d3x,d3y,d3z]); translate([-(d3x/2),0,0]) cuts(); translate([(d3x/2),0,0]) mirror([1,0,0]) cuts(); } //end difference module cuts(){ translate([0,d3y/2,0]) cornerjoint(d3z,d3y-(0.75*2),d2z,0.125,0.25,0.125,270,1); //outer columns tab inserts translate([(brickL/4)+d2z,d3y-d5z-(0.75/2),0]) tabinsert(d4z,0.75,d3z,dGap,0.09375,0.375,0.25,0.25,0.375,0.375,0.25,0.25,0.375,1); translate([(brickL/4)+d2z,0,0]) tabinsert(d4z,(0.75*2),d3z,dGap,0.09375,0.625,0.25,0.25,0.625,0,0,0,0,1); //center column tab inserts translate([d3x/2,d3y-d5z-(0.75/2),0]) tabinsert(d4z,0.75,d3z,dGap,0.09375,0.375,0.25,0.25,0.375,0.375,0.25,0.25,0.375,1); translate([d3x/2,0,0]) tabinsert(d4z,(0.75*2),d3z,dGap,0.09375,0.625,0.25,0.25,0.625,0,0,0,0,1); } //end cuts module } //end d3p module
D4
include <vars.scad>; use <modus.scad>; d4p(); module d4p(){ difference(){ translate([-(d4x/2),0,0]) cube([d4x,d4y,d4z]); translate([-(d4x/2),0,0]) cuts(); translate([(d4x/2),0,0]) mirror([1,0,0]) cuts(); } //end difference module cuts(){ translate([0,d5z+0.75,0]) cornerjoint(d4z,(d4y-(0.75*2)-d5z),d3z,0.125,((d4y-(0.75*2)-d5z))-(0.125*2),0.125,270,0); translate([-0.125,0,0]) cornerjoint(d4z,((d4x-0.5)/2)+(0.125),d5z,0.125,((d4x-0.5)/2)-0.125,0.125,0,0); } //end cut module } //end d4p module
D5
- d5p.scad
include <vars.scad>; use <modus.scad>; d5p(); module d5p(){ difference(){ translate([-(d5x/2),0,0]) cube([d5x,d5y,d5z]); translate([-(d5x/2),0,0]) cuts(); translate([(d5x/2),0,0]) mirror([1,0,0]) cuts(); } //end difference module cuts(){ translate([0,d5y/2,0]) cornerjoint(d5z,d5y-(0.5*2),d2z,0.125,0.25,0.125,270,1); translate([1,0,0]) cube([(d5x-(1*3))/2,0.125,d5z]); translate([1,d5y-0.125,0]) cube([(d5x-(1*3))/2,0.125,d5z]); //outer inserts translate([(brickL/4)+d2z,d5y/2,0]) tabinsert(0.5,0.5,d5z,0.03125,0.09375,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,1); //center insert translate([d5x/2,d5y/2,0]) tabinsert(0.5,0.5,d5z,0.03125,0.09375,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,1); } //end cuts module } //end d5p module
D6
- when brick height is smaller that d9y, could cut out center of D6 to allow for clevis to be lower
include <vars.scad>; use <modus.scad>; d6p(); module d6p(){ difference(){ translate([-(d6x/2),0,0]) cube([d6x,d6y,d6z]); translate([-(d6x/2),0,0]) cuts(); translate([(d6x/2),0,0]) mirror([1,0,0]) cuts(); } //end difference module cuts(){ translate([0,1,0]) cornerjoint(d6z,d6y-1-0.5,d2z,0.125,0.25,0.125,270,0); translate([(((d6x-cylinderDRAWERrodclevisW)/2)-(d9z/2)),((d9y-d8z)/2)+d8z,0]) tabinsert(d9z,0.5,d5z,0.03125,0.09375,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,1); } //end cuts module } //end d6p module
D7
- Should this part be re-categorized as an Arm part?
- Welds to A4
- tweaking to add inserts to aid weld
- d7p.scad
include <vars.scad>; use <modus.scad>; //need to add holes to A4 for cornerjoint d7p(); module d7p(){ difference(){ cube([d7x,d7y,d7z]); //joint translate([d7x/2,0,0]) cornerjoint(d7z,(d7x-1),a4z,0.125,0.25,0.125,0,1); //pin hole translate([d7x/2,a4z+d8z+(cylinderDRAWERbodyH/2),0]) cylinder(h = d7z,r = (cylinderDRAWERrearclevisID/2)); } //end difference } //end d7p module
D8
- insert holes' position is wrong
include <vars.scad>; use <modus.scad>; d8p(); module d8p(){ difference(){ translate([-(d8x/2),0,0]) cube([d8x,d8y,d8z]); translate([-(d8x/2),0,0]) cuts(); translate([(d8x/2),0,0]) mirror([1,0,0]) cuts(); } //end difference module cuts(){ translate([0,d8y/2,0]) cornerjoint(d8z,d8y-(0.75*2),d2z,0.125,0.25,0.125,270,1); translate([1,d8y-0.125,0]) cube([(d8x-(1*3))/2,0.125,d8z]); translate([(((d6x-cylinderDRAWERrodclevisW)/2)-(d9z/2)),d8y-((d9x-d6z)/2),0]) tabinsert(d9z,0.5,d5z,0.03125,0.09375,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,1); } //end module } //end d8p module
D9
Welds to: D6, D8
- when d2y is smaller than d9y, need limit d9y
- in turn, need to make sure pin hole is lower than top edge of D9
- uses drawer cylinder height to determine clevis pin location
include <vars.scad>; use <modus.scad>; d9p(); module d9p(){ difference(){ cube([d9x,d9y,d9z]); //x translate([-0.125,0,0]) cornerjoint(d9z,0.125+(d6z+((d9x-d6z-0.5)/2)),d8z,0.125,(d6z+((d9x-d6z-0.5)/2))-0.125,0.125,0,0); translate([0.5+(d6z+((d9x-d6z-0.5)/2)),0,0]) cornerjoint(d9z,((d9x-d6z-0.5)/2)+0.125,d8z,0.125,((d9x-d6z-0.5)/2)-0.125,0.125,0,0); //y translate([0,-0.125,0]) cornerjoint(d9z,0.125+(d8z+((d9y-d8z-0.5)/2)),d6z,0.125,(d8z+((d9y-d8z-0.5)/2))-0.125,0.125,270,0); translate([0,0.5+(d8z+((d9y-d8z-0.5)/2)),0]) cornerjoint(d9z,((d9y-d8z-0.5)/2)+0.125,d6z,0.125,((d9y-d8z-0.5)/2)-0.125,0.125,270,0); //pin hole translate([(0.5/2)+(d6z+((d9x-d6z-0.5)/2)),(0.5/2)+(d8z+((d9y-d8z-0.5)/2)),0]) cylinder(h = d9z,r = (cylinderDRAWERrodclevisID/2)); } } //end d9p module
D10
d10x=18; d10y=3; d10z=dZstandard; $fn=20; difference(){ cube([d10x,d10y,d10z]); translate([1,d10y/2,0]) cylinder(h = d10z,r = 0.55); translate([4,d10y/2,0]) cylinder(h = d10z,r = 0.55); translate([9,d10y/2,0]) cylinder(h = d10z,r = 0.55); translate([14,d10y/2,0]) cylinder(h = d10z,r = 0.55); translate([17,d10y/2,0]) cylinder(h = d10z,r = 0.55); } //end difference
D11
Plate to clamp down bushing holder
include <vars.scad>; use <modus.scad>; //to be mounted on top of bushing holder. clamps holder down with screws d11p(); module d11p(){ difference(){ cube([d11x,d11y,d11z]); //bolt 1a translate([(d1bolt1OD/2)+0.5,d11y-(d1bolt1OD/2)-0.5,0]) cylinder(h=d11z, r=d1bolt1OD/2); //bolt 1b translate([(d1bolt1OD/2)+0.5,(d1bolt1OD/2)+0.5,0]) cylinder(h=d11z, r=d1bolt1OD/2); //bolt 2a translate([d11x-((d1bolt1OD/2)+0.5),d11y-(d1bolt1OD/2)-0.5,0]) cylinder(h=d11z, r=d1bolt2OD/2); //bolt 2b translate([d11x-((d1bolt1OD/2)+0.5),(d1bolt1OD/2)+0.5,0]) cylinder(h=d11z, r=d1bolt2OD/2); } //end difference } //end d11p module
D12
Welds to D2
Holds bushing holders
include <vars.scad>; use <modus.scad>; d12p(); module d12p(){ difference(){ translate([-(d12x/2),0,0]) cube([d12x,d12y,d12z]); translate([-(d12x/2),0,0]) cuts(); translate([(d12x/2),0,0]) mirror([1,0,0]) cuts(); } //end difference module cuts(){ //d11 bolt 1a - will these holes need to be tapped? translate([((d12x/2)-(((brickL+(d2z*2)+drawerHgap)/2)-fZstandard-(sliderodholeOD/2)))+(d11x/2)-((d1bolt1OD/2)+0.5),d12y-(d1bolt1OD/2)-0.5,0]) cylinder(h = f1z, r = d1bolt1OD/2); //d11 bolt 1b - will these holes need to be tapped? translate([((d12x/2)-(((brickL+(d2z*2)+drawerHgap)/2)-fZstandard-(sliderodholeOD/2)))+(d11x/2)-((d1bolt1OD/2)+0.5),d12y-d11y+((d1bolt1OD/2)+0.5),0]) cylinder(h = f1z, r = d1bolt1OD/2); } //end module } //end d1p module
RodBushingHolder
- should two bushings be mounted inside each holder like D3D?
Upper Half
include <vars.scad>; use <modus.scad>; //this 3D printed part will be mounted to the drawer and hold a brass bushing dRodBushingHoldertop(d1bushingOD,d1bushingOD,d1shaftOD,d1bolt1OD,d1bolt2OD); module dRodBushingHoldertop(bushingOD,bushingL,shaftOD,bolt1OD,bolt2OD){ $fn=200; X=1.5+(bolt1OD*2)+bushingOD; Y=max((0.5+bushingL),4); Z=0.25+(bushingOD/2); difference(){ cube([X,Y,Z]); //bolt 1a translate([(bolt1OD/2)+0.5,Y-(bolt1OD/2)-0.5,0]) cylinder(h=Z, r=bolt1OD/2); //bolt 1b translate([(bolt1OD/2)+0.5,(bolt1OD/2)+0.5,0]) cylinder(h=Z, r=bolt1OD/2); //bolt 2 // translate([X-(0.25+bolt1OD/2),Y/2,0]) // cylinder(h=Z, r=bolt1OD/2); //bolt 2a translate([X-((bolt1OD/2)+0.5),Y-(bolt1OD/2)-0.5,0]) cylinder(h=Z, r=bolt2OD/2); //bolt 2b translate([X-((bolt1OD/2)+0.5),(bolt1OD/2)+0.5,0]) cylinder(h=Z, r=bolt2OD/2); //bushing translate([X/2,(Y/2)+(bushingL/2),Z]) rotate([90,0,0]) cylinder(h=bushingL, r=bushingOD/2); //shaft translate([X/2,Y,Z]) rotate([90,0,0]) cylinder(h=Y, r=(shaftOD*1.05)/2); } //end difference } //end module
Lower Half
include <vars.scad>; use <modus.scad>; //this 3D printed part will be mounted to the drawer and hold a brass bushing dRodBushingHolderbottom(d1bushingOD,d1bushingOD,d1shaftOD,d1bolt1OD,d1bolt2OD,d1nut2AF,d1nut2H); module dRodBushingHolderbottom(bushingOD,bushingL,shaftOD,bolt1OD,bolt2OD,nutAF,nutH){ $fn=50; X=1.5+(bolt1OD*2)+bushingOD; Y=max((0.5+bushingL),4); Z=max((0.25+(bushingOD/2)),((d2z+0.5+(sliderodholeOD/2))+drawergap)); difference(){ cube([X,Y,Z]); //bolt 1a translate([(bolt1OD/2)+0.5,Y-(bolt1OD/2)-0.5,0]) cylinder(h=Z, r=bolt1OD/2); //bolt 1b translate([(bolt1OD/2)+0.5,(bolt1OD/2)+0.5,0]) cylinder(h=Z, r=bolt1OD/2); //bolt 2 // translate([X-(0.25+bolt1OD/2),Y/2,0]) // cylinder(h=Z, r=bolt1OD/2); //bolt 2a translate([X-((bolt1OD/2)+0.5),Y-(bolt1OD/2)-0.5,0]) { cylinder(h=Z, r=bolt2OD/2); nut(nutAF,nutH); } //bolt 2b translate([X-((bolt1OD/2)+0.5),(bolt1OD/2)+0.5,0]) { cylinder(h=Z, r=bolt2OD/2); nut(nutAF,nutH); // 3/4" nut size } //bushing translate([X/2,(Y/2)+(bushingL/2),Z]) rotate([90,0,0]) cylinder(h=bushingL, r=bushingOD/2); //shaft translate([X/2,Y,Z]) rotate([90,0,0]) cylinder(h=Y, r=(shaftOD*1.05)/2); //105% of shaft } //end difference } //end module
Grate
G1
g1x=23; g1y=2; g1z=0.5; $fn=20; difference(){ cube([g1x,g1y,g1z]); translate([7,g1y/2,0]) cylinder(h = g1z,r = 0.4065); translate([16,g1y/2,0]) cylinder(h = g1z,r = 0.4065); } //end difference
G2
g2x=56; g2y=2.3; g2z=0.5; $fn=20; union(){ difference(){ cube([g2x,g2y-0.1,g2z]); translate([4.375,1.6,0]) //goofy distance apart holes cylinder(h = g2z,r = 0.406); translate([20.125,1.6,0]) cylinder(h = g2z,r = 0.406); translate([35.875,1.6,0]) cylinder(h = g2z,r = 0.406); translate([51.625,1.6,0]) cylinder(h = g2z,r = 0.406); //first two cuts are goofy distance from begining, so is last one. for(i=[0:((g2x-3.4)/1.75)]) translate([(i*1.75)+3.4,0,0]) cube([0.3,0.5,g2z]); translate([1.6,0,0]) cube([0.3,0.5,g2z]); } //end difference //goofy distance from end translate([15.9475,g2y-0.1,0]) cube([0.3,0.1,g2z]); translate([g2x-15.9475-0.3,g2y-0.1,0]) cube([0.3,0.1,g2z]); }
G3
g3x=2; g3y=3; g3z=0.5; $fn=20; difference(){ cube([g3x,g3y,g3z]); translate([1,1,0]) cylinder(h = g3z,r = 0.40625); } //end difference
G4
g4x=5; g4y=2.5; g4z=0.5; $fn=20; difference(){ cube([g4x,g4y,g4z]); translate([1,1.25,0]) cylinder(h = g4z,r = 0.40625); } //end difference
DXF Export Layout
- looking for workflow to use a Nesting Software to create cnc cutting layout
- All parts layed out in sequence for review in DXF format
- might find a way to label parts below X axis
xport-Dp.scad
include <vars.scad>; use <modus.scad>; //push the F6 key on your key board twice for projection view use<d1p.scad>; use<d2p.scad>; use<d3p.scad>; use<d4p.scad>; use<d5p.scad>; use<d6p.scad>; use<d7p.scad>; use<d8p.scad>; use<d9p.scad>; use<d10p.scad>; use<d11p.scad>; use<d12p.scad>; partspacing=1; //common distance between parts ps=partspacing; //d1 projection(cut = true) //use projection to create 2D DXF files translate([d1y,d1x/2,0]) rotate([0,0,90]) d1p(); //d2 (1/2) projection(cut = true) translate([d1y+ps+d2y,0,0]) rotate([0,0,90]) d2p(); //d2 (2/2) projection(cut = true) translate([d1y+ps+d2y,ps+d2x,0]) rotate([0,0,90]) d2p(); //d3 (1/2) projection(cut = true) translate([d1y+ps+d2y+ps+d3y,(d3x/2),0]) rotate([0,0,90]) d3p(); //d3 (2/2) projection(cut = true) translate([d1y+ps+d2y+ps+d3y,(d3x/2)+ps+d3x,0]) rotate([0,0,90]) d3p(); //d4 (1/3) projection(cut = true) translate([d1y+ps+d2y+ps+d3y+ps+d4y,d4x/2,0]) rotate([0,0,90]) d4p(); //d4 (2/3) projection(cut = true) translate([d1y+ps+d2y+ps+d3y+ps+d4y,(d4x/2)+ps+d4x,0]) rotate([0,0,90]) d4p(); //d4 (3/3) projection(cut = true) translate([d1y+ps+d2y+ps+d3y+ps+d4y,(d4x/2)+ps+d4x+ps+d4x,0]) rotate([0,0,90]) d4p(); //d5 (1/1) projection(cut = true) translate([d1y+ps+d2y+ps+d3y+ps+d4y+ps+d5y,d5x/2,0]) rotate([0,0,90]) d5p(); //d6 (1/1) projection(cut = true) translate([d1y+ps+d2y+ps+d3y+ps+d4y+ps+d5y+ps+d6y,d6x/2,0]) rotate([0,0,90]) d6p(); //d7 (1/2) projection(cut = true) translate([d1y+ps+d2y+ps+d3y+ps+d4y+ps+d5y+ps+d6y+ps+d7y,0,0]) rotate([0,0,90]) d7p(); //d7 (2/2) projection(cut = true) translate([d1y+ps+d2y+ps+d3y+ps+d4y+ps+d5y+ps+d6y+ps+d7y,ps+d7x,0]) rotate([0,0,90]) d7p(); //d8 (1/1) projection(cut = true) translate([d1y+ps+d2y+ps+d3y+ps+d4y+ps+d5y+ps+d6y+ps+d7y+ps+d8y,d8x/2,0]) rotate([0,0,90]) d8p(); //d9 (1/2) projection(cut = true) translate([d1y+ps+d2y+ps+d3y+ps+d4y+ps+d5y+ps+d6y+ps+d7y+ps+d8y+ps+d9y,0,0]) rotate([0,0,90]) d9p(); //d9 (2/2) projection(cut = true) translate([d1y+ps+d2y+ps+d3y+ps+d4y+ps+d5y+ps+d6y+ps+d7y+ps+d8y+ps+d9y,ps+d9x,0]) rotate([0,0,90]) d9p(); //d10 (1/2) projection(cut = true) translate([d1y+ps+d2y+ps+d3y+ps+d4y+ps+d5y+ps+d6y+ps+d7y+ps+d8y+ps+d9y+ps+d10y,0,0]) rotate([0,0,90]) d10p(); //d10 (2/2) projection(cut = true) translate([d1y+ps+d2y+ps+d3y+ps+d4y+ps+d5y+ps+d6y+ps+d7y+ps+d8y+ps+d9y+ps+d10y,ps+d10x,0]) rotate([0,0,90]) d10p(); //d11 (1/2) projection(cut = true) translate([d1y+ps+d2y+ps+d3y+ps+d4y+ps+d5y+ps+d6y+ps+d7y+ps+d8y+ps+d9y+ps+d10y+ps+d11y,0,0]) rotate([0,0,90]) d11p(); //d11 (2/2) projection(cut = true) translate([d1y+ps+d2y+ps+d3y+ps+d4y+ps+d5y+ps+d6y+ps+d7y+ps+d8y+ps+d9y+ps+d10y+ps+d11y,ps+d11x,0]) rotate([0,0,90]) d11p(); //d12 (1/2) projection(cut = true) translate([d1y+ps+d2y+ps+d3y+ps+d4y+ps+d5y+ps+d6y+ps+d7y+ps+d8y+ps+d9y+ps+d10y+ps+d11y+ps+d12y,d12x/2,0]) rotate([0,0,90]) d12p();
xport-Fp.scad
include <vars.scad>; use <modus.scad>; //push the F6 key on your key board twice for projection view use <f1p.scad>; use <f2p.scad>; use <f3p.scad>; use <f4p.scad>; use <f5p.scad>; use <f6p.scad>; //use <f7p.scad>; use <f8p.scad>; use <f9p.scad>; //use <f10p.scad>; //part retired? use <f11p.scad>; use <f12p.scad>; //use <f13p.scad>; use <f14p.scad>; partspacing=1; //common distance between parts ps=partspacing; //f1 (1/2) projection(cut = true) //use projection to create 2f fXF files translate([f1y,(f1x/2),0]) rotate([0,0,90]) f1p(); //f1 (2/2) projection(cut = true) //use projection to create 2f fXF files translate([f1y,(f1x/2)+ps+f1x,0]) rotate([0,0,90]) f1p(); //f2 (1/2) projection(cut = true) translate([f1y+ps+f2y,0,0]) rotate([0,0,90]) f2p(); //f2 (2/2) projection(cut = true) translate([f1y+ps+f2y,ps+f2x,0]) rotate([0,0,90]) f2p(); //f3 (1/2) projection(cut = true) translate([f1y+ps+f2y+ps+f3y,(f3x/2),0]) rotate([0,0,90]) f3p(); //f3 (2/2) projection(cut = true) translate([f1y+ps+f2y+ps+f3y,(f3x/2)+ps+f3x,0]) rotate([0,0,90]) f3p(); //f4 (1/2) projection(cut = true) translate([f1y+ps+f2y+ps+f3y+ps+f4y,f4x/2,0]) rotate([0,0,90]) f4p(); //f4 (2/2) projection(cut = true) translate([f1y+ps+f2y+ps+f3y+ps+f4y,(f4x/2)+ps+f4x,0]) rotate([0,0,90]) f4p(); //f5 (1/2) projection(cut = true) translate([f1y+ps+f2y+ps+f3y+ps+f4y+ps+f5y,f5x/2,0]) rotate([0,0,90]) f5p(); //f5 (2/2) projection(cut = true) translate([f1y+ps+f2y+ps+f3y+ps+f4y+ps+f5y,(f5x/2)+ps+f5x,0]) rotate([0,0,90]) f5p(); //f6 (1/2) projection(cut = true) translate([f1y+ps+f2y+ps+f3y+ps+f4y+ps+f5y+ps+f6y,f6x/2,0]) rotate([0,0,90]) f6p(); //f6 (2/2) projection(cut = true) translate([f1y+ps+f2y+ps+f3y+ps+f4y+ps+f5y+ps+f6y,(f6x/2)+ps+f6x,0]) rotate([0,0,90]) f6p(); //f7 //projection(cut = true) //translate([f1y+ps+f2y+ps+f3y+ps+f4y+ps+f5y+ps+f6y+ps+f7y,0,0]) //rotate([0,0,90]) //f7p(); //f8 (1/2) projection(cut = true) translate([f1y+ps+f2y+ps+f3y+ps+f4y+ps+f5y+ps+f6y+ps+f7y+ps+f8y,0,0]) rotate([0,0,90]) f8p(); //f8 (2/2) projection(cut = true) translate([f1y+ps+f2y+ps+f3y+ps+f4y+ps+f5y+ps+f6y+ps+f7y+ps+f8y,ps+f8x,0]) rotate([0,0,90]) f8p(); //f9 (1/2) projection(cut = true) translate([f1y+ps+f2y+ps+f3y+ps+f4y+ps+f5y+ps+f6y+ps+f7y+ps+f8y+ps+f9y,0,0]) rotate([0,0,90]) f9p(); //f9 (2/2) projection(cut = true) translate([f1y+ps+f2y+ps+f3y+ps+f4y+ps+f5y+ps+f6y+ps+f7y+ps+f8y+ps+f9y,ps+f9x,0]) rotate([0,0,90]) f9p(); //f10 //projection(cut = true) //translate([f1y+ps+f2y+ps+f3y+ps+f4y+ps+f5y+ps+f6y+ps+f7y+ps+f8y+ps+f9y+ps+f10y,0,0]) //rotate([0,0,90]) //f10p(); //f11 for(i=[0:5]) projection(cut = true) translate([f1y+ps+f2y+ps+f3y+ps+f4y+ps+f5y+ps+f6y+ps+f7y+ps+f8y+ps+f9y+ps+f10y+ps+f11y-(f11y/2),i*(ps+f11x),0]) rotate([0,0,90]) f11p(); //f12 (1/1) projection(cut = true) translate([f1y+ps+f2y+ps+f3y+ps+f4y+ps+f5y+ps+f6y+ps+f7y+ps+f8y+ps+f9y+ps+f10y+ps+f11y+ps+f12y,f12x/2,0]) rotate([0,0,90]) f12p(); //f13 //projection(cut = true) //translate([f1y+ps+f2y+ps+f3y+ps+f4y+ps+f5y+ps+f6y+ps+f7y+ps+f8y+ps+f9y+ps+f10y+ps+f11y+ps+f12y+ps+f13y,f12x/2,0]) //rotate([0,0,90]) //f13p(); //f14 (1/2) projection(cut = true) translate([f1y+ps+f2y+ps+f3y+ps+f4y+ps+f5y+ps+f6y+ps+f7y+ps+f8y+ps+f9y+ps+f10y+ps+f11y+ps+f12y+ps+f13y+ps+f14y,0,0]) rotate([0,0,90]) f14p(); //f14 (2/2) projection(cut = true) translate([f1y+ps+f2y+ps+f3y+ps+f4y+ps+f5y+ps+f6y+ps+f7y+ps+f8y+ps+f9y+ps+f10y+ps+f11y+ps+f12y+ps+f13y+ps+f14y,ps+f14x,0]) rotate([0,0,90]) f14p();
xport-Ap.scad
include <vars.scad>; use <modus.scad>; //push the F6 key on your key board twice for projection view use<a1p.scad>; use<a2p.scad>; use<a3p.scad>; use<a4p.scad>; use<a5p.scad>; use<a6p.scad>; partspacing=1; //common distance between parts ps=partspacing; //a1 (1/2) projection(cut = true) //use projection to create 2a aXF files translate([a1y,0,0]) rotate([0,0,90]) a1p(); //a1 (2/2) projection(cut = true) //use projection to create 2a aXF files translate([a1y,ps+a1x,0]) rotate([0,0,90]) a1p(); //a2 (1/2) projection(cut = true) translate([a1y+ps+a2y,0,0]) rotate([0,0,90]) a2p(); //a2 (2/2) projection(cut = true) translate([a1y+ps+a2y,ps+a2x,0]) rotate([0,0,90]) a2p(); //a3 (1/2) projection(cut = true) translate([a1y+ps+a2y+ps+a3y,0,0]) rotate([0,0,90]) a3p(); //a3 (2/2) projection(cut = true) translate([a1y+ps+a2y+ps+a3y,ps+a3x,0]) rotate([0,0,90]) a3p(); //a4 (1/1) projection(cut = true) translate([a1y+ps+a2y+ps+a3y+ps+a4y,0,0]) rotate([0,0,90]) a4p(); //a5 (1/1) projection(cut = true) translate([a1y+ps+a2y+ps+a3y+ps+a4y+ps+a5y,0,0]) rotate([0,0,90]) a5p(); for(i=[0:5]) //a6 (1/1) projection(cut = true) translate([a1y+ps+a2y+ps+a3y+ps+a4y+ps+a5y+ps+a6y,i*(ps+a6x),0]) rotate([0,0,90]) a6p();
Hydraulic Cylinders
Main Cylinder
$fn=20; cylMainBore = 5; cylMainStroke = 16; cylMainExt = 43; cylMainRet = 27; cylMainA = (cylMainRet-cylMainStroke); //center to center minus stroke length cylMainB = 0.25; // cylinder wall thickness cylMainD = 2.5; //Rod OD cylMainE = 5.75; //rear pin holder width cylMainG = 4; //rod pin holder width cylMainJ = 3.8; //distance from the end of the cylinder body to rod pin center cylMainR = 1.52; //pin hole ID cylMainS = 2.5; //pin holder OD cylMain(0); //rodend pin holder: 1 = yes, 0 = no module cylMain(PinYN){ MAINcylinder(); translate([0,0,cylMainRet]) //to animate include "+($t*(cylMainStroke))" MAINcylinderROD(PinYN); //rodend pin holder: 1 = yes, 0 = no } module MAINcylinder(){ difference(){ translate([-cylMainE/2,0,0]) rotate([0,90,0]) cylinder(h = cylMainE, r = cylMainS/2); translate([-cylMainE/2,0,0]) rotate([0,90,0]) cylinder(h = cylMainE, r = cylMainR/2); } //end difference translate([0,0,(cylMainS/2)]) cylinder(h = (cylMainRet-cylMainJ-(cylMainS/2)), r = (cylMainBore/2)+cylMainB); }// end Main Cylinder module module MAINcylinderROD(PinYN){ difference(){ translate([-cylMainG/2,0,0]) rotate([0,90,0]) cylinder(h = PinYN*(cylMainG), r = PinYN*(cylMainS/2)); translate([-cylMainG/2,0,0]) rotate([0,90,0]) cylinder(h = cylMainG, r = cylMainR/2); } //end difference translate([0,0,-(cylMainStroke+cylMainJ-(cylMainS/2))-(cylMainS/2)]) cylinder(h = cylMainStroke+cylMainJ-(cylMainS/2), r = cylMainD/2); }
Drawer Cylinder
Full Assembly
include <vars.scad>; use <modus.scad>; use<Dp.scad>; use<Fp.scad>; use<Ap.scad>; use<cylMain.scad>; Dp(); translate([0,0,-((f9x-f1y-brickCH-drawergap-f4y)+f4y)]) rotate([0,0,90]) Fp(); translate([0,0,-((f9x-f1y-brickCH-drawergap-f4y)+f4y)+f2z+((cylMainS+0.125)/2)]) cylMain(0); rotate([0,0,270]) translate([0,-distancetof8center,0]) Ap();
To Do
- update with newest changes of the FreeCAD version
- get SVGnest to work for torch table layout