CEB Press v16.09/SCAD Files/Parametric: Difference between revisions
(→D1) |
(→To Do) |
||
| (147 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
'''work in progress''' | '''work in progress''' moved on to [[CEB Press v17.08/SCAD Files/]] | ||
creating an OpenSCAD replica of v16.09 | creating an OpenSCAD replica of v16.09 | ||
| Line 5: | Line 5: | ||
[[CEB Press v16.09/SCAD Files/Parametric]] | [[CEB Press v16.09/SCAD Files/Parametric]] | ||
Latest files on Google Drive for download: [https://drive.google.com/open?id=0BwxMMqGvwTM-c2NMZ3dHVlpOQWM link] | |||
=Default Variables= | =Default Variables= | ||
| Line 10: | Line 11: | ||
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. [https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Include_Statement#Variables Read More] | 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. [https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Include_Statement#Variables Read More] | ||
vars.scad | :::vars.scad | ||
<nowiki> | <nowiki> | ||
| Line 17: | Line 18: | ||
brickCH=6; | brickCH=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 | |||
fBOLTHOLEstandardD=1; //standard bolts used on frame | |||
sliderodholeOD=1.2; | |||
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. | |||
d1z=dZstandard; | |||
d2z=dZstandard; | |||
d3z=dZstandard; | |||
d4z=dZstandard; | |||
d5z=dZstandard; | |||
d6z=dZstandard; | |||
d5z=dZstandard; | |||
d7z=dZstandard; | |||
d8z=dZstandard; | |||
d9z=dZstandard; | |||
//frame | |||
f1x=24.2; | |||
f1y=6; | |||
f1z=0.5; | |||
f2y=3.5; | |||
f2z=fZstandard; | |||
f3x=f1x; | |||
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; | |||
f9x=43.5; //set based on MAINcylinder | |||
f9z=fZstandard; | |||
f8x=f9x; | |||
f11x=1.25; | |||
f11z=fZstandard; | |||
f13z=fZstandard; | |||
//arms | |||
a1x=4; | |||
a1y=72; //calculate based on drawer cylinder | |||
a1z=aZstandard; | |||
a2x=6; | |||
a2y=72; //calculate based on drawer cylinder | |||
a2z=aZstandard; | |||
a4z=aZstandard; | |||
a6z=aZstandard; | |||
// | |||
//Input your main cylinder's dimenions here | |||
// | |||
cylinderMAINminC2E=0; //main hydraulic cylinder's distance from center of mounting hole to the end of the shaft when fully compressed. | 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. | cylinderMAINmaxC2E=0; //main hydraulic cylinder's distance from center of mounting hole to the end of the shaft when fully extended. | ||
// | |||
//Input your drawer cylinder's dimenions here | |||
// | |||
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. | 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. | 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; | |||
d9y=cylinderDRAWERbodyH+d8z; | |||
d8x=brickL+(d2z*2); | |||
d8y=max(5,(d9x-d6z)); //need to review fundamentals, 5 minimun unless d9 gets larger than d8 | |||
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; | |||
d2y=brickCH; | |||
f11y=f8y; | |||
f6x=brickL+(d2z*2)+(f9y*2)+drawerHgap; | |||
f8x=43.5; //need to define based on MAINcylinder inputs | |||
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 | |||
</nowiki> | </nowiki> | ||
| Line 31: | Line 154: | ||
Creating a file of modules will allow for them to be utilized in other files with the "use" command. | Creating a file of modules will allow for them to be utilized in other files with the "use" command. | ||
modus.scad | |||
<nowiki> | <nowiki> | ||
//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 | |||
</nowiki> | </nowiki> | ||
=Frame= | =Frame= | ||
==Assembly== | ==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. | |||
[[Image:CEBscad-frame.png|400px]] | |||
:::Fp.scad | |||
<nowiki> | <nowiki> | ||
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>; | |||
use <f11p.scad>; | |||
//use <f12p.scad>; | |||
// ---- | translate([0,(f8y/2)+f1z,f9x]) | ||
translate([0,( | 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,(f8y/2)+f6z,(f9x-f1y-brickCH-drawergap-f4y)]) | |||
rotate([90,0,0]) | rotate([90,0,0]) | ||
f4p(); //?group with f5? | |||
translate([0,-( | |||
translate([0,-(f8y/2),(f9x-f1y-brickCH-drawergap-f4y)]) | |||
rotate([90,0,0]) | rotate([90,0,0]) | ||
f4p(); | |||
translate([0,( | translate([0,(f8y/2),(f9x-f1y-brickCH-drawergap-f4y)+f4y]) | ||
rotate([ | rotate([0,180,0]) | ||
f5p(); //connected to F4 | |||
translate([ | |||
rotate([90, | translate([0,-(f8y/2),(f9x-f1y-brickCH-drawergap-f4y)+f4y]) | ||
rotate([0,180,180]) | |||
f5p(); //connected to F4 | |||
translate([-f2x/2,(f8y/2),(f9x-f1y-brickCH-drawergap-f4y)+7.5-(f2z/2)]) | |||
rotate([0,0,0]) | |||
f2p(); //connected to F1 | |||
translate([f2x/2,-(f8y/2),(f9x-f1y-brickCH-drawergap-f4y)+7.5-(f2z/2)]) | |||
rotate([0,0,180]) | |||
f2p(); | |||
translate([0,(f8y/2)+f6z,f6y]) | |||
rotate([90,180,0]) | |||
f6p(); | |||
translate([ | translate([0,-(f8y/2),f6y]) | ||
rotate([90,180,0]) | |||
f6p(); | |||
rotate([ | |||
translate([- | translate([-f2x/2,(f8y/2),0]) | ||
rotate([0,0,0]) | |||
f2p(); //connected to F6 | |||
rotate([0, | |||
/ | translate([f2x/2,-(f8y/2),0]) | ||
rotate([0,0,180]) | |||
f2p(); | |||
translate([f6x/2,0,0]) | |||
rotate([0,0,180]) | |||
f11p(); | |||
translate([ | |||
translate([f6x/2,0,f9x-f1y-d2y-f4y-drawergap-0.5]) | |||
rotate([0,0,180]) | |||
f11p(); | |||
translate([ | 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]) | |||
translate([- | f11p(); | ||
translate([-f6x/2,0,f9x-0.5]) | |||
rotate([0,0,0]) | |||
f11p(); | |||
translate([1.9-8.5,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 | |||
translate([-1.9+8.5,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 | |||
</nowiki> | </nowiki> | ||
| Line 272: | Line 448: | ||
Abuts: A2 | Abuts: A2 | ||
*need to tweak bolt translates? | |||
*change to use cornerjoint module instead of insert module on outter ends of F3 connections | |||
<nowiki> | <nowiki> | ||
include <vars.scad>; | |||
use <modus.scad>; | |||
f1p(); | |||
module f1p(){ | |||
difference(){ | difference(){ | ||
translate([-( | translate([-(f1x/2),0,0]) | ||
cube([ | cube([f1x,f1y,f1z]); | ||
translate([-( | translate([-(f1x/2),0,0]) | ||
cuts(); | cuts(); | ||
translate([( | translate([(f1x/2),0,0]) | ||
mirror([1,0,0]) | mirror([1,0,0]) | ||
cuts(); | cuts(); | ||
} //end difference | } //end difference | ||
module cuts(){ | 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]) | |||
translate([0, | cube([0.4,0.25,f1z]); //appears to be intended to interface with A2, but not sure why | ||
cube([0.4,0.25, | translate([(f1x-f2x)/2,f1y-f2z,0]) | ||
translate([2 | 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]) | |||
translate([ | 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]) | |||
translate([ | cylinder(h = f1z, r = 0.375); | ||
cylinder(h = | translate([((f1x-d3x-drawerHgap)/2)+(sliderodholeOD/2)+drawerHgap,2.465,0]) //not sure what this is supposed to align with, drawer? | ||
translate([ | cylinder(h = f1z, r = sliderodholeOD/2); | ||
cylinder(h = | } //end cuts module | ||
translate([ | |||
cylinder(h = | } //end f1p module | ||
} //end module | |||
</nowiki> | </nowiki> | ||
| Line 315: | Line 496: | ||
<nowiki> | <nowiki> | ||
include <vars.scad>; | |||
use <modus.scad>; | |||
f2p(); | |||
module f2p(){ | |||
difference(){ | difference(){ | ||
cube([f2x,f2y,f2z]); | |||
cube([ | translate([1,0,0]) | ||
translate([ | cornerjoint(f2z,f2x-2,f1z,0.125,f2x-2-0.25,0.125,0,0); | ||
} //end difference | } //end difference | ||
} //end f2p module | |||
} //end module | |||
</nowiki> | </nowiki> | ||
| Line 344: | Line 518: | ||
Bolts to: F12 | Bolts to: F12 | ||
*F3 and F1 should probably be made the same length. | |||
**going to set f3y=f1y. also some tweaks to insert holes | |||
<nowiki> | <nowiki> | ||
include <vars.scad>; | |||
use <modus.scad>; | |||
f3p(); | |||
module f3p(){ | |||
difference(){ | difference(){ | ||
translate([-( | translate([-(f3x/2),0,0]) | ||
cube([ | cube([f3x,f3y,f3z]); | ||
translate([-( | translate([-(f3x/2),0,0]) | ||
cuts(); | cuts(); | ||
translate([( | translate([(f3x/2),0,0]) | ||
mirror([1,0,0]) | mirror([1,0,0]) | ||
cuts(); | cuts(); | ||
| Line 363: | Line 541: | ||
module cuts(){ | module cuts(){ | ||
translate([1,0,0]) | 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 | |||
translate([5.375, | |||
cylinder(h = | |||
} //end module | |||
</nowiki> | </nowiki> | ||
| Line 382: | Line 554: | ||
Bolts to: F9 | Bolts to: F9 | ||
*use cornerjoint module instead of insert for F5 connection | |||
*bolt holes look like they're maybe slightly miss aligned? | |||
**are they different sized? | |||
<nowiki> | <nowiki> | ||
include <vars.scad>; | |||
use <modus.scad>; | |||
f4p(); | |||
module f4p(){ | |||
difference(){ | difference(){ | ||
translate([-( | translate([-(((brickL+(d2z*2)+drawerHgap+(f9y*2)))/2),0,0]) | ||
cube([ | union(){ | ||
translate([-( | 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(); | cuts(); | ||
translate([( | translate([(f4x/2),0,0]) | ||
mirror([1,0,0]) | mirror([1,0,0]) | ||
cuts(); | cuts(); | ||
} //end difference | } //end difference | ||
module cuts(){ | module cuts(){ | ||
translate([ | //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); | |||
translate([( | //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); | |||
translate([( | |||
//f2 | |||
translate([(f4x-f2x+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]) | |||
translate([( | 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); | |||
cylinder(h = | |||
translate([( | |||
cylinder(h = | |||
translate([( | |||
cylinder(h = | |||
} //end module | } //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 | |||
</nowiki> | </nowiki> | ||
| Line 443: | Line 632: | ||
Bolts to: A1 | Bolts to: A1 | ||
:::f5p.scad | |||
<nowiki> | <nowiki> | ||
include <vars.scad>; | |||
use <modus.scad>; | |||
f5p(); | |||
module f5p(){ | |||
difference(){ | difference(){ | ||
translate([-( | translate([-(f5x/2),0,0]) | ||
cube([ | cube([f5x,f5y,f5z]); | ||
translate([-( | translate([-(f5x/2),0,0]) | ||
cuts(); | cuts(); | ||
translate([( | translate([(f5x/2),0,0]) | ||
mirror([1,0,0]) | mirror([1,0,0]) | ||
cuts(); | cuts(); | ||
} //end difference | } //end difference | ||
module cuts(){ | module cuts(){ | ||
translate([4, | 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 | |||
translate([ | } //end f5p module | ||
cylinder(h = | |||
} | |||
} //end module | |||
</nowiki> | </nowiki> | ||
| Line 487: | Line 675: | ||
Bolts to: F9 | 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 | |||
*need to use MAINcylinder specs to make cylinder pin hole | |||
<nowiki> | <nowiki> | ||
include <vars.scad>; | |||
use <modus.scad>; | |||
f6p(); | |||
module f6p(){ | |||
difference(){ | difference(){ | ||
translate([-( | translate([-(f6x/2),0,0]) | ||
cube([ | cube([f6x,f6y,f6z]); | ||
translate([-( | translate([-(f6x/2),0,0]) | ||
cuts(); | cuts(); | ||
translate([( | translate([(f6x/2),0,0]) | ||
mirror([1,0,0]) | mirror([1,0,0]) | ||
cuts(); | cuts(); | ||
} //end difference | } //end difference | ||
module cuts(){ | module cuts(){ | ||
translate([( | translate([(f6x-f2x)/2,f6y-f2z,0]) | ||
cylinder(h = | tabinsert(1,f2z,f6z,0.0625,0.125,0,0,0,0,0.25,0.25,0.25,0.25,0); //F2 | ||
translate([( | |||
cylinder(h = | //need to change this section to match MAINcylinder specs | ||
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); | |||
// 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 module | } //end cuts module | ||
} //end f6p module | |||
</nowiki> | </nowiki> | ||
| Line 526: | Line 724: | ||
Bolts to: Rub Plate ? | Bolts to: Rub Plate ? | ||
*need to redo cornerjoint module inputs | |||
*need to set standard bolt size | |||
<nowiki> | <nowiki> | ||
include <vars.scad>; | |||
use <modus.scad>; | |||
f8p(); | |||
module f8p(){ | |||
difference(){ | difference(){ | ||
cube([ | cube([f8x,f8y,f8z]); | ||
translate([ | translate([(1/12)*f8x,0,0]) | ||
cornerjoint( | cornerjoint(f8z,(f8x/6),f9z,0.25,0.5,0.125,0,1); | ||
translate([ | translate([(5/12)*f8x,0,0]) | ||
cornerjoint( | cornerjoint(f8z,(f8x/6),f9z,0.25,0.5,0.125,0,1); | ||
translate([ | translate([(9/12)*f8x,0,0]) | ||
cornerjoint( | cornerjoint(f8z,(f8x/6),f9z,0.25,0.5,0.125,0,1); | ||
translate([ | translate([(1/12)*f8x,f8y,0]) | ||
cornerjoint(f8z,(f8x/6),f9z,0.25,0.5,0.125,180,1); | |||
cornerjoint( | translate([(5/12)*f8x,f8y,0]) | ||
translate([ | cornerjoint(f8z,(f8x/6),f9z,0.25,0.5,0.125,180,1); | ||
translate([(9/12)*f8x,f8y,0]) | |||
cornerjoint( | cornerjoint(f8z,(f8x/6),f9z,0.25,0.5,0.125,180,1); | ||
translate([ | |||
cornerjoint( | |||
hull(){ | hull(){ | ||
translate([ | 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 = | cylinder(h = f8z, r = f8boltD/2); | ||
translate([ | translate([f8x-7-((f1y+d2y+drawergap+1)+(0.26/2)),f8y/2,0]) | ||
cylinder(h = | cylinder(h = f8z, r = f8boltD/2); | ||
} | } | ||
hull(){ | hull(){ | ||
translate([ | translate([f8x-((f1y+d2y+drawergap+1)-(0.26/2)),f8y/2,0]) //?x interfaces with what? | ||
cylinder(h = | cylinder(h = f8z, r = f8boltD/2); | ||
translate([ | translate([f8x-((f1y+d2y+drawergap+1)+(0.26/2)),f8y/2,0]) | ||
cylinder(h = | cylinder(h = f8z, r = f8boltD/2); | ||
} | } | ||
} | } | ||
} //end f8p module | |||
} //end | |||
</nowiki> | </nowiki> | ||
| Line 588: | Line 779: | ||
<nowiki> | <nowiki> | ||
include <vars.scad>; | |||
use <modus.scad>; | |||
f9p(); | |||
module f9p(){ | |||
difference(){ | difference(){ | ||
cube([ | cube([f9x,f9y,f9z]); | ||
translate([ | translate([(3/12)*f9x,0,0]) | ||
cornerjoint( | cornerjoint(f9z,(f8x/6),f8z,0.25,0.5,0.125,0,1); | ||
translate([ | translate([(7/12)*f9x,0,0]) | ||
cornerjoint( | cornerjoint(f9z,(f8x/6),f8z,0.25,0.5,0.125,0,1); | ||
translate([ | 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? | |||
translate([2, | //bolt holes | ||
cylinder(h = | //f6 | ||
translate([6, | translate([2,2,0]) //?x interfaces with f6? | ||
cylinder(h = | //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); | |||
translate([ | |||
cylinder(h = | //distance from center to edge of part is 1.5 | ||
translate([ | //distance between center to center is 9.5283 | ||
cylinder(h = | //distance from center to edge of part is 2 | ||
translate([ | //gap between parts is 6.0283 | ||
cylinder(h = | //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([ | translate([f9x-4.5,2,0]) //?x interfaces with f1? | ||
cylinder(h = | cylinder(h = f9z, r = 0.38); | ||
translate([ | translate([f9x-1.5,2,0]) //?x interfaces with f1? | ||
cylinder(h = | cylinder(h = f9z, r = 0.38); | ||
} | } | ||
} | |||
</nowiki> | </nowiki> | ||
| Line 660: | Line 865: | ||
<nowiki> | <nowiki> | ||
include <vars.scad>; | |||
use <modus.scad>; | |||
f11p(); | |||
module f11p(){ | |||
difference(){ | difference(){ | ||
translate([0,-( | translate([0,-(f11y/2),0]) | ||
cube([ | cube([f11x,f11y,f11z]); | ||
translate([0,-( | translate([0,-(f11y/2),0]) | ||
cuts(); | cuts(); | ||
translate([0,( | translate([0,(f11y/2),0]) | ||
mirror([0,1,0]) | mirror([0,1,0]) | ||
cuts(); | cuts(); | ||
} //end difference | } //end difference | ||
module cuts(){ | module cuts(){ | ||
translate([0.5,0,0]) | translate([0.5,0,0]) | ||
cube([0.125,0. | cube([0.125,0.125+f9z,f11z]); | ||
translate([0.625,0,0]) | translate([0.625,0,0]) | ||
cube([0. | cube([f11x-0.5-0.125,f9z,f11z]); | ||
} //end module | } //end cuts module | ||
} //end f11p module | |||
</nowiki> | |||
==F12== | |||
Bolts to Hopper Seat | |||
==F13== | |||
Spacer betwwen F6 and F9 used to accomidate MAINcylinder with larger diameter than brickW | |||
<nowiki> | |||
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 | |||
</nowiki> | </nowiki> | ||
| Line 858: | Line 1,095: | ||
Bolts to: A1 | 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. | |||
<nowiki> | <nowiki> | ||
| Line 968: | Line 1,209: | ||
<nowiki> | <nowiki> | ||
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 | |||
</nowiki> | </nowiki> | ||
=Drawer= | =Drawer= | ||
==Drawer Assembly== | |||
*origin located at center of bottom of compression chamber | |||
*X-axis oriented along movement of drawer | |||
[[Image:CEB-scad-drawer.png|400px]] | |||
:::Dp.scad | |||
<nowiki> | |||
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>; | |||
//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+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(); | |||
// | |||
//add drawer cylinger rod half and rod clevis | |||
// | |||
} //end main translate | |||
</nowiki> | |||
==D1== | ==D1== | ||
*does not match freecad drawing from JuneGroup file | |||
**need to review | |||
:::d1p.scad | |||
<nowiki> | <nowiki> | ||
include <vars.scad>; | include <vars.scad>; | ||
use <modus.scad>; | use <modus.scad>; | ||
d1p(); | |||
module d1p(){ | |||
difference(){ | difference(){ | ||
| Line 995: | Line 1,380: | ||
} //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 | ||
} //end d1p module | |||
</nowiki> | </nowiki> | ||
==D2== | ==D2== | ||
*need to switch to "tabinsert" module | |||
Welds to: D1, D3 (2), D5, D6, D8 | Welds to: D1, D3 (2), D5, D6, D8 | ||
<nowiki> | <nowiki> | ||
include <vars.scad>; | |||
use <modus.scad>; | |||
echo(d8y+d6z+brickW+d3z+d5y+d3z); //total length of part | |||
d2p(); | |||
module d2p(){ | |||
difference(){ | difference(){ | ||
cube([d2x,d2y,d2z]); | cube([d2x,d2y,d2z]); | ||
// | |||
//cuts numbered clockwise from top left | |||
//1 - Not on FreeCad Model?? | |||
translate([0,d2y-0.43,0]) | translate([0,d2y-0.43,0]) | ||
cube([2,0.43,d2z]); | cube([2,0.43,d2z]); | ||
//2 - D6 | //2 - D6 | ||
translate([d8y | |||
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 | //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 | //4 - D3, D1 | ||
translate([d2x,d2y,0]) //put in far corner | |||
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 | //5 - D3, D5 | ||
translate([ | 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([ | 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 | //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 difference | ||
} //end d2p module | |||
</nowiki> | </nowiki> | ||
==D3== | ==D3== | ||
*need to fix corner joint module, then double check its use here | |||
<nowiki> | <nowiki> | ||
include <vars.scad>; | |||
use <modus.scad>; | |||
//this part is rendered upside down from placement | |||
d3p(); | |||
module d3p(){ | |||
difference(){ | difference(){ | ||
| Line 1,103: | Line 1,486: | ||
cuts(); | cuts(); | ||
} //end difference | } //end difference | ||
module cuts(){ | module cuts(){ | ||
translate([0, | 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([ | 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([ | 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 | |||
} //end | |||
</nowiki> | </nowiki> | ||
| Line 1,151: | Line 1,517: | ||
<nowiki> | <nowiki> | ||
include <vars.scad>; | |||
use <modus.scad>; | |||
d4p(); | |||
module d4p(){ | |||
difference(){ | difference(){ | ||
| Line 1,166: | Line 1,534: | ||
} //end difference | } //end difference | ||
module cuts(){ | module cuts(){ | ||
translate([0, | 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]) | translate([-0.125,0,0]) | ||
cornerjoint( | 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 module | } //end d4p module | ||
</nowiki> | |||
==D5== | |||
::d5p.scad | |||
<nowiki> | <nowiki> | ||
include <vars.scad>; | |||
use <modus.scad>; | |||
d5p(); | |||
module d5p(){ | |||
difference(){ | difference(){ | ||
| Line 1,210: | Line 1,569: | ||
cuts(); | cuts(); | ||
} //end difference | } //end difference | ||
module cuts(){ | module cuts(){ | ||
translate([0, | translate([0,d5y/2,0]) | ||
cornerjoint(d5z,d5y-(0.5*2),d2z,0.125,0.25,0.125,270,1); | |||
translate([1,0,0]) | translate([1,0,0]) | ||
cube([ | cube([(d5x-(1*3))/2,0.125,d5z]); | ||
translate([1,d5y-0.125,0]) | translate([1,d5y-0.125,0]) | ||
cube([ | cube([(d5x-(1*3))/2,0.125,d5z]); | ||
translate([ | 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]) | 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 module | } //end d5p module | ||
</nowiki> | </nowiki> | ||
==D6== | ==D6== | ||
<nowiki> | <nowiki> | ||
include <vars.scad>; | |||
use <modus.scad>; | |||
d6p(); | |||
module d6p(){ | |||
difference(){ | difference(){ | ||
| Line 1,271: | Line 1,609: | ||
cuts(); | cuts(); | ||
} //end difference | } //end difference | ||
module cuts(){ | module cuts(){ | ||
translate([0, | 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 | |||
</nowiki> | |||
==D7== | |||
*Should this part be re-categorized as an Arm part? | |||
*Welds to A4 | |||
**tweaking to add inserts to aid weld | |||
:::d7p.scad | |||
<nowiki> | |||
include <vars.scad>; | |||
use <modus.scad>; | |||
//need to add holes to A4 for cornerjoint | |||
d7p(); | |||
module d7p(){ | |||
difference(){ | difference(){ | ||
cube([d7x,d7y,d7z]); | cube([d7x,d7y,d7z]); | ||
translate([d7x/2, | |||
//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 | |||
</nowiki> | </nowiki> | ||
==D8== | ==D8== | ||
<nowiki> | *insert holes' position is wrong | ||
<nowiki> | |||
include <vars.scad>; | |||
use <modus.scad>; | |||
d8p(); | |||
module d8p(){ | |||
difference(){ | difference(){ | ||
| Line 1,354: | Line 1,677: | ||
} //end difference | } //end difference | ||
module cuts(){ | module cuts(){ | ||
translate([0, | 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 module | ||
} //end d8p module | |||
</nowiki> | |||
==D9== | |||
Welds to: D6, D8 | |||
*uses drawer cylinder height to determine clevis pin location | |||
<nowiki> | |||
include <vars.scad>; | |||
use <modus.scad>; | |||
d9p(); | |||
module d9p(){ | |||
difference(){ | difference(){ | ||
cube([d9x,d9y,d9z]); | cube([d9x,d9y,d9z]); | ||
translate([2,2,0]) | //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 | |||
</nowiki> | </nowiki> | ||
| Line 1,571: | Line 1,849: | ||
</nowiki> | </nowiki> | ||
=Part Review Layout= | |||
*All parts layed out in sequence for review in DXF format | |||
**might find a way to label parts below X axis | |||
:::review.scad | |||
<nowiki> | |||
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>; | |||
partspacing=1; //common distance between parts | |||
//d1 | |||
projection(cut = true) //use projection to create 2D DXF files | |||
translate([d1y,d1x/2,0]) | |||
rotate([0,0,90]) | |||
d1p(); | |||
projection(cut = true) | |||
translate([d1y+partspacing+d2y,0,0]) | |||
rotate([0,0,90]) | |||
d2p(); | |||
projection(cut = true) | |||
translate([d1y+partspacing+d2y+partspacing+d2y,0,0]) | |||
rotate([0,0,90]) | |||
d2p(); | |||
projection(cut = true) | |||
translate([d1y+partspacing+d2y+partspacing+d2y+partspacing+d3y,d3x/2,0]) | |||
rotate([0,0,90]) | |||
d3p(); | |||
projection(cut = true) | |||
translate([d1y+partspacing+d2y+partspacing+d2y+partspacing+d3y+partspacing+d3y,d3x/2,0]) | |||
rotate([0,0,90]) | |||
d3p(); | |||
</nowiki> | |||
=To Do= | |||
*get [[Nesting_Software|SVnest]] to work for torch table layout | |||
Latest revision as of 17:56, 3 June 2018
work in progress moved on to CEB Press v17.08/SCAD Files/
creating an OpenSCAD replica of v16.09
CEB Press v16.09/SCAD Files/Parametric
Latest files on Google Drive for download: link
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=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 fBOLTHOLEstandardD=1; //standard bolts used on frame sliderodholeOD=1.2; 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. d1z=dZstandard; d2z=dZstandard; d3z=dZstandard; d4z=dZstandard; d5z=dZstandard; d6z=dZstandard; d5z=dZstandard; d7z=dZstandard; d8z=dZstandard; d9z=dZstandard; //frame f1x=24.2; f1y=6; f1z=0.5; f2y=3.5; f2z=fZstandard; f3x=f1x; 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; f9x=43.5; //set based on MAINcylinder f9z=fZstandard; f8x=f9x; f11x=1.25; f11z=fZstandard; f13z=fZstandard; //arms a1x=4; a1y=72; //calculate based on drawer cylinder a1z=aZstandard; a2x=6; a2y=72; //calculate based on drawer cylinder a2z=aZstandard; a4z=aZstandard; a6z=aZstandard; // //Input your main cylinder's dimenions here // 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. // //Input your drawer cylinder's dimenions here // 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; d9y=cylinderDRAWERbodyH+d8z; d8x=brickL+(d2z*2); d8y=max(5,(d9x-d6z)); //need to review fundamentals, 5 minimun unless d9 gets larger than d8 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; d2y=brickCH; f11y=f8y; f6x=brickL+(d2z*2)+(f9y*2)+drawerHgap; f8x=43.5; //need to define based on MAINcylinder inputs 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
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
- 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>;
use <f11p.scad>;
//use <f12p.scad>;
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,(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([-f2x/2,(f8y/2),(f9x-f1y-brickCH-drawergap-f4y)+7.5-(f2z/2)])
rotate([0,0,0])
f2p(); //connected to F1
translate([f2x/2,-(f8y/2),(f9x-f1y-brickCH-drawergap-f4y)+7.5-(f2z/2)])
rotate([0,0,180])
f2p();
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([1.9-8.5,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([-1.9+8.5,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
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-d3x-drawerHgap)/2)+(sliderodholeOD/2)+drawerHgap,2.465,0]) //not sure what this is supposed to align with, drawer?
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: F2, F5
Bolts to: F9
- use cornerjoint module instead of insert for F5 connection
- 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);
//f2
translate([(f4x-f2x+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
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
- 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
- need to use MAINcylinder specs to make cylinder pin hole
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)-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);
// 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
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?
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
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
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
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>;
//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+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();
//
//add drawer cylinger rod half and rod clevis
//
} //end main translate
D1
- does not match freecad drawing from JuneGroup file
- need to review
- 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(){
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
Welds to: D6, D8
- 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
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
Part Review Layout
- All parts layed out in sequence for review in DXF format
- might find a way to label parts below X axis
- review.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>; partspacing=1; //common distance between parts //d1 projection(cut = true) //use projection to create 2D DXF files translate([d1y,d1x/2,0]) rotate([0,0,90]) d1p(); projection(cut = true) translate([d1y+partspacing+d2y,0,0]) rotate([0,0,90]) d2p(); projection(cut = true) translate([d1y+partspacing+d2y+partspacing+d2y,0,0]) rotate([0,0,90]) d2p(); projection(cut = true) translate([d1y+partspacing+d2y+partspacing+d2y+partspacing+d3y,d3x/2,0]) rotate([0,0,90]) d3p(); projection(cut = true) translate([d1y+partspacing+d2y+partspacing+d2y+partspacing+d3y+partspacing+d3y,d3x/2,0]) rotate([0,0,90]) d3p();
To Do
- get SVnest to work for torch table layout
