CEB Press v16.09/SCAD Files/Parametric: Difference between revisions

From Open Source Ecology
Jump to navigation Jump to search
Line 703: Line 703:
Bolts to: F9
Bolts to: F9


*might change bolt hole distance to outer edge, the drawerHgap makes it goofy to have a round number from center.
*changed bolt hole distance to outer edge, the drawerHgap makes it goofy to have a round number from center.
*need to use insert module for f2 holes
*need to use MAINcylinder specs to make cylinder pin hole


  <nowiki>
  <nowiki>
F6x=22.1875; //?why not just 22?
include <vars.scad>;
F6y=8;
use <modus.scad>;
F6z=0.5;
 
$fn=20;  //render final model at 100
f6p();
 
module f6p(){


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


     translate([(F6x/2)-1.125,F6y-3.22,0])
//need to change this section to match MAINcylinder specs
         cube([2.25,3.22,F6z]);
     translate([(f6x/2)-1.125,f6y-3.22,0])
     translate([F6x/2,F6y-3.22,0])
         cube([2.25,3.22,f6z]);
         cylinder(h = F6z, r = 1.125);
     translate([f6x/2,f6y-3.22,0])
         cylinder(h = f6z, r = 1.125);
      
      
     translate([(F6x/2)-8.5,2,0])
     translate([2.5,2,0])
         cylinder(h = F6z, r = 0.38); //diameter 0.76?
         cylinder(h = f6z, r = 0.38); //diameter 0.76?
     translate([(F6x/2)-8.5,6,0])
     translate([2.5,6,0])
         cylinder(h = F6z, r = 0.38);
         cylinder(h = f6z, r = 0.38);
      
      
} //end module
} //end cuts module
} //end f6p module
  </nowiki>
  </nowiki>



Revision as of 02:13, 4 July 2017

work in progress

creating an OpenSCAD replica of v16.09

CEB Press v16.09/SCAD Files/Parametric


Default Variables

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

vars.scad
brickW=6; 
brickL=12;
brickCH=6;

$fn=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

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

f1y=6;

f4y=11;

f8y=brickW;
f8z=fZstandard;
f8boltD=1;

f9y=4.5;
f9x=43.5;
f9z=fZstandard;

f8x=f9x;


//arms

a2y=6;

a4z=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;

f6x=brickL+(f9y*2)+drawerHgap;
f8x=43.5;  //need to define based on MAINcylinder inputs

 

Common Modules

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

modus.scad

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

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

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

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

Frame

Frame Assembly

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


 

F1

Welds to: F2, F3

Bolts to: F9

Abuts: A2

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

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

F2

Welds to: F1, F4, F6

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

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

 

F3

Welds to: F1

Bolts to: F12

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

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

F4

Welds to: F2, F5

Bolts to: F9

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

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

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

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

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

F5

Welds to: F4

Bolts to: A1

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

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

F6

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

Welds to: F2, F7

Bolts to: F9

  • changed bolt hole distance to outer edge, the drawerHgap makes it goofy to have a round number from center.
  • 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-0.5,0]) //?xdistance from center? 
        cube([1.125,0.5,f6z]); //?interfaces with f2? could use insert module here


//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);
    
    translate([2.5,2,0])
        cylinder(h = f6z, r = 0.38); //diameter 0.76?
    translate([2.5,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>;

f9();

module f9(){

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)-(a2y+0.4),f9y-1.4,0])
        cube([a2y+0.4,1.4,f9z]);  //?interfaces with a2?
    
    
    //bolt holes
    //f6
    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);   
        
        
        //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,f9y-2.5,0]) //replacing translate y=1.9 with f9y-2.5
        cylinder(h = f9z, r = 0.5025);
    translate([f9x-f1y-d2y-drawergap-5,f9y-2.5,0])
        cylinder(h = f9z, r = 0.5025);
    translate([f9x-f1y-d2y-drawergap-9,f9y-2.5,0])
        cylinder(h = f9z, r = 0.5025);
    
    //f1
    translate([f9x-4.5,f9y-2.5,0])  //?x interfaces with f1?
        cylinder(h = f9z, r = 0.38);
    translate([f9x-1.5,f9y-2.5,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

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

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

Arms

A1

Welds to: A2, A6

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

Abuts: F9

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

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

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

A2

Welds to: A1, A6

Bolts to: Guards, Hopper mounts

Abuts: F1 (?), F9

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

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

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

A3

Welds to: A4, A5

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

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

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

A4

Welds to: A3

Bolts to: A1

  • add insert holes for drawer part D7
    • location will be determined by cylinder specifications.
    • length of A1 and holes to attach to A4 will need to be go along with this.
a4x=6;
a4y=72;
a4z=0.5;
$fn=20;

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

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

A5

Welds to: A3

Bolts to: A1

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

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

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

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

A6

Welds to: A1, A2


 

Drawer

Drawer Assembly

  • origin located at center of bottom of compression chamber
  • X-axis oriented along movement of drawer
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();