CEB Press v17.08/SCAD Files/: Difference between revisions
| Line 1,881: | Line 1,881: | ||
==RodBushingHolder== | ==RodBushingHolder== | ||
===Upper Half=== | ===Upper Half=== | ||
Revision as of 02:32, 26 July 2017
work in progress
creating an OpenSCAD replica of v17.08
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; d1bushingOD=1.25; d1bushingL=1.25; d1shaftOD=1; d1bolt1OD=1; d1bolt2OD=0.75; d1nut2AF=1.25; d1nut2H=0.665; dGap=0.03125; //gap between a hole cut's edge and the part sitting within the hole. //D3 appears to use 0.3125, is this in error? //all parts set to standard thickness below //off standard preferences can be defined below //drawer drawergap=0.0283; //extra room for drawer to slide in the space between f1 and f4 drawerHgap=0.1884; //total extra space from drawer sides to frame walls. sum of both sides. d2clevispinaccessholeOD=3; d1z=dZstandard; d2z=dZstandard; d3z=dZstandard; d4z=dZstandard; d5z=dZstandard; d6z=dZstandard; d5z=dZstandard; d7z=dZstandard; d8z=dZstandard; d9z=dZstandard; d11z=dZstandard; //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; f14y=3.5; f14z=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; //should be based on clevis size? d9y=cylinderDRAWERbodyH+d8z; d8x=brickL+(d2z*2); d8y=max(5,(d9x-d6z)); //need to review fundamentals, 5 minimun unless d9 gets larger than d8 d11x=1.5+(d1bolt1OD*2)+d1bushingOD; d11y=max((0.5+d1bushingL),4); d1x=(((f1x/2)-(((brickL+(d2z*2)+drawerHgap)/2)-fZstandard-(sliderodholeOD/2)))+(d11x/2))*2; d1y=((brickW+d3z+d3z)*2)+1+(d11y); 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 f14x=brickL+(1*2)+(.125*2)+(dGap*2);
Common Modules
Creating a file of modules will allow for them to be utilized in other files with the "use" command.
modus.scad
//Corner Joint - allows the sides of two parts to create inlayed corner. Aids with welding.
//need to verify module math is the same throughout all parts.
module cornerjoint(Z,L,H,EndGap,PadL,PadH,CJangle,CJcenter){
//change so that H = Z of inlayed part (usually 0.5)
//add center and angle in degrees option, orgin far side of cut out area
if((CJangle==0)&&(CJcenter==0))
{
translate([0,0,0])
rotate([0,0,CJangle])
difference(){
cube([L,H+PadH,Z]);
translate([EndGap,H,0])
cube([PadL,PadH,Z]);
translate([L-EndGap-PadL,H,0])
cube([PadL,PadH,Z]);}
}
else if((CJangle==90)&&(CJcenter==0))
{
translate([H+PadH,0,0])
rotate([0,0,CJangle])
difference(){
cube([L,H+PadH,Z]);
translate([EndGap,H,0])
cube([PadL,PadH,Z]);
translate([L-EndGap-PadL,H,0])
cube([PadL,PadH,Z]);}
}
else if((CJangle==180)&&(CJcenter==0))
{
translate([L,H+PadH,0])
rotate([0,0,CJangle])
difference(){
cube([L,H+PadH,Z]);
translate([EndGap,H,0])
cube([PadL,PadH,Z]);
translate([L-EndGap-PadL,H,0])
cube([PadL,PadH,Z]);}
}
else if((CJangle==270)&&(CJcenter==0))
{
translate([0,L,0])
rotate([0,0,CJangle])
difference(){
cube([L,H+PadH,Z]);
translate([EndGap,H,0])
cube([PadL,PadH,Z]);
translate([L-EndGap-PadL,H,0])
cube([PadL,PadH,Z]);}
}
//centered
else if((CJangle==0)&&(CJcenter==1))
{
translate([-L/2,0,0])
rotate([0,0,CJangle])
difference(){
cube([L,H+PadH,Z]);
translate([EndGap,H,0])
cube([PadL,PadH,Z]);
translate([L-EndGap-PadL,H,0])
cube([PadL,PadH,Z]);}
}
else if((CJangle==90)&&(CJcenter==1))
{
translate([0,-L/2,0])
rotate([0,0,CJangle])
difference(){
cube([L,H+PadH,Z]);
translate([EndGap,H,0])
cube([PadL,PadH,Z]);
translate([L-EndGap-PadL,H,0])
cube([PadL,PadH,Z]);}
}
else if((CJangle==180)&&(CJcenter==1))
{
translate([L/2,0,0])
rotate([0,0,CJangle])
difference(){
cube([L,H+PadH,Z]);
translate([EndGap,H,0])
cube([PadL,PadH,Z]);
translate([L-EndGap-PadL,H,0])
cube([PadL,PadH,Z]);}
}
else if((CJangle==270)&&(CJcenter==1))
{
translate([0,L/2,0])
rotate([0,0,CJangle])
difference(){
cube([L,H+PadH,Z]);
translate([EndGap,H,0])
cube([PadL,PadH,Z]);
translate([L-EndGap-PadL,H,0])
cube([PadL,PadH,Z]);}
}
} //end cornerjoint module
//Tab Insert - used to cut a hole for an abutting part to insert into. Typically aids with welding the two parts.
module tabinsert(X,Y,Z,dGap,cGap,c1,c2,c3,c4,c5,c6,c7,c8,center){
translate([-dGap-(center*(X/2)),-dGap-(center*(Y/2)),0]){
//main cut
cube([X+(dGap*2),Y+(dGap*2),Z]);
//corner c1c2
translate([-cGap,(Y+(dGap*2))-c1+cGap,0])
{
cube([c2,c1,Z]);}
//corner c3c4
translate([(X+(dGap*2))-c3+cGap,(Y+(dGap*2))-c4+cGap,0]){
cube([c3,c4,Z]);
}
//corner c5c6
translate([(X+(dGap*2))-c6+cGap,-cGap,0])
{
cube([c6,c5,Z]);
}
//corner c7c8
translate([-cGap,-cGap,0]){
cube([c7,c8,Z]);
}
} //end center translate
} //end tabinsert module
module nut(flattoflat,nutheight){ //distance from one flat side to the other flat side "A/F"
//typical sizes found here:
//https://en.wikipedia.org/wiki/Nut_(hardware)
difference(){
translate([0,0,nutheight/2])
cube(size = [10,10,nutheight], center = true);
for(i=[1:6]){
rotate([0,0,i*60])
difference(){
translate([-10,0,0])
cube([20,20,nutheight]);
translate([-10,0,0])
cube([20,flattoflat/2,nutheight]);
} //end difference
} //end for
} //end differeence
} //end module
Frame
Frame Assembly
- F4 holes look slightly more narrow than the F9 holes.
- calculate F4 and F5 Z height from the top down. Let f9 length be adjusted by cylinder. try to avoid calculation again.
- Fp.scad
include <vars.scad>;
use <modus.scad>;
use <f1p.scad>;
use <f2p.scad>;
use <f3p.scad>;
use <f4p.scad>;
use <f5p.scad>;
use <f6p.scad>;
//use <f7p.scad>;
use <f8p.scad>;
use <f9p.scad>;
//use <f10p.scad>;
use <f11p.scad>;
//use <f12p.scad>;
//use <f13p.scad>;
use <f14p.scad>;
Fp();
module Fp(){
translate([0,(f8y/2)+f1z,f9x])
rotate([90,180,0])
f1p();
translate([0,-(f8y/2),f9x])
rotate([90,180,0])
f1p();
translate([-f2x/2,(f8y/2),f9x-f1y])
rotate([0,0,0])
f2p(); //connected to F1
translate([f2x/2,-(f8y/2),f9x-f1y])
rotate([0,0,180])
f2p();
translate([0,(f8y/2),f9x])
rotate([0,180,0])
f3p(); //connected to F1
translate([0,-(f8y/2),f9x])
rotate([0,180,180])
f3p(); //connected to F1
translate([0,(f8y/2)+f6z,(f9x-f1y-brickCH-drawergap-f4y)])
rotate([90,0,0])
f4p(); //?group with f5?
translate([0,-(f8y/2),(f9x-f1y-brickCH-drawergap-f4y)])
rotate([90,0,0])
f4p();
translate([0,(f8y/2),(f9x-f1y-brickCH-drawergap-f4y)+f4y])
rotate([0,180,0])
f5p(); //connected to F4
translate([0,-(f8y/2),(f9x-f1y-brickCH-drawergap-f4y)+f4y])
rotate([0,180,180])
f5p(); //connected to F4
translate([-f14x/2,(f8y/2),(f9x-f1y-brickCH-drawergap-f4y)+7.5-(f14z/2)])
rotate([0,0,0])
f14p(); //connected to F4
translate([f14x/2,-(f8y/2),(f9x-f1y-brickCH-drawergap-f4y)+7.5-(f14z/2)])
rotate([0,0,180])
f14p(); //connected to F4
translate([0,(f8y/2)+f6z,f6y])
rotate([90,180,0])
f6p();
translate([0,-(f8y/2),f6y])
rotate([90,180,0])
f6p();
translate([-f2x/2,(f8y/2),0])
rotate([0,0,0])
f2p(); //connected to F6
translate([f2x/2,-(f8y/2),0])
rotate([0,0,180])
f2p();
translate([f6x/2,0,0])
rotate([0,0,180])
f11p();
translate([f6x/2,0,f9x-f1y-d2y-f4y-drawergap-0.5])
rotate([0,0,180])
f11p();
translate([f6x/2,0,f9x-0.5])
rotate([0,0,180])
f11p();
translate([-f6x/2,0,0])
rotate([0,0,0])
f11p();
translate([-f6x/2,0,f9x-f1y-d2y-f4y-drawergap-0.5])
rotate([0,0,0])
f11p();
translate([-f6x/2,0,f9x-0.5])
rotate([0,0,0])
f11p();
translate([-((brickL+(d2z*2)+drawerHgap)/2),0,0]){ //???
rotate([0,0,90]){
translate([(f8y/2),f8z,0])
rotate([90,-90,0])
f8p();
translate([(f8y/2)+(f9z/2)-(f8z/2),0,0])
rotate([0,-90,0])
f9p();
translate([-(f8y/2)+(f9z/2)+(f8z/2),0,0])
rotate([0,-90,0])
f9p();
} //end rotate
} //end translate
translate([((brickL+(d2z*2)+drawerHgap)/2),0,0]){
rotate([0,0,-90]){
translate([(f8y/2),f8z,0])
rotate([90,-90,0])
f8p();
translate([(f8y/2)+(f9z/2)-(f8z/2),0,0])
rotate([0,-90,0])
f9p();
translate([-(f8y/2)+(f9z/2)+(f8z/2),0,0])
rotate([0,-90,0])
f9p();
} //end rotate
} //end translate
} //end Fp module
F1
Welds to: F2, F3
Bolts to: F9
Abuts: A2
- need to tweak bolt translates?
- change to use cornerjoint module instead of insert module on outter ends of F3 connections
include <vars.scad>;
use <modus.scad>;
f1p();
module f1p(){
difference(){
translate([-(f1x/2),0,0])
cube([f1x,f1y,f1z]);
translate([-(f1x/2),0,0])
cuts();
translate([(f1x/2),0,0])
mirror([1,0,0])
cuts();
} //end difference
module cuts(){
tabinsert(1,f3z,f1z,0.0625,0.125,0,0,0.25,0.25,0.0,0,0,0,0);
translate([0,f1y-0.25,0])
cube([0.4,0.25,f1z]); //appears to be intended to interface with A2, but not sure why
translate([(f1x-f2x)/2,f1y-f2z,0])
tabinsert(1,f2z,f1z,0.0625,0.125,0,0,0,0,0.25,0.25,0.25,0.25,0); //f2
translate([(f1x/2)-1,0,0])
tabinsert(1,f3z,f1z,0.0625,0.125,0.25,0.25,0,0,0.0,0,0,0,0);
translate([((f1x-d3x-drawerHgap)/2)-2,1.5,0]) //bolt center to inner edge of f9=2
cylinder(h = f1z, r = 0.375);
translate([((f1x-d3x-drawerHgap)/2)-2,4.5,0])
cylinder(h = f1z, r = 0.375);
translate([(f1x/2)-(((brickL+(d2z*2)+drawerHgap)/2)-fZstandard-(sliderodholeOD/2)),f1y-(d2z+0.5+(sliderodholeOD/2)),0]) //slider rod
cylinder(h = f1z, r = sliderodholeOD/2);
} //end cuts module
} //end f1p module
F2
Welds to: F1, F4, F6
include <vars.scad>;
use <modus.scad>;
f2p();
module f2p(){
difference(){
cube([f2x,f2y,f2z]);
translate([1,0,0])
cornerjoint(f2z,f2x-2,f1z,0.125,f2x-2-0.25,0.125,0,0);
} //end difference
} //end f2p module
F3
Welds to: F1
Bolts to: F12
- F3 and F1 should probably be made the same length.
- going to set f3y=f1y. also some tweaks to insert holes
include <vars.scad>;
use <modus.scad>;
f3p();
module f3p(){
difference(){
translate([-(f3x/2),0,0])
cube([f3x,f3y,f3z]);
translate([-(f3x/2),0,0])
cuts();
translate([(f3x/2),0,0])
mirror([1,0,0])
cuts();
} //end difference
module cuts(){
translate([1,0,0])
cornerjoint(f3z,(f3x-4)/2,f1z,1,1,0.125,0,0);
translate([5.375,f3y/2,0])
cylinder(h = f3z, r = 0.5);
} //end cuts module
} //end f3p module
F4
Welds to: F14, F5
Bolts to: F9
- bolt holes look like they're maybe slightly miss aligned?
- are they different sized?
include <vars.scad>;
use <modus.scad>;
f4p();
module f4p(){
difference(){
translate([-(((brickL+(d2z*2)+drawerHgap+(f9y*2)))/2),0,0])
union(){
cube([(brickL+(d2z*2)+drawerHgap+(f9y*2)),f4y,f4z]);
translate([-((f4x-(brickL+(d2z*2)+drawerHgap+(f9y*2))))/2,f4y/2,0])
f4triangle();
translate([f4x-((f4x-(brickL+(d2z*2)+drawerHgap+(f9y*2)))/2),f4y/2,0])
mirror([1,0,0])
f4triangle();
}
translate([-(f4x/2),0,0])
cuts();
translate([(f4x/2),0,0])
mirror([1,0,0])
cuts();
} //end difference
module cuts(){
//f5 outer
translate([(f4x/2)+((f5x/2)-2),f4y,0])
cornerjoint(f4z,4,f5z,0.125,1,0.125,180,1);
//tabinsert(4,f5z*2,f4z,0.0625,0.125,0,0,0,0,0,0,0.25,0.25,1);
//f5 center
translate([(f4x/2),f4y,0])
tabinsert(2,f5z*2,f4z,0.0625,0.125,0,0,0,0,0.0,0,0.25,0.25,1);
//f14 - previoiusly f2
translate([(f4x-f14x+1)/2,7.5,0])
tabinsert(1,f2z,f6z,0.0625,0.125,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,1);
//f9 bolts
translate([((f4x-brickL-(d2z*2)-drawerHgap)/2)-2,2,0])
cylinder(h = f4z, r = 0.5025); //diameter 1.0?
translate([((f4x-brickL-(d2z*2)-drawerHgap)/2)-2,6,0])
cylinder(h = f4z, r = 0.5025);
translate([((f4x-brickL-(d2z*2)-drawerHgap)/2)-2,9,0])
cylinder(h = f4z, r = 0.5025);
} //end module
module f4triangle (){
difference(){
cube([(f4x-(brickL+(d2z*2)+drawerHgap+(f9y*2)))/2,f4y/2,f4z]);
difference(){
cube([(f4x-(brickL+(d2z*2)+drawerHgap+(f9y*2)))/2,f4y/2,f4z]);
translate([(f4x-(brickL+(d2z*2)+drawerHgap+(f9y*2)))/2,0,0])
rotate([0,0,atan(((f4x-(brickL+(d2z*2)+drawerHgap+(f9y*2)))/2)/(f4y/2))])
cube([10,10,f4z]);
translate([(f4x-(brickL+(d2z*2)+drawerHgap+(f9y*2)))/2,0,0])
cube([10,10,f4z]);
}
}
} //end f4triangle module
} //end f4p module
F5
Welds to: F4
Bolts to: A1
- f5p.scad
include <vars.scad>;
use <modus.scad>;
f5p();
module f5p(){
difference(){
translate([-(f5x/2),0,0])
cube([f5x,f5y,f5z]);
translate([-(f5x/2),0,0])
cuts();
translate([(f5x/2),0,0])
mirror([1,0,0])
cuts();
} //end difference
module cuts(){
translate([4,0,0])
cornerjoint(f5z,(f5x-(4*2)-2)/2,f4z,1,1,0.125,0,0);
//arm bolt hole
translate([(a1x/2),f5y-1.5,0]) //aligns with hole in center of a1x
cylinder(h = f5z, r = 0.5);
//might add an insert for an A6 type of support
} //end cuts module
} //end f5p module
F6
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
F14
Weld to F4
Same as F2 but different length
include <vars.scad>;
use <modus.scad>;
f14p();
module f14p(){
difference(){
cube([f14x,f14y,f14z]);
translate([1,0,0])
cornerjoint(f14z,f14x-2,f4z,0.125,f14x-2-0.25,0.125,0,0);
} //end difference
} //end f14p module
Arms
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>;
Dp();
module Dp(){
//main translate
translate([-d8y-d6z-(brickW/2),-d2z-(brickL/2),0]){
translate([0,d2z,0])
rotate([90,0,0])
d2p();
translate([0,d2z+d2z+brickL,0])
rotate([90,0,0])
d2p();
translate([0,d8x/2,0])
rotate([0,0,270])
d8p();
translate([d8y+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
} //end Dp module
D1
- holes in wrong location - need to fix
- can the holes for the bushing holders be tapped? do they need to have bolts?
- any room below? bricks sliding here.
- can nuts welded above holes?
- d1p.scad
include <vars.scad>;
use <modus.scad>;
d1p();
module d1p(){
difference(){
translate([-(d1x/2),0,0])
cube([d1x,d1y,d1z]);
translate([-(d1x/2),0,0])
cuts();
translate([(d1x/2),0,0])
mirror([1,0,0])
cuts();
} //end difference
module cuts(){
cube([(d1x-(brickL+d2z+d2z))/2,((brickW+d3z+d3z)*2)+1,d1z]);
translate([(d1x-brickL-d2z-d2z)/2,1.5,0]) //1.5 could be better defined
cube([d2z+dGap,d3z+brickW-1.5,d1z]); //June freecad model has larger cut out
//d11 hole 1 - can these holes be tapped
translate([0.25+d1boltOD/2,((brickW+d3z+d3z)*2)+1+(d11y/2),0])
cylinder(h=d11z, r=d1boltOD/2);
//d11 hole 2
translate([d11x-(0.25+d1boltOD/2),((brickW+d3z+d3z)*2)+1+(d11y/2),0])
cylinder(h=d11z, r=d1boltOD/2);
} //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);
//clovis pin access hole
translate([min((d8y-(d2clevispinaccessholeOD/2)),(d8y-((d9x-d6z)/2))),max((d8z+0.25+(d2clevispinaccessholeOD/2)),(((d9y-d8z)/2)+d8z)),0])
cylinder(h = d2z, r = d2clevispinaccessholeOD/2);
} //end difference
} //end d2p module
D3
- 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
D11
Plate to clamp down bushing holder
include <vars.scad>;
use <modus.scad>;
//to be mounted on top of bushing holder. clamps holder down with screws
d11p();
module d11p(){
difference(){
cube([d11x,d11y,d11z]);
//bolt 1a
translate([(d1bolt1OD/2)+0.5,d11y-(d1bolt1OD/2)-0.5,0])
cylinder(h=d11z, r=d1bolt1OD/2);
//bolt 1b
translate([(d1bolt1OD/2)+0.5,(d1bolt1OD/2)+0.5,0])
cylinder(h=d11z, r=d1bolt1OD/2);
//bolt 2a
translate([d11x-((d1bolt1OD/2)+0.5),d11y-(d1bolt1OD/2)-0.5,0])
cylinder(h=d11z, r=d1bolt2OD/2);
//bolt 2b
translate([d11x-((d1bolt1OD/2)+0.5),(d1bolt1OD/2)+0.5,0])
cylinder(h=d11z, r=d1bolt2OD/2);
} //end difference
} //end d11p module
RodBushingHolder
Upper Half
include <vars.scad>;
use <modus.scad>;
//this 3D printed part will be mounted to the drawer and hold a brass bushing
dRodBushingHoldertop(d1bushingOD,d1bushingOD,d1shaftOD,d1bolt1OD,d1bolt2OD);
module dRodBushingHoldertop(bushingOD,bushingL,shaftOD,bolt1OD,bolt2OD){
$fn=200;
X=1.5+(bolt1OD*2)+bushingOD;
Y=max((0.5+bushingL),4);
Z=0.25+(bushingOD/2);
difference(){
cube([X,Y,Z]);
//bolt 1a
translate([(bolt1OD/2)+0.5,Y-(bolt1OD/2)-0.5,0])
cylinder(h=Z, r=bolt1OD/2);
//bolt 1b
translate([(bolt1OD/2)+0.5,(bolt1OD/2)+0.5,0])
cylinder(h=Z, r=bolt1OD/2);
//bolt 2
// translate([X-(0.25+bolt1OD/2),Y/2,0])
// cylinder(h=Z, r=bolt1OD/2);
//bolt 2a
translate([X-((bolt1OD/2)+0.5),Y-(bolt1OD/2)-0.5,0])
cylinder(h=Z, r=bolt2OD/2);
//bolt 2b
translate([X-((bolt1OD/2)+0.5),(bolt1OD/2)+0.5,0])
cylinder(h=Z, r=bolt2OD/2);
//bushing
translate([X/2,(Y/2)+(bushingL/2),Z])
rotate([90,0,0])
cylinder(h=bushingL, r=bushingOD/2);
//shaft
translate([X/2,Y,Z])
rotate([90,0,0])
cylinder(h=Y, r=(shaftOD*1.05)/2);
} //end difference
} //end module
Lower Half
include <vars.scad>;
use <modus.scad>;
//this 3D printed part will be mounted to the drawer and hold a brass bushing
dRodBushingHolderbottom(d1bushingOD,d1bushingOD,d1shaftOD,d1bolt1OD,d1bolt2OD,d1nut2AF,d1nut2H);
module dRodBushingHolderbottom(bushingOD,bushingL,shaftOD,bolt1OD,bolt2OD,nutAF,nutH){
$fn=50;
X=1.5+(bolt1OD*2)+bushingOD;
Y=max((0.5+bushingL),4);
Z=max((0.25+(bushingOD/2)),((d2z+0.5+(sliderodholeOD/2))+drawergap));
difference(){
cube([X,Y,Z]);
//bolt 1a
translate([(bolt1OD/2)+0.5,Y-(bolt1OD/2)-0.5,0])
cylinder(h=Z, r=bolt1OD/2);
//bolt 1b
translate([(bolt1OD/2)+0.5,(bolt1OD/2)+0.5,0])
cylinder(h=Z, r=bolt1OD/2);
//bolt 2
// translate([X-(0.25+bolt1OD/2),Y/2,0])
// cylinder(h=Z, r=bolt1OD/2);
//bolt 2a
translate([X-((bolt1OD/2)+0.5),Y-(bolt1OD/2)-0.5,0])
{
cylinder(h=Z, r=bolt2OD/2);
nut(nutAF,nutH);
}
//bolt 2b
translate([X-((bolt1OD/2)+0.5),(bolt1OD/2)+0.5,0])
{
cylinder(h=Z, r=bolt2OD/2);
nut(nutAF,nutH); // 3/4" nut size
}
//bushing
translate([X/2,(Y/2)+(bushingL/2),Z])
rotate([90,0,0])
cylinder(h=bushingL, r=bushingOD/2);
//shaft
translate([X/2,Y,Z])
rotate([90,0,0])
cylinder(h=Y, r=(shaftOD*1.05)/2); //105% of shaft
} //end difference
} //end module
Grate
G1
g1x=23;
g1y=2;
g1z=0.5;
$fn=20;
difference(){
cube([g1x,g1y,g1z]);
translate([7,g1y/2,0])
cylinder(h = g1z,r = 0.4065);
translate([16,g1y/2,0])
cylinder(h = g1z,r = 0.4065);
} //end difference
G2
g2x=56;
g2y=2.3;
g2z=0.5;
$fn=20;
union(){
difference(){
cube([g2x,g2y-0.1,g2z]);
translate([4.375,1.6,0]) //goofy distance apart holes
cylinder(h = g2z,r = 0.406);
translate([20.125,1.6,0])
cylinder(h = g2z,r = 0.406);
translate([35.875,1.6,0])
cylinder(h = g2z,r = 0.406);
translate([51.625,1.6,0])
cylinder(h = g2z,r = 0.406);
//first two cuts are goofy distance from begining, so is last one.
for(i=[0:((g2x-3.4)/1.75)])
translate([(i*1.75)+3.4,0,0])
cube([0.3,0.5,g2z]);
translate([1.6,0,0])
cube([0.3,0.5,g2z]);
} //end difference
//goofy distance from end
translate([15.9475,g2y-0.1,0])
cube([0.3,0.1,g2z]);
translate([g2x-15.9475-0.3,g2y-0.1,0])
cube([0.3,0.1,g2z]);
}
G3
g3x=2;
g3y=3;
g3z=0.5;
$fn=20;
difference(){
cube([g3x,g3y,g3z]);
translate([1,1,0])
cylinder(h = g3z,r = 0.40625);
} //end difference
G4
g4x=5;
g4y=2.5;
g4z=0.5;
$fn=20;
difference(){
cube([g4x,g4y,g4z]);
translate([1,1.25,0])
cylinder(h = g4z,r = 0.40625);
} //end difference
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();
Full Assembly
include <vars.scad>; use <modus.scad>; use<Dp.scad>; use<Fp.scad>; Dp(); translate([0,0,-((f9x-f1y-brickCH-drawergap-f4y)+f4y)]) rotate([0,0,90]) Fp();
