CEB Press v16.09/SCAD Files/Parametric

From Open Source Ecology
Jump to navigation Jump to search

work in progress

creating an OpenSCAD replica of v16.09

CEB Press v16.09/SCAD Files/Parametric


Default Variables

By making a SCAD file with the variables used throughout the CEB press, we can use the "include" command within each individual part's file to pull in the same dimensions. Read More

vars.scad

brickW=6; 
brickL=12;
brickCH=6;

$fn=20; //defines resolution of circles. 20 fine for modeling. 100 for final export.

dZstandard=0.5; //Z depth of D parts
dGap=0.03125; //gap between a hole cut's edge and the part sitting within the hole. //D3 appears to use 0.3125, is this in error?

//d2x calculated
d1z=dZstandard;

d2y=brickCH;
d2z=dZstandard;

d3z=dZstandard;

d4z=dZstandard;

d5z=dZstandard;

d6z=dZstandard;

d5z=dZstandard;

d8z=dZstandard;

d9z=dZstandard;

cylinderMAINminC2E=0; //main hydraulic cylinder's distance from center of mounting hole to the end of the shaft when fully compressed.
cylinderMAINmaxC2E=0; //main hydraulic cylinder's distance from center of mounting hole to the end of the shaft when fully extended.


cylinderDRAWERbodyH=3; //measured when in position, largest length from top to bottom of cylinder
cylinderDRAWERminC2C=0; //drawer's hydraulic cylinder's distance from the center of one mounting hole to the center of the other when fully compressed.
cylinderDRAWERmaxC2C=0; ///drawer's hydraulic cylinder's distance from the center of one mounting hole to the center of the other when fully extended.
cylinderDRAWERrodclevisW=2.5; //width of cylinders' clevis on end of rod
cylinderDRAWERrodclevisID=1;
cylinderDRAWERrodclevisOD=2;
cylinderDRAWERrearclevisW=2.5; //width of mounting clevis cylinder body
cylinderDRAWERrearclevisID=1;
cylinderDRAWERrearclevisOD=2;
cylinderDRAWERrearclevisClearance=3; //usable space around rear clevis pin (in diameter). be aware of hyraulic fittings.

//variables calculated from other dimenions need to follow after others are defined
//following variables in order of dependence


d3x=brickL+(d2z*2);
d3y=brickCH-d1z;

d4x=brickW+d3z+d3z;
d4y=brickCH-d1z;

d5x=brickL+(d2z*2);
d5y=brickW;

d6x=brickL+(d2z*2);
d6y=brickCH;

d9x=3.5; //should this be variable based on cylinderDRAWERrodclevisOD?
d9y=3.5; //should this be variable based on cylinderDRAWERrodclevisOD?

d8x=brickL+(d2z*2);
d8y=d9y+1.5;

d2x=d8y+d6z+brickW+d3z+d5y+d3z;
 

Common Modules

Creating a file of modules will allow for them to be utilized in other files with the "use" command.

modus.scad

//Corner Joint - allows the sides of two parts to create inlayed corner. Aids with welding.
//need to verify module math is the same throughout all parts.

module cornerjoint(Z,L,H,EndGap,PadL,PadH,CJangle,CJcenter){
    //change so that H = Z of inlayed part (usually 0.5)
    //add center and angle in degrees option, orgin far side of cut out area

