CEB Press v16.09/SCAD Files/Parametric
work in progress
creating an OpenSCAD replica of v16.09
CEB Press v16.09/SCAD Files/Parametric
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; $fn=20; //defines resolution of circles. 20 fine for modeling. 100 for final export. dZstandard=0.5; //Z depth of D parts aZstandard=0.5; 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? //d2x calculated d1z=dZstandard; d2y=brickCH; d2z=dZstandard; d3z=dZstandard; d4z=dZstandard; d5z=dZstandard; d6z=dZstandard; d5z=dZstandard; d7z=dZstandard; d8z=dZstandard; d9z=dZstandard; a4z=aZstandard; cylinderMAINminC2E=0; //main hydraulic cylinder's distance from center of mounting hole to the end of the shaft when fully compressed. cylinderMAINmaxC2E=0; //main hydraulic cylinder's distance from center of mounting hole to the end of the shaft when fully extended. 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. //variables calculated from other dimenions need to follow after others are defined //following variables in order of dependence 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; d9y=cylinderDRAWERbodyH+d8z; d8x=brickL+(d2z*2); d8y=d9y+1.5; d2x=d8y+d6z+brickW+d3z+d5y+d3z;
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
Frame
Frame Assembly
F4x=31; //?why not just 22? F4y=11; F4z=0.5; F4basex=25; F6x=22.1875; //?why not just 22? F6y=8; F6z=0.5; F8x=43.5; F8y=6; F8z=0.5; F9x=43.5; F9y=4.5; F9z=0.5; $fn=20; //render final model at 100 // ----------------------- // translate([0,(F8y/2)+F6z,20.472]) //Z from F9// //adjust with cylinder length// rotate([90,0,0]) F4(); //?group with F5? translate([0,-(F8y/2),20.472]) rotate([90,0,0]) F4(); translate([0,(F8y/2)+F6z,0]) rotate([90,0,0]) F6(); translate([0,-(F8y/2),0]) rotate([90,0,0]) F6(); translate([1.9-8.5,0,0]){ rotate([0,0,90]){ translate([(F8y/2),F8z,0]) rotate([90,-90,0]) F8(); translate([(F8y/2)+(F9z/2)-(F8z/2),0,0]) rotate([0,-90,0]) F9(); translate([-(F8y/2)+(F9z/2)+(F8z/2),0,0]) rotate([0,-90,0]) F9(); } } translate([-1.9+8.5,0,0]){ rotate([0,0,-90]){ translate([(F8y/2),F8z,0]) rotate([90,-90,0]) F8(); translate([(F8y/2)+(F9z/2)-(F8z/2),0,0]) rotate([0,-90,0]) F9(); translate([-(F8y/2)+(F9z/2)+(F8z/2),0,0]) rotate([0,-90,0]) F9(); } } // ----------------------- // module F4(){ difference(){ translate([-(F4x/2),0,0]) cube([F4x,F4y,F4z]); translate([-(F4x/2),0,0]) cuts(); translate([(F4x/2),0,0]) mirror([1,0,0]) cuts(); } //end difference module cuts(){ translate([0,0,0]) cube([3,5.375,F4z]); translate([0,5.375,0]) difference(){ cube([3,5.125,F4z]); translate([3,0,0]) rotate([0,0,atan(3/5.125)]) cube([10,10,F4z]); } translate([(F4x/2)-13.6375,F4y-0.5,0]) mirror([1,0,0]) cube([(F4x/2)-13.6375,0.5,F4z]); translate([(F4x/2)-13.6375,F4y-0.625,0]) cube([2,0.625,F4z]); translate([(F4x/2)-0.8125,F4y-0.5,0]) cube([0.8125,0.5,F4z]); translate([(F4x/2)-1.0625,F4y-0.625,0]) cube([0.25,0.625,F4z]); translate([(F4x/2)-9.8125,7.185,0]) //?part ycentered 7.5? cube([1.125,0.625,F4z]); //?interfaces with what? ?part F2? translate([(F4x/2)-8.5,2,0]) cylinder(h = F4z, r = 0.5025); //diameter 1.0? translate([(F4x/2)-8.5,6,0]) cylinder(h = F4z, r = 0.5025); translate([(F4x/2)-8.5,9,0]) cylinder(h = F4z, r = 0.5025); } //end module } module F6(){ 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([1.26,F6y-0.5,0]) //?xdistance from center? cube([1.125,0.5,F6z]); //?interfaces with what? translate([(F6x/2)-1.125,F6y-3.22,0]) cube([2.25,3.22,F6z]); translate([F6x/2,F6y-3.22,0]) cylinder(h = F6z, r = 1.125); translate([(F6x/2)-8.5,2,0]) cylinder(h = F6z, r = 0.38); //diameter 0.76? translate([(F6x/2)-8.5,6,0]) cylinder(h = F6z, r = 0.38); } //end module } module F8(){ difference(){ cube([F8x,F8y,F8z]); translate([-0.0625,0,0]) cornerjoint(7.375,0.625,0.25,0.5,0.125); translate([14.5-0.0625,0,0]) cornerjoint(7.375,0.625,0.25,0.5,0.125); translate([14.5+14.5-0.0625,0,0]) cornerjoint(7.375,0.625,0.25,0.5,0.125); translate([-0.0625,F8y,0]) mirror([0,1,0]) cornerjoint(7.375,0.625,0.25,0.5,0.125); translate([14.5-0.0625,F8y,0]) mirror([0,1,0]) cornerjoint(7.375,0.625,0.25,0.5,0.125); translate([14.5+14.5-0.0625,F8y,0]) mirror([0,1,0]) cornerjoint(7.375,0.625,0.25,0.5,0.125); hull(){ translate([23.34,3,0]) //?x interfaces with what? cylinder(h = F8z, r = 0.5); translate([23.6,3,0]) cylinder(h = F8z, r = 0.5); } hull(){ translate([30.34,3,0]) //?x interfaces with what? cylinder(h = F8z, r = 0.5); translate([30.6,3,0]) cylinder(h = F8z, r = 0.5); } } } //end F8 module module F9(){ difference(){ cube([F9x,F9y,F9z]); translate([7.25,0,0]) cornerjoint(7.25,0.625,0.25,0.5,0.125); translate([14.5+7.25,0,0]) cornerjoint(7.25,0.625,0.25,0.5,0.125); translate([14.5+14.5+7.25,0,0]) cornerjoint(7.25,0.625,0.25,0.5,0.125); translate([0,F9y-0.5625,0]) cube([0.53125,0.5625,F9z]); translate([19.96875,F9y-0.5625,0]) cube([0.5625,0.5625,F9z]); translate([31.3,F9y-1.4,0]) cube([6.4,1.4,F9z]); //?interfaces with what? translate([F9x-0.5,F9y-0.5625,0]) cube([0.5,0.5625,F9z]); translate([2,1.9,0]) //?x interfaces with what? ?1.9? cylinder(h = F9z, r = 0.38); translate([6,1.9,0]) //?x interfaces with what? cylinder(h = F9z, r = 0.38); translate([22.472,1.9,0]) //??.472?? ?interfaces with what? cylinder(h = F9z, r = 0.5025); translate([26.472,1.9,0]) cylinder(h = F9z, r = 0.5025); translate([29.472,1.9,0]) cylinder(h = F9z, r = 0.5025); translate([39,1.9,0]) //?x interfaces with what? cylinder(h = F9z, r = 0.38); translate([42,1.9,0]) //?x interfaces with what? cylinder(h = F9z, r = 0.38); } } //end F9 module module cornerjoint(L,H,EndGap,PadL,PadH){ difference(){ cube([L,H,F9z]); translate([EndGap,H-PadH,0]) cube([PadL,PadH,F9z]); translate([L-EndGap-PadL,H-PadH,0]) cube([PadL,PadH,F9z]); } } //end cornerjoint module
F1
Welds to: F2, F3
Bolts to: F9
Abuts: A2
F1x=24.2; F1y=6; F1z=0.5; $fn=20; //render final model at 100 projection(cut = true) //use projection to create 2D DXF files 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(){ cube([0.5,0.5,F1z]); translate([0.5,0,0]) cube([0.7875,0.625,F1z]); translate([0,F1y-0.25,0]) cube([0.4,0.25,F1z]); translate([2.2875,F1y-0.5,0]) cube([1.125,0.5,F1z]); translate([11.0375,0,0]) cube([0.8125,0.625,F1z]); translate([11.85,0,0]) cube([0.25,0.5,F1z]); translate([3.6,1.5,0]) cylinder(h = F1z, r = 0.375); translate([3.6,4.5,0]) cylinder(h = F1z, r = 0.375); translate([6.1925,2.465,0]) cylinder(h = F1z, r = 0.6); } //end module
F2
Welds to: F1, F4, F6
F2x=19.5; F2y=3.5; F2z=0.5; $fn=20; //render final model at 100 projection(cut = true) //use projection to create 2D DXF files difference(){ translate([-(F2x/2),0,0]) cube([F2x,F2y,F2z]); translate([-(F2x/2),0,0]) cuts(); translate([(F2x/2),0,0]) mirror([1,0,0]) cuts(); } //end difference module cuts(){ translate([1,F2y-0.625,0]) cube([0.125,0.625,F2z]); translate([1.125,F2y-0.5,0]) cube([8.625,0.5,F2z]); } //end module
F3
Welds to: F1
Bolts to: F12
F3x=23.75; F3y=3.5; F3z=0.5; $fn=20; //render final model at 100 projection(cut = true) //use projection to create 2D DXF files 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]) cube([1,0.625,F3z]); translate([2,0,0]) cube([1,0.5,F3z]); translate([3,0,0]) cube([5.875,0.625,F3z]); translate([8.875,0,0]) cube([1,0.5,F3z]); translate([9.875,0,0]) cube([1,0.625,F3z]); translate([5.375,1.75,0]) cylinder(h = F3z, r = 0.5); } //end module
F4
Welds to: F2, F5
Bolts to: F9
F4x=31; //?why not just 22? F4y=11; F4z=0.5; F4basex=25; $fn=20; //render final model at 100 projection(cut = true) //use projection to create 2D DXF files difference(){ translate([-(F4x/2),0,0]) cube([F4x,F4y,F4z]); translate([-(F4x/2),0,0]) cuts(); translate([(F4x/2),0,0]) mirror([1,0,0]) cuts(); } //end difference module cuts(){ translate([0,0,0]) cube([3,5.375,F4z]); translate([0,5.375,0]) difference(){ cube([3,5.125,F4z]); translate([3,0,0]) rotate([0,0,atan(3/5.125)]) cube([10,10,F4z]); } translate([(F4x/2)-13.6375,F4y-0.5,0]) mirror([1,0,0]) cube([(F4x/2)-13.6375,0.5,F4z]); translate([(F4x/2)-13.6375,F4y-0.625,0]) cube([2,0.625,F4z]); translate([(F4x/2)-0.8125,F4y-0.5,0]) cube([0.8125,0.5,F4z]); translate([(F4x/2)-1.0625,F4y-0.625,0]) cube([0.25,0.625,F4z]); translate([(F4x/2)-9.8125,7.185,0]) //?part ycentered 7.5? cube([1.125,0.625,F4z]); //?interfaces with what? ?part F2? translate([(F4x/2)-8.5,2,0]) cylinder(h = F4z, r = 0.5025); //diameter 1.0? translate([(F4x/2)-8.5,6,0]) cylinder(h = F4z, r = 0.5025); translate([(F4x/2)-8.5,9,0]) cylinder(h = F4z, r = 0.5025); } //end module
F5
Welds to: F4
Bolts to: A1
F5x=31.4; F5y=3.5; F5z=0.5; $fn=20; //render final model at 100 projection(cut = true) //use projection to create 2D DXF files 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,F5y-0.625,0]) cube([1,0.625,F5z]); translate([5,F5y-0.5,0]) cube([1,0.5,F5z]); translate([6,F5y-0.625,0]) cube([6.7,0.625,F5z]); translate([12.7,F5y-0.5,0]) cube([1,0.5,F5z]); translate([13.7,F5y-0.625,0]) cube([1,0.625,F5z]); hull(){ translate([3.5,1.5,0]) cylinder(h = F5z, r = 0.5); translate([4.5,1.5,0]) cylinder(h = F5z, r = 0.5); } } //end module
F6
some errors of symmetry in source dxf drawing. made some assumptions. need to check fit with interfacing parts.
Welds to: F2, F7
Bolts to: F9
F6x=22.1875; //?why not just 22? F6y=8; F6z=0.5; $fn=20; //render final model at 100 projection(cut = true) //use projection to create 2D DXF files 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([1.26,F6y-0.5,0]) //?xdistance from center? cube([1.125,0.5,F6z]); //?interfaces with what? translate([(F6x/2)-1.125,F6y-3.22,0]) cube([2.25,3.22,F6z]); translate([F6x/2,F6y-3.22,0]) cylinder(h = F6z, r = 1.125); translate([(F6x/2)-8.5,2,0]) cylinder(h = F6z, r = 0.38); //diameter 0.76? translate([(F6x/2)-8.5,6,0]) cylinder(h = F6z, r = 0.38); } //end module
F8
Welds to: F9, F10
Bolts to: Rub Plate ?
F8x=43.5; F8y=6; F8z=0.5; $fn=20; //render final model at 100 difference(){ cube([F8x,F8y,F8z]); translate([-0.0625,0,0]) cornerjoint(7.375,0.625,0.25,0.5,0.125); translate([14.5-0.0625,0,0]) cornerjoint(7.375,0.625,0.25,0.5,0.125); translate([14.5+14.5-0.0625,0,0]) cornerjoint(7.375,0.625,0.25,0.5,0.125); translate([-0.0625,F8y,0]) mirror([0,1,0]) cornerjoint(7.375,0.625,0.25,0.5,0.125); translate([14.5-0.0625,F8y,0]) mirror([0,1,0]) cornerjoint(7.375,0.625,0.25,0.5,0.125); translate([14.5+14.5-0.0625,F8y,0]) mirror([0,1,0]) cornerjoint(7.375,0.625,0.25,0.5,0.125); hull(){ translate([23.34,3,0]) //?x interfaces with what? cylinder(h = F8z, r = 0.5); translate([23.6,3,0]) cylinder(h = F8z, r = 0.5); } hull(){ translate([30.34,3,0]) //?x interfaces with what? cylinder(h = F8z, r = 0.5); translate([30.6,3,0]) cylinder(h = F8z, r = 0.5); } } module cornerjoint(L,H,EndGap,PadL,PadH){ difference(){ cube([L,H,F8z]); translate([EndGap,H-PadH,0]) cube([PadL,PadH,F8z]); translate([L-EndGap-PadL,H-PadH,0]) cube([PadL,PadH,F8z]); } } //end cornerjoint module
F9
Welds to: F8, F11
Bolts to: F1, F4, F6
Abuts: A1 ?, A2 ?, F12
F9x=43.5; F9y=4.5; F9z=0.5; $fn=20; //render final model at 100 difference(){ cube([F9x,F9y,F9z]); translate([7.25,0,0]) cornerjoint(7.25,0.625,0.25,0.5,0.125); translate([14.5+7.25,0,0]) cornerjoint(7.25,0.625,0.25,0.5,0.125); translate([14.5+14.5+7.25,0,0]) cornerjoint(7.25,0.625,0.25,0.5,0.125); translate([0,F9y-0.5625,0]) cube([0.53125,0.5625,F9z]); translate([19.96875,F9y-0.5625,0]) cube([0.5625,0.5625,F9z]); translate([31.3,F9y-1.4,0]) cube([6.4,1.4,F9z]); //?interfaces with what? translate([F9x-0.5,F9y-0.5625,0]) cube([0.5,0.5625,F9z]); translate([2,1.9,0]) //?x interfaces with what? ?1.9? cylinder(h = F9z, r = 0.38); translate([6,1.9,0]) //?x interfaces with what? cylinder(h = F9z, r = 0.38); translate([22.472,1.9,0]) //??.472?? ?interfaces with what? cylinder(h = F9z, r = 0.5025); translate([26.472,1.9,0]) cylinder(h = F9z, r = 0.5025); translate([29.472,1.9,0]) cylinder(h = F9z, r = 0.5025); translate([39,1.9,0]) //?x interfaces with what? cylinder(h = F9z, r = 0.38); translate([42,1.9,0]) //?x interfaces with what? cylinder(h = F9z, r = 0.38); } module cornerjoint(L,H,EndGap,PadL,PadH){ difference(){ cube([L,H,F9z]); translate([EndGap,H-PadH,0]) cube([PadL,PadH,F9z]); translate([L-EndGap-PadL,H-PadH,0]) cube([PadL,PadH,F9z]); } } //end cornerjoint module
F10
Welds to: F8?
F10x=5.9; F10y=2; F10z=0.5; cube([F10x,F10y,F10y]);
F11
Welds to: F9
F11x=1.25; F11y=6; F11z=0.5; projection(cut = true) //use projection to create 2D DXF files 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.625,F11z]); translate([0.625,0,0]) cube([0.625,0.5,F11z]); } //end module
Arms
A1
Welds to: A2, A6
Bolts to: A4, A5, F1, H7, H8
Abuts: F9
A1x=4; A1y=72; A1z=0.5; $fn=20; difference(){ cube([A1x,A1y,A1z]); translate([0,0.71875,0]) cube([0.6875,0.5625,A1z]); translate([0,44.8501,0]) //?y.8501? cube([0.6875,0.5625,A1z]); translate([0,70.9688,0]) //y 0.46875 from top cube([0.6875,0.5625,A1z]); translate([2,2,0]) cylinder(h = A1z, r = 0.4); translate([2,4,0]) cylinder(h = A1z, r = 0.4); translate([2,27,0]) cylinder(h = A1z, r = 0.4); translate([2,37,0]) cylinder(h = A1z, r = 0.4); hull(){ translate([2,39.67,0]) //small error on drawing cylinder(h = A1z, r = 0.4); translate([2,40.25,0]) //small error on drawing cylinder(h = A1z, r = 0.4); } hull(){ translate([2,50.25,0]) //small error cylinder(h = A1z, r = 0.4); translate([2,50.85,0]) //small error cylinder(h = A1z, r = 0.4); } translate([2,53.75,0]) cylinder(h = A1z, r = 0.4); translate([2,56.75,0]) cylinder(h = A1z, r = 0.4); translate([2,63.75,0]) cylinder(h = A1z, r = 0.4); translate([2,69,0]) cylinder(h = A1z, r = 0.4); //corner joints for(i=[0:5]) translate([4,i*11.9375,0]) rotate([0,0,90]) cornerjoint(6.0625,0.625,0.125,0.5,0.125); } module cornerjoint(L,H,EndGap,PadL,PadH){ difference(){ cube([L,H,A1z]); translate([EndGap,H-PadH,0]) cube([PadL,PadH,A1z]); translate([L-EndGap-PadL,H-PadH,0]) cube([PadL,PadH,A1z]); } } //end cornerjoint module
A2
Welds to: A1, A6
Bolts to: Guards, Hopper mounts
Abuts: F1 (?), F9
A2x=5.96603; //?just 6? A2y=72; A2z=0.5; $fn=20; difference(){ cube([A2x,A2y,A2z]); translate([A2x-0.6875,0.46875,0]) cube([0.6875,0.5625,A2z]); translate([A2x-0.6875,26.5874,0]) //?y.8501? cube([0.6875,0.5625,A2z]); translate([A2x-0.6875,A2y-0.71875,0]) //y 0.46875 from top cube([0.6875,0.5625,A2z]); hull(){ translate([A2x-1.75,21.2,0]) //?y? cylinder(h = A2z, r = 0.4); translate([A2x-1.75,22.765,0]) //?y? cylinder(h = A2z, r = 0.4); } hull(){ translate([A2x-1.75,47.56,0]) //?y? cylinder(h = A2z, r = 0.4); translate([A2x-1.75,49.0785,0]) //?y? cylinder(h = A2z, r = 0.4); } //corner joints for(i=[0:5]) translate([0,(i*12)+6,0]) rotate([0,0,270]) cornerjoint(6,0.625,0.125,0.5,0.125); } module cornerjoint(L,H,EndGap,PadL,PadH){ difference(){ cube([L,H,A2z]); translate([EndGap,H-PadH,0]) cube([PadL,PadH,A2z]); translate([L-EndGap-PadL,H-PadH,0]) cube([PadL,PadH,A2z]); } } //end cornerjoint module
A3
Welds to: A4, A5
a3x=4; a3y=72; a3z=0.5; $fn=20; difference(){ cube([a3x,a3y,a3z]); //corner joints for(i=[0:5]) translate([0,(i*12)+6,0]) rotate([0,0,270]) cornerjoint(6,0.625,0.125,0.5,0.125); } module cornerjoint(L,H,EndGap,PadL,PadH){ difference(){ cube([L,H,a3z]); translate([EndGap,H-PadH,0]) cube([PadL,PadH,a3z]); translate([L-EndGap-PadL,H-PadH,0]) cube([PadL,PadH,a3z]); } } //end cornerjoint 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.
a4x=6; a4y=72; a4z=0.5; $fn=20; difference(){ cube([a4x,a4y,a4z]); hull(){ translate([a4x-2,23.725,0]) //?y? cylinder(h = a4z, r = 0.4); translate([a4x-2,24.835,0]) //?y? cylinder(h = a4z, r = 0.4); } hull(){ translate([a4x-4,23.725,0]) //?y? cylinder(h = a4z, r = 0.4); translate([a4x-4,24.835,0]) //?y? cylinder(h = a4z, r = 0.4); } hull(){ translate([a4x-2,47.135,0]) cylinder(h = a4z, r = 0.4); translate([a4x-2,48.265,0]) cylinder(h = a4z, r = 0.4); } hull(){ translate([a4x-4,47.135,0]) cylinder(h = a4z, r = 0.4); translate([a4x-4,48.265,0]) cylinder(h = a4z, r = 0.4); } //corner joints for(i=[0:5]) translate([0,(i*11.9375)+6.0625,0]) rotate([0,0,270]) cornerjoint(6.0625,0.625,0.125,0.5,0.125); } module cornerjoint(L,H,EndGap,PadL,PadH){ difference(){ cube([L,H,a4z]); translate([EndGap,H-PadH,0]) cube([PadL,PadH,a4z]); translate([L-EndGap-PadL,H-PadH,0]) cube([PadL,PadH,a4z]); } } //end cornerjoint module
A5
Welds to: A3
Bolts to: A1
a5x=6; a5y=72; a5z=0.5; $fn=20; difference(){ cube([a5x,a5y,a5z]); hull(){ translate([3,23.795,0]) cylinder(h = a5z, r = 0.405); translate([3,24.805,0]) cylinder(h = a5z, r = 0.405); } hull(){ translate([3,47.2,0]) cylinder(h = a5z, r = 0.405); translate([3,48.2,0]) cylinder(h = a5z, r = 0.405); } //corner joints for(i=[0:5]) translate([6,(i*12)+5.9375,0]) rotate([0,0,90]) cornerjoint(6.125,0.625,0.125,0.5,0.125); } module cornerjoint(L,H,EndGap,PadL,PadH){ difference(){ cube([L,H,a5z]); translate([EndGap,H-PadH,0]) cube([PadL,PadH,a5z]); translate([L-EndGap-PadL,H-PadH,0]) cube([PadL,PadH,a5z]); } } //end cornerjoint module
A6
Welds to: A1, A2
Drawer
Drawer Assembly
- origin located at center of bottom of compression chamber
- X-axis oriented along movement of drawer
include <vars.scad>; use <modus.scad>; use<d2p.scad>; use<d3p.scad>; use<d4p.scad>; use<d5p.scad>; use<d6p.scad>; use<d8p.scad>; translate([0,d2z,0]) rotate([90,0,0]) d2p(); translate([0,d8x/2,0]) rotate([0,0,270]) d8p(); 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();
Drawer CNC Layout
- Layout of just the drawer parts
platewidth=20; //input the width of your steel plate partspacing=0.3125; //common distance between parts echo("Length of plate used:"); echo(); //need formula based on layout calculations below projection(cut = true) //use projection to create 2D DXF files
D1
- does not match freecad drawing from JuneGroup file
- need to review
include <vars.scad>; use <modus.scad>; d1x=18.5; d1y=18; d1z=dZstandard; $fn=20; 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(){ cube([2.5,16,d1z]); translate([2.5,1.5,0]) cube([0.6,5,d1z]); } //end 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 - Not on FreeCad Model?? translate([0,d2y-0.43,0]) cube([2,0.43,d2z]); //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); } //end difference } //end d2p module
D3
- need to fix corner joint module, then double check its use here
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,((d4y-d5z)/2),0]) tabinsert(d4z,0.5,d3z,dGap,0.09375,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,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,((d4y-d5z)/2),0]) tabinsert(d4z,0.5,d3z,dGap,0.09375,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,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)-0.5-d5z)/2,d3z,0.125,((d4y-(0.75*2)-0.5-d5z)/2)-(0.125*2),0.125,270,0); translate([0,d4y-0.75-((d4y-(0.75*2)-0.5-d5z)/2),0]) cornerjoint(d4z,(d4y-(0.75*2)-0.5-d5z)/2,d3z,0.125,((d4y-(0.75*2)-0.5-d5z)/2)-(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]); 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); translate([d5x/2,3,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
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
dZstandard=0.5; 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)),((d9x-d6z)/2)+d6z,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
- need to check formulas for pegs with matching holes in d8 and d6
- uses drawer cylinder height to determine pin location
include <vars.scad>; use <modus.scad>; //need to check formulas for pegs with matching holes in d8 and d6 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
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