CEB Press v16.09/SCAD Files/Parametric: Difference between revisions
(→D1) |
|||
Line 1,292: | Line 1,292: | ||
} //end difference | } //end difference | ||
module cuts(){ | module cuts(){ | ||
cube([2 | cube([(d1x-brickL-d2z-d2z)/2,16,d1z]); | ||
translate([2 | translate([(d1x-brickL-d2z-d2z)/2,1.5,0]) //1.5 could be better defined, but needs to match D2's cut out | ||
cube([0.6,5,d1z]); | cube([0.6,5,d1z]); //June freecad model has larger cut out | ||
} //end module | } //end module | ||
Revision as of 02:31, 27 June 2017
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; //needs rework: should only be secondarily dependent on D9 d1x=18.5; //need to come up with a formula d1y=18; //need to come up with a formula 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<d1p.scad>; use<d2p.scad>; use<d3p.scad>; use<d4p.scad>; use<d5p.scad>; use<d6p.scad>; use<d8p.scad>; use<d9p.scad>; 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+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();
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>; 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(){ cube([(d1x-brickL-d2z-d2z)/2,16,d1z]); translate([(d1x-brickL-d2z-d2z)/2,1.5,0]) //1.5 could be better defined, but needs to match D2's cut out cube([0.6,5,d1z]); //June freecad model has larger cut out } //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 - 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
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
- 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