     if((CJangle==0)&&(CJcenter==0))
      {    
        translate([0,0,0])
        rotate([0,0,CJangle])
        difference(){
        cube([L,H+PadH,Z]);
        translate([EndGap,H,0])
        cube([PadL,PadH,Z]);
        translate([L-EndGap-PadL,H,0])
        cube([PadL,PadH,Z]);}
      }    
else if((CJangle==90)&&(CJcenter==0))
      {    
        translate([H+PadH,0,0])
        rotate([0,0,CJangle])
        difference(){
        cube([L,H+PadH,Z]);
        translate([EndGap,H,0])
        cube([PadL,PadH,Z]);
        translate([L-EndGap-PadL,H,0])
        cube([PadL,PadH,Z]);}
      }
else if((CJangle==180)&&(CJcenter==0))       
      {    
        translate([L,H+PadH,0])
        rotate([0,0,CJangle])
        difference(){
        cube([L,H+PadH,Z]);
        translate([EndGap,H,0])
        cube([PadL,PadH,Z]);
        translate([L-EndGap-PadL,H,0])
        cube([PadL,PadH,Z]);}
      }
else if((CJangle==270)&&(CJcenter==0))
      {    
        translate([0,L,0])
        rotate([0,0,CJangle])
        difference(){
        cube([L,H+PadH,Z]);
        translate([EndGap,H,0])
        cube([PadL,PadH,Z]);
        translate([L-EndGap-PadL,H,0])
        cube([PadL,PadH,Z]);}
      }  
      
//centered     
   
else if((CJangle==0)&&(CJcenter==1))
      {    
        translate([-L/2,0,0])
        rotate([0,0,CJangle])
        difference(){
        cube([L,H+PadH,Z]);
        translate([EndGap,H,0])
        cube([PadL,PadH,Z]);
        translate([L-EndGap-PadL,H,0])
        cube([PadL,PadH,Z]);}
      }  
else if((CJangle==90)&&(CJcenter==1))
      {    
        translate([0,-L/2,0])
        rotate([0,0,CJangle])
        difference(){
        cube([L,H+PadH,Z]);
        translate([EndGap,H,0])
        cube([PadL,PadH,Z]);
        translate([L-EndGap-PadL,H,0])
        cube([PadL,PadH,Z]);}
      }
else if((CJangle==180)&&(CJcenter==1))       
      {    
        translate([L/2,0,0])
        rotate([0,0,CJangle])
        difference(){
        cube([L,H+PadH,Z]);
        translate([EndGap,H,0])
        cube([PadL,PadH,Z]);
        translate([L-EndGap-PadL,H,0])
        cube([PadL,PadH,Z]);}
      }
else if((CJangle==270)&&(CJcenter==1))
      {    
        translate([0,L/2,0])
        rotate([0,0,CJangle])
        difference(){
        cube([L,H+PadH,Z]);
        translate([EndGap,H,0])
        cube([PadL,PadH,Z]);
        translate([L-EndGap-PadL,H,0])
        cube([PadL,PadH,Z]);}
      }
} //end cornerjoint module

//Tab Insert - used to cut a hole for an abutting part to insert into. Typically aids with welding the two parts.
module tabinsert(X,Y,Z,dGap,cGap,c1,c2,c3,c4,c5,c6,c7,c8,center){
    translate([-dGap-(center*(X/2)),-dGap-(center*(Y/2)),0]){
        //main cut
        cube([X+(dGap*2),Y+(dGap*2),Z]);
        //corner c1c2
        translate([-cGap,(Y+(dGap*2))-c1+cGap,0])
            {
        cube([c2,c1,Z]);}
       //corner c3c4
       translate([(X+(dGap*2))-c3+cGap,(Y+(dGap*2))-c4+cGap,0]){
           cube([c3,c4,Z]);
       }
       //corner c5c6
       translate([(X+(dGap*2))-c6+cGap,-cGap,0])
      {
          cube([c6,c5,Z]);
      }
       
       //corner c7c8 
       translate([-cGap,-cGap,0]){
           cube([c7,c8,Z]);
       }
    
    } //end center translate
} //end tabinsert module
 
 
 

Frame

Assembly

F4x=31;  //?why not just 22?
F4y=11;
F4z=0.5;
F4basex=25;

F6x=22.1875;  //?why not just 22?
F6y=8;
F6z=0.5;

F8x=43.5;
F8y=6;
F8z=0.5;
F9x=43.5;
F9y=4.5;
F9z=0.5;
$fn=20;  //render final model at 100

// ----------------------- //
translate([0,(F8y/2)+F6z,20.472]) //Z from F9// //adjust with cylinder length//
rotate([90,0,0])
F4();  //?group with F5?
translate([0,-(F8y/2),20.472])
rotate([90,0,0])
F4();

translate([0,(F8y/2)+F6z,0])
rotate([90,0,0])
F6();
translate([0,-(F8y/2),0])
rotate([90,0,0])
F6();

translate([1.9-8.5,0,0]){
rotate([0,0,90]){
translate([(F8y/2),F8z,0])
rotate([90,-90,0])
F8();
translate([(F8y/2)+(F9z/2)-(F8z/2),0,0])
rotate([0,-90,0])
F9();
translate([-(F8y/2)+(F9z/2)+(F8z/2),0,0])
rotate([0,-90,0])
F9();
}
}

translate([-1.9+8.5,0,0]){
rotate([0,0,-90]){
translate([(F8y/2),F8z,0])
rotate([90,-90,0])
F8();
translate([(F8y/2)+(F9z/2)-(F8z/2),0,0])
rotate([0,-90,0])
F9();
translate([-(F8y/2)+(F9z/2)+(F8z/2),0,0])
rotate([0,-90,0])
F9();
}
}

// ----------------------- //

module F4(){
    difference(){
translate([-(F4x/2),0,0])
cube([F4x,F4y,F4z]);
translate([-(F4x/2),0,0])
cuts();
translate([(F4x/2),0,0])
mirror([1,0,0])
cuts();
} //end difference
module cuts(){
    translate([0,0,0]) 
        cube([3,5.375,F4z]); 

    translate([0,5.375,0])
    difference(){
        cube([3,5.125,F4z]);
        translate([3,0,0])
        rotate([0,0,atan(3/5.125)])
        cube([10,10,F4z]);
    }

translate([(F4x/2)-13.6375,F4y-0.5,0])
    mirror([1,0,0])
cube([(F4x/2)-13.6375,0.5,F4z]);
translate([(F4x/2)-13.6375,F4y-0.625,0])
cube([2,0.625,F4z]);

    translate([(F4x/2)-0.8125,F4y-0.5,0])
        cube([0.8125,0.5,F4z]);
    translate([(F4x/2)-1.0625,F4y-0.625,0])
        cube([0.25,0.625,F4z]);
    
    translate([(F4x/2)-9.8125,7.185,0]) //?part ycentered 7.5?
        cube([1.125,0.625,F4z]);  //?interfaces with what? ?part F2?
    
    translate([(F4x/2)-8.5,2,0])
        cylinder(h = F4z, r = 0.5025); //diameter 1.0?
    translate([(F4x/2)-8.5,6,0])
        cylinder(h = F4z, r = 0.5025);
    translate([(F4x/2)-8.5,9,0])
        cylinder(h = F4z, r = 0.5025);
    
} //end module
    
}

module F6(){
difference(){
translate([-(F6x/2),0,0])
cube([F6x,F6y,F6z]);
translate([-(F6x/2),0,0])
cuts();
translate([(F6x/2),0,0])
mirror([1,0,0])
cuts();
} //end difference
module cuts(){
    translate([1.26,F6y-0.5,0]) //?xdistance from center? 
        cube([1.125,0.5,F6z]); //?interfaces with what?

    translate([(F6x/2)-1.125,F6y-3.22,0])
        cube([2.25,3.22,F6z]);
    translate([F6x/2,F6y-3.22,0])
        cylinder(h = F6z, r = 1.125);
    
    translate([(F6x/2)-8.5,2,0])
        cylinder(h = F6z, r = 0.38); //diameter 0.76?
    translate([(F6x/2)-8.5,6,0])
        cylinder(h = F6z, r = 0.38);
    
} //end module
}

module F8(){
    difference(){
cube([F8x,F8y,F8z]);
    translate([-0.0625,0,0])
        cornerjoint(7.375,0.625,0.25,0.5,0.125);
    translate([14.5-0.0625,0,0])
        cornerjoint(7.375,0.625,0.25,0.5,0.125);
    translate([14.5+14.5-0.0625,0,0])
        cornerjoint(7.375,0.625,0.25,0.5,0.125);
    
    translate([-0.0625,F8y,0])
    mirror([0,1,0])
        cornerjoint(7.375,0.625,0.25,0.5,0.125);
    translate([14.5-0.0625,F8y,0])
    mirror([0,1,0])
        cornerjoint(7.375,0.625,0.25,0.5,0.125);
    translate([14.5+14.5-0.0625,F8y,0])
    mirror([0,1,0])
        cornerjoint(7.375,0.625,0.25,0.5,0.125);    
    
    hull(){
    translate([23.34,3,0])  //?x interfaces with what?
        cylinder(h = F8z, r = 0.5);
    translate([23.6,3,0])
        cylinder(h = F8z, r = 0.5);
    }
    
        hull(){
    translate([30.34,3,0])  //?x interfaces with what?
        cylinder(h = F8z, r = 0.5);
    translate([30.6,3,0])
        cylinder(h = F8z, r = 0.5);
    }
}
} //end F8 module

module F9(){
difference(){
cube([F9x,F9y,F9z]);
    translate([7.25,0,0])
        cornerjoint(7.25,0.625,0.25,0.5,0.125);
    translate([14.5+7.25,0,0])
        cornerjoint(7.25,0.625,0.25,0.5,0.125);
    translate([14.5+14.5+7.25,0,0])
        cornerjoint(7.25,0.625,0.25,0.5,0.125);
    
    translate([0,F9y-0.5625,0])
        cube([0.53125,0.5625,F9z]);
    translate([19.96875,F9y-0.5625,0])
        cube([0.5625,0.5625,F9z]);
    translate([31.3,F9y-1.4,0])
        cube([6.4,1.4,F9z]);    //?interfaces with what?
    translate([F9x-0.5,F9y-0.5625,0])
        cube([0.5,0.5625,F9z]);
    
    translate([2,1.9,0])  //?x interfaces with what?  ?1.9?
        cylinder(h = F9z, r = 0.38);
    translate([6,1.9,0])  //?x interfaces with what?
        cylinder(h = F9z, r = 0.38);   
        
    translate([22.472,1.9,0])  //??.472?? ?interfaces with what?
        cylinder(h = F9z, r = 0.5025);
    translate([26.472,1.9,0])
        cylinder(h = F9z, r = 0.5025);
    translate([29.472,1.9,0])
        cylinder(h = F9z, r = 0.5025);
    
    
    translate([39,1.9,0])  //?x interfaces with what?
        cylinder(h = F9z, r = 0.38);
    translate([42,1.9,0])  //?x interfaces with what?
        cylinder(h = F9z, r = 0.38);   
    }
} //end F9 module

module cornerjoint(L,H,EndGap,PadL,PadH){
    difference(){
     cube([L,H,F9z]);
        translate([EndGap,H-PadH,0])
        cube([PadL,PadH,F9z]);
        translate([L-EndGap-PadL,H-PadH,0])
        cube([PadL,PadH,F9z]);
    }
} //end cornerjoint module


 

F1

Welds to: F2, F3

Bolts to: F9

Abuts: A2

F1x=24.2;
F1y=6;
F1z=0.5;
$fn=20;  //render final model at 100

projection(cut = true) //use projection to create 2D DXF files
difference(){
translate([-(F1x/2),0,0])
cube([F1x,F1y,F1z]);
translate([-(F1x/2),0,0])
cuts();
translate([(F1x/2),0,0])
mirror([1,0,0])
cuts();
} //end difference
module cuts(){
        cube([0.5,0.5,F1z]);
    translate([0.5,0,0])
        cube([0.7875,0.625,F1z]);
    translate([0,F1y-0.25,0])
        cube([0.4,0.25,F1z]);
    translate([2.2875,F1y-0.5,0])
        cube([1.125,0.5,F1z]);
    translate([11.0375,0,0])
        cube([0.8125,0.625,F1z]);
    translate([11.85,0,0])
        cube([0.25,0.5,F1z]);
    translate([3.6,1.5,0])
        cylinder(h = F1z, r = 0.375);   
    translate([3.6,4.5,0])
        cylinder(h = F1z, r = 0.375);
    translate([6.1925,2.465,0])
        cylinder(h = F1z, r = 0.6);     
} //end module
 

F2

Welds to: F1, F4, F6

F2x=19.5;
F2y=3.5;
F2z=0.5;
$fn=20;  //render final model at 100

projection(cut = true) //use projection to create 2D DXF files
difference(){
translate([-(F2x/2),0,0])
cube([F2x,F2y,F2z]);
translate([-(F2x/2),0,0])
cuts();
translate([(F2x/2),0,0])
mirror([1,0,0])
cuts();
} //end difference
module cuts(){
    translate([1,F2y-0.625,0])
        cube([0.125,0.625,F2z]);
    translate([1.125,F2y-0.5,0])
        cube([8.625,0.5,F2z]);  
} //end module

 

F3

Welds to: F1

Bolts to: F12

F3x=23.75;
F3y=3.5;
F3z=0.5;
$fn=20;  //render final model at 100

projection(cut = true) //use projection to create 2D DXF files
difference(){
translate([-(F3x/2),0,0])
cube([F3x,F3y,F3z]);
translate([-(F3x/2),0,0])
cuts();
translate([(F3x/2),0,0])
mirror([1,0,0])
cuts();
} //end difference
module cuts(){
    translate([1,0,0])
        cube([1,0.625,F3z]);
    translate([2,0,0])
        cube([1,0.5,F3z]);
    translate([3,0,0])
        cube([5.875,0.625,F3z]);
    translate([8.875,0,0])
        cube([1,0.5,F3z]);
    translate([9.875,0,0])
        cube([1,0.625,F3z]);
    translate([5.375,1.75,0])
        cylinder(h = F3z, r = 0.5);      
} //end module
 

F4

Welds to: F2, F5

Bolts to: F9

F4x=31;  //?why not just 22?
F4y=11;
F4z=0.5;
F4basex=25;
$fn=20;  //render final model at 100

projection(cut = true) //use projection to create 2D DXF files
difference(){
translate([-(F4x/2),0,0])
cube([F4x,F4y,F4z]);
translate([-(F4x/2),0,0])
cuts();
translate([(F4x/2),0,0])
mirror([1,0,0])
cuts();
} //end difference
module cuts(){
    translate([0,0,0]) 
        cube([3,5.375,F4z]); 

    translate([0,5.375,0])
    difference(){
        cube([3,5.125,F4z]);
        translate([3,0,0])
        rotate([0,0,atan(3/5.125)])
        cube([10,10,F4z]);
    }

translate([(F4x/2)-13.6375,F4y-0.5,0])
    mirror([1,0,0])
cube([(F4x/2)-13.6375,0.5,F4z]);
translate([(F4x/2)-13.6375,F4y-0.625,0])
cube([2,0.625,F4z]);

    translate([(F4x/2)-0.8125,F4y-0.5,0])
        cube([0.8125,0.5,F4z]);
    translate([(F4x/2)-1.0625,F4y-0.625,0])
        cube([0.25,0.625,F4z]);
    
    translate([(F4x/2)-9.8125,7.185,0]) //?part ycentered 7.5?
        cube([1.125,0.625,F4z]);  //?interfaces with what? ?part F2?
    
    translate([(F4x/2)-8.5,2,0])
        cylinder(h = F4z, r = 0.5025); //diameter 1.0?
    translate([(F4x/2)-8.5,6,0])
        cylinder(h = F4z, r = 0.5025);
    translate([(F4x/2)-8.5,9,0])
        cylinder(h = F4z, r = 0.5025);
    
} //end module
 
 
 

F5

Welds to: F4

Bolts to: A1

F5x=31.4;
F5y=3.5;
F5z=0.5;
$fn=20;  //render final model at 100

projection(cut = true) //use projection to create 2D DXF files
difference(){
translate([-(F5x/2),0,0])
cube([F5x,F5y,F5z]);
translate([-(F5x/2),0,0])
cuts();
translate([(F5x/2),0,0])
mirror([1,0,0])
cuts();
} //end difference
module cuts(){
    translate([4,F5y-0.625,0])
        cube([1,0.625,F5z]);
    translate([5,F5y-0.5,0])
        cube([1,0.5,F5z]);
    translate([6,F5y-0.625,0])
        cube([6.7,0.625,F5z]);
    translate([12.7,F5y-0.5,0])
        cube([1,0.5,F5z]);
    translate([13.7,F5y-0.625,0])
        cube([1,0.625,F5z]);
    hull(){
    translate([3.5,1.5,0])
        cylinder(h = F5z, r = 0.5);
    translate([4.5,1.5,0])
        cylinder(h = F5z, r = 0.5);
    }
} //end module
 

F6

some errors of symmetry in source dxf drawing. made some assumptions. need to check fit with interfacing parts.

Welds to: F2, F7

Bolts to: F9

F6x=22.1875;  //?why not just 22?
F6y=8;
F6z=0.5;
$fn=20;  //render final model at 100

projection(cut = true) //use projection to create 2D DXF files
difference(){
translate([-(F6x/2),0,0])
cube([F6x,F6y,F6z]);
translate([-(F6x/2),0,0])
cuts();
translate([(F6x/2),0,0])
mirror([1,0,0])
cuts();
} //end difference
module cuts(){
    translate([1.26,F6y-0.5,0]) //?xdistance from center? 
        cube([1.125,0.5,F6z]); //?interfaces with what?

    translate([(F6x/2)-1.125,F6y-3.22,0])
        cube([2.25,3.22,F6z]);
    translate([F6x/2,F6y-3.22,0])
        cylinder(h = F6z, r = 1.125);
    
    translate([(F6x/2)-8.5,2,0])
        cylinder(h = F6z, r = 0.38); //diameter 0.76?
    translate([(F6x/2)-8.5,6,0])
        cylinder(h = F6z, r = 0.38);
    
} //end module
 

F8

Welds to: F9, F10

Bolts to: Rub Plate ?

F8x=43.5;
F8y=6;
F8z=0.5;
$fn=20;  //render final model at 100


difference(){
cube([F8x,F8y,F8z]);
    translate([-0.0625,0,0])
        cornerjoint(7.375,0.625,0.25,0.5,0.125);
    translate([14.5-0.0625,0,0])
        cornerjoint(7.375,0.625,0.25,0.5,0.125);
    translate([14.5+14.5-0.0625,0,0])
        cornerjoint(7.375,0.625,0.25,0.5,0.125);
    
    translate([-0.0625,F8y,0])
    mirror([0,1,0])
        cornerjoint(7.375,0.625,0.25,0.5,0.125);
    translate([14.5-0.0625,F8y,0])
    mirror([0,1,0])
        cornerjoint(7.375,0.625,0.25,0.5,0.125);
    translate([14.5+14.5-0.0625,F8y,0])
    mirror([0,1,0])
        cornerjoint(7.375,0.625,0.25,0.5,0.125);    
    
    hull(){
    translate([23.34,3,0])  //?x interfaces with what?
        cylinder(h = F8z, r = 0.5);
    translate([23.6,3,0])
        cylinder(h = F8z, r = 0.5);
    }
    
        hull(){
    translate([30.34,3,0])  //?x interfaces with what?
        cylinder(h = F8z, r = 0.5);
    translate([30.6,3,0])
        cylinder(h = F8z, r = 0.5);
    }
}

module cornerjoint(L,H,EndGap,PadL,PadH){
    difference(){
     cube([L,H,F8z]);
        translate([EndGap,H-PadH,0])
        cube([PadL,PadH,F8z]);
        translate([L-EndGap-PadL,H-PadH,0])
        cube([PadL,PadH,F8z]);
    }
} //end cornerjoint module
 

F9

Welds to: F8, F11

Bolts to: F1, F4, F6

Abuts: A1 ?, A2 ?, F12

F9x=43.5;
F9y=4.5;
F9z=0.5;
$fn=20;  //render final model at 100


difference(){
cube([F9x,F9y,F9z]);
    translate([7.25,0,0])
        cornerjoint(7.25,0.625,0.25,0.5,0.125);
    translate([14.5+7.25,0,0])
        cornerjoint(7.25,0.625,0.25,0.5,0.125);
    translate([14.5+14.5+7.25,0,0])
        cornerjoint(7.25,0.625,0.25,0.5,0.125);
    
    translate([0,F9y-0.5625,0])
        cube([0.53125,0.5625,F9z]);
    translate([19.96875,F9y-0.5625,0])
        cube([0.5625,0.5625,F9z]);
    translate([31.3,F9y-1.4,0])
        cube([6.4,1.4,F9z]);    //?interfaces with what?
    translate([F9x-0.5,F9y-0.5625,0])
        cube([0.5,0.5625,F9z]);
    
    translate([2,1.9,0])  //?x interfaces with what?  ?1.9?
        cylinder(h = F9z, r = 0.38);
    translate([6,1.9,0])  //?x interfaces with what?
        cylinder(h = F9z, r = 0.38);   
        
    translate([22.472,1.9,0])  //??.472?? ?interfaces with what?
        cylinder(h = F9z, r = 0.5025);
    translate([26.472,1.9,0])
        cylinder(h = F9z, r = 0.5025);
    translate([29.472,1.9,0])
        cylinder(h = F9z, r = 0.5025);
    
    
    translate([39,1.9,0])  //?x interfaces with what?
        cylinder(h = F9z, r = 0.38);
    translate([42,1.9,0])  //?x interfaces with what?
        cylinder(h = F9z, r = 0.38);   
    }


module cornerjoint(L,H,EndGap,PadL,PadH){
    difference(){
     cube([L,H,F9z]);
        translate([EndGap,H-PadH,0])
        cube([PadL,PadH,F9z]);
        translate([L-EndGap-PadL,H-PadH,0])
        cube([PadL,PadH,F9z]);
    }
} //end cornerjoint module
 

F10

Welds to: F8?

F10x=5.9;
F10y=2;
F10z=0.5;

cube([F10x,F10y,F10y]);
 

F11

Welds to: F9

F11x=1.25;
F11y=6;
F11z=0.5;

projection(cut = true) //use projection to create 2D DXF files
difference(){
translate([0,-(F11y/2),0])
cube([F11x,F11y,F11z]);
translate([0,-(F11y/2),0])
cuts();
translate([0,(F11y/2),0])
mirror([0,1,0])
cuts();
} //end difference
module cuts(){
    translate([0.5,0,0])
        cube([0.125,0.625,F11z]);
    translate([0.625,0,0])
        cube([0.625,0.5,F11z]);
  
} //end module
 

Arms

A1

Welds to: A2, A6

Bolts to: A4, A5, F1, H7, H8

Abuts: F9

A1x=4;
A1y=72;
A1z=0.5;
$fn=20;

difference(){
    cube([A1x,A1y,A1z]);
    
    translate([0,0.71875,0])
    cube([0.6875,0.5625,A1z]);
    translate([0,44.8501,0]) //?y.8501?
    cube([0.6875,0.5625,A1z]);
    translate([0,70.9688,0])  //y 0.46875 from top
    cube([0.6875,0.5625,A1z]);
    
    translate([2,2,0])
    cylinder(h = A1z, r = 0.4);
    translate([2,4,0])
    cylinder(h = A1z, r = 0.4);   
   
       translate([2,27,0])
    cylinder(h = A1z, r = 0.4); 
    
        translate([2,37,0])
    cylinder(h = A1z, r = 0.4);
    
    hull(){
            translate([2,39.67,0]) //small error on drawing
    cylinder(h = A1z, r = 0.4);
            translate([2,40.25,0]) //small error on drawing
    cylinder(h = A1z, r = 0.4);
    }
    
    hull(){
            translate([2,50.25,0]) //small error
    cylinder(h = A1z, r = 0.4);
            translate([2,50.85,0]) //small error
    cylinder(h = A1z, r = 0.4);
    }
    
        translate([2,53.75,0])
    cylinder(h = A1z, r = 0.4);    translate([2,56.75,0])
    cylinder(h = A1z, r = 0.4);
    
        translate([2,63.75,0])
    cylinder(h = A1z, r = 0.4);
        translate([2,69,0])
    cylinder(h = A1z, r = 0.4);
    
    //corner joints
    for(i=[0:5])
    translate([4,i*11.9375,0])
    rotate([0,0,90])
    cornerjoint(6.0625,0.625,0.125,0.5,0.125);
    
}

module cornerjoint(L,H,EndGap,PadL,PadH){
    difference(){
     cube([L,H,A1z]);
        translate([EndGap,H-PadH,0])
        cube([PadL,PadH,A1z]);
        translate([L-EndGap-PadL,H-PadH,0])
        cube([PadL,PadH,A1z]);
    }
} //end cornerjoint module
 

A2

Welds to: A1, A6

Bolts to: Guards, Hopper mounts

Abuts: F1 (?), F9

A2x=5.96603;  //?just 6?
A2y=72;
A2z=0.5;
$fn=20;

difference(){
    cube([A2x,A2y,A2z]);
    
    translate([A2x-0.6875,0.46875,0])
    cube([0.6875,0.5625,A2z]);
    translate([A2x-0.6875,26.5874,0]) //?y.8501?
    cube([0.6875,0.5625,A2z]);
    translate([A2x-0.6875,A2y-0.71875,0])  //y 0.46875 from top
    cube([0.6875,0.5625,A2z]);
    
    hull(){
    translate([A2x-1.75,21.2,0])   //?y?
    cylinder(h = A2z, r = 0.4);
    translate([A2x-1.75,22.765,0]) //?y?
    cylinder(h = A2z, r = 0.4);   
    }
    
    hull(){
    translate([A2x-1.75,47.56,0]) //?y?
    cylinder(h = A2z, r = 0.4);
    translate([A2x-1.75,49.0785,0]) //?y?
    cylinder(h = A2z, r = 0.4);   
    }
       
//corner joints
    for(i=[0:5])
    translate([0,(i*12)+6,0])
    rotate([0,0,270])
    cornerjoint(6,0.625,0.125,0.5,0.125);
    
}

module cornerjoint(L,H,EndGap,PadL,PadH){
    difference(){
     cube([L,H,A2z]);
        translate([EndGap,H-PadH,0])
        cube([PadL,PadH,A2z]);
        translate([L-EndGap-PadL,H-PadH,0])
        cube([PadL,PadH,A2z]);
    }
} //end cornerjoint module
 

A3

Welds to: A4, A5

a3x=4;
a3y=72;
a3z=0.5;
$fn=20;

difference(){
    cube([a3x,a3y,a3z]);
    
       
//corner joints
    for(i=[0:5])
    translate([0,(i*12)+6,0])
    rotate([0,0,270])
    cornerjoint(6,0.625,0.125,0.5,0.125);
    
}

module cornerjoint(L,H,EndGap,PadL,PadH){
    difference(){
     cube([L,H,a3z]);
        translate([EndGap,H-PadH,0])
        cube([PadL,PadH,a3z]);
        translate([L-EndGap-PadL,H-PadH,0])
        cube([PadL,PadH,a3z]);
    }
} //end cornerjoint module
 
 

A4

Welds to: A3

Bolts to: A1

a4x=6;
a4y=72;
a4z=0.5;
$fn=20;

difference(){
    cube([a4x,a4y,a4z]);
    
    
    hull(){
    translate([a4x-2,23.725,0])   //?y?
    cylinder(h = a4z, r = 0.4);
    translate([a4x-2,24.835,0]) //?y?
    cylinder(h = a4z, r = 0.4);   
    }
    hull(){
    translate([a4x-4,23.725,0])   //?y?
    cylinder(h = a4z, r = 0.4);
    translate([a4x-4,24.835,0]) //?y?
    cylinder(h = a4z, r = 0.4);   
    }
    
    hull(){
    translate([a4x-2,47.135,0])
    cylinder(h = a4z, r = 0.4);
    translate([a4x-2,48.265,0])
    cylinder(h = a4z, r = 0.4);   
    }
        hull(){
    translate([a4x-4,47.135,0])
    cylinder(h = a4z, r = 0.4);
    translate([a4x-4,48.265,0])
    cylinder(h = a4z, r = 0.4);   
    }
       
//corner joints
    for(i=[0:5])
    translate([0,(i*11.9375)+6.0625,0])
    rotate([0,0,270])
    cornerjoint(6.0625,0.625,0.125,0.5,0.125);
    
}

module cornerjoint(L,H,EndGap,PadL,PadH){
    difference(){
     cube([L,H,a4z]);
        translate([EndGap,H-PadH,0])
        cube([PadL,PadH,a4z]);
        translate([L-EndGap-PadL,H-PadH,0])
        cube([PadL,PadH,a4z]);
    }
} //end cornerjoint module
 

A5

Welds to: A3

Bolts to: A1

a5x=6;
a5y=72;
a5z=0.5;
$fn=20;

difference(){
    cube([a5x,a5y,a5z]);

    hull(){
            translate([3,23.795,0]) 
    cylinder(h = a5z, r = 0.405);
            translate([3,24.805,0]) 
    cylinder(h = a5z, r = 0.405);
    }
    
    hull(){
            translate([3,47.2,0]) 
    cylinder(h = a5z, r = 0.405);
            translate([3,48.2,0]) 
    cylinder(h = a5z, r = 0.405);
    }
    
    
    //corner joints
    for(i=[0:5])
    translate([6,(i*12)+5.9375,0])
    rotate([0,0,90])
    cornerjoint(6.125,0.625,0.125,0.5,0.125);
    
}

module cornerjoint(L,H,EndGap,PadL,PadH){
    difference(){
     cube([L,H,a5z]);
        translate([EndGap,H-PadH,0])
        cube([PadL,PadH,a5z]);
        translate([L-EndGap-PadL,H-PadH,0])
        cube([PadL,PadH,a5z]);
    }
} //end cornerjoint module
 

A6

Welds to: A1, A2


 

Drawer

D1

  • does not match freecad drawing from JuneGroup file
    • need to review
include <vars.scad>;
use <modus.scad>;

d1x=18.5;
d1y=18;
d1z=dZstandard;
$fn=20;

difference(){
translate([-(d1x/2),0,0])
cube([d1x,d1y,d1z]);
translate([-(d1x/2),0,0])
cuts();
translate([(d1x/2),0,0])
mirror([1,0,0])
cuts();
} //end difference
module cuts(){
        cube([2.5,16,d1z]);
    translate([2.5,1.5,0])
        cube([0.6,5,d1z]);  
} //end module

 

D2

  • need to switch to "tabinsert" module

Welds to: D1, D3 (2), D5, D6, D8

include <vars.scad>;
use <modus.scad>;

echo(d8y+d6z+brickW+d3z+d5y+d3z); //total length of part

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


 

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

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
 

D4

include <vars.scad>;
use <modus.scad>;

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
 

D5

include <vars.scad>;
use <modus.scad>;

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 module

 

D6

include <vars.scad>;
use <modus.scad>;

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



 

D7

  • Should this part be re-categorized as an Arm part?
  • Welds to A4
    • tweaking to add inserts to aid weld
d7x=3;
d7y=3;
d7z=dZstandard;
$fn=20;

difference(){
cube([d7x,d7y,d7z]);
    translate([d7x/2,d7y/2,0])
    cylinder(h = d7z,r = 0.5);
}
 

D8

dZstandard=0.5;
include <vars.scad>;
use <modus.scad>;

difference(){
translate([-(d8x/2),0,0])
cube([d8x,d8y,d8z]);
translate([-(d8x/2),0,0])
cuts();
translate([(d8x/2),0,0])
mirror([1,0,0])
cuts();
} //end difference
module cuts(){
    translate([0,d8y/2,0])
    cornerjoint(d8z,d8y-(0.75*2),d2z,0.125,0.25,0.125,270,1);

    translate([1,d8y-0.125,0])
    cube([(d8x-(1*3))/2,0.125,d8z]);
    
    translate([(((d6x-cylinderDRAWERrodclevisW)/2)-(d9z/2)),((d9x-d6z)/2)+d6z,0])
    tabinsert(d9z,0.5,d5z,0.03125,0.09375,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,1);
    
} //end module
 

D9

  • need to check formulas for pegs with matching holes in d8 and d6
  • uses drawer cylinder height to determine pin location
include <vars.scad>;
use <modus.scad>;

//need to check formulas for pegs with matching holes in d8 and d6

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));
}
 

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