CEB Press v16.09/SCAD Files/Parametric

From Open Source Ecology
Jump to: navigation, search

work in progress moved on to CEB Press v17.08/SCAD Files/

creating an OpenSCAD replica of v16.09

CEB Press v16.09/SCAD Files/Parametric

Latest files on Google Drive for download: link

Default Variables

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

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

$fn=8; //defines resolution of circles. 8 is okay for review. 100  or greater should be used for for final dxf export.

dZstandard=0.5; //thickness of steel to be cut for drawer parts
fZstandard=0.5;
aZstandard=0.5; //thickness of steel to be cut for arm parts

fBOLTHOLEstandardD=1; //standard bolts used on frame
sliderodholeOD=1.2; 

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

//all parts set to standard thickness below
//off standard preferences can be defined below

//drawer
drawergap=0.0283;  //extra room for drawer to slide in the space between f1 and f4
drawerHgap=0.1884;  //total extra space from drawer sides to frame walls. sum of both sides.

d1z=dZstandard;
d2z=dZstandard;
d3z=dZstandard;
d4z=dZstandard;
d5z=dZstandard;
d6z=dZstandard;
d5z=dZstandard;
d7z=dZstandard;
d8z=dZstandard;
d9z=dZstandard;

//frame
f1x=24.2;
f1y=6;
f1z=0.5;


f2y=3.5;
f2z=fZstandard;

f3x=f1x;
f3y=3.5;
f3z=fZstandard;

f4y=11;
f4z=fZstandard;

f5y=3.5;
f5z=fZstandard;

f6y=8;
f6z=fZstandard;

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

f9y=4.5;
f9x=43.5;  //set based on MAINcylinder
f9z=fZstandard;

f8x=f9x;

f11x=1.25;
f11z=fZstandard;

f13z=fZstandard;

//arms

a1x=4;
a1y=72; //calculate based on drawer cylinder
a1z=aZstandard;

a2x=6;
a2y=72;  //calculate based on drawer cylinder
a2z=aZstandard;

a4z=aZstandard;
a6z=aZstandard;

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

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

//the following variables are calculated in order of dependence on preceding variables
d3x=brickL+(d2z*2);
d3y=brickCH-d1z;
d4x=brickW+d3z+d3z;
d4y=brickCH-d1z;
d5x=brickL+(d2z*2);
d5y=brickW;
d6x=brickL+(d2z*2);
d6y=brickCH;
d7x=cylinderDRAWERrearclevisClearance;
d7y=a4z+d8z+cylinderDRAWERbodyH;
d9x=cylinderDRAWERbodyH+d6z;
d9y=cylinderDRAWERbodyH+d8z;
d8x=brickL+(d2z*2);
d8y=max(5,(d9x-d6z));   //need to review fundamentals, 5 minimun unless d9 gets larger than d8
d1x=18.5;   //need to come up with a formula
d1y=18;     //need to come up with a formula
d2x=d8y+d6z+brickW+d3z+d5y+d3z;
d2y=brickCH;

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


f2x=brickL+(d2z*2)+drawerHgap+(f9y*2)-(1.4*2);  //distance between large cut outs in f9

f5x=brickL+(d2z*2)+drawerHgap+(f9y*2)+(a1x*2); //distance between outer edges of each A1

f4x=f5x-0.5;   //same as f5 but minus 0.25 on each side to give a little overhang


 

Common Modules

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

modus.scad

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

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

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

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

Frame

Frame Assembly

  • F4 holes look slightly more narrow than the F9 holes.
  • calculate F4 and F5 Z height from the top down. Let f9 length be adjusted by cylinder. try to avoid calculation again.

CEBscad-frame.png

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

use <f1p.scad>;
use <f2p.scad>;
use <f3p.scad>;
use <f4p.scad>;
use <f5p.scad>;
use <f6p.scad>;
//use <f7p.scad>;
use <f8p.scad>;
use <f9p.scad>;
//use <f10p.scad>;
use <f11p.scad>;
//use <f12p.scad>;


translate([0,(f8y/2)+f1z,f9x])
rotate([90,180,0])
f1p();

translate([0,-(f8y/2),f9x])
rotate([90,180,0])
f1p();

translate([-f2x/2,(f8y/2),f9x-f1y])
rotate([0,0,0])
f2p();  //connected to F1

translate([f2x/2,-(f8y/2),f9x-f1y])
rotate([0,0,180])
f2p();  
 
translate([0,(f8y/2),f9x])
rotate([0,180,0])
f3p();  //connected to F1

translate([0,-(f8y/2),f9x])
rotate([0,180,180])
f3p();  //connected to F1

translate([0,(f8y/2)+f6z,(f9x-f1y-brickCH-drawergap-f4y)])
rotate([90,0,0])
f4p();  //?group with f5?

translate([0,-(f8y/2),(f9x-f1y-brickCH-drawergap-f4y)])
rotate([90,0,0])
f4p();

translate([0,(f8y/2),(f9x-f1y-brickCH-drawergap-f4y)+f4y])
rotate([0,180,0])
f5p();  //connected to F4

translate([0,-(f8y/2),(f9x-f1y-brickCH-drawergap-f4y)+f4y])
rotate([0,180,180])
f5p();  //connected to F4

translate([-f2x/2,(f8y/2),(f9x-f1y-brickCH-drawergap-f4y)+7.5-(f2z/2)])
rotate([0,0,0])
f2p();  //connected to F1

translate([f2x/2,-(f8y/2),(f9x-f1y-brickCH-drawergap-f4y)+7.5-(f2z/2)])
rotate([0,0,180])
f2p();

translate([0,(f8y/2)+f6z,f6y])
rotate([90,180,0])
f6p();

translate([0,-(f8y/2),f6y])
rotate([90,180,0])
f6p();

translate([-f2x/2,(f8y/2),0])
rotate([0,0,0])
f2p();  //connected to F6

translate([f2x/2,-(f8y/2),0])
rotate([0,0,180])
f2p();  

translate([f6x/2,0,0])
rotate([0,0,180])
f11p();

translate([f6x/2,0,f9x-f1y-d2y-f4y-drawergap-0.5])
rotate([0,0,180])
f11p();

translate([f6x/2,0,f9x-0.5])
rotate([0,0,180])
f11p();

translate([-f6x/2,0,0])
rotate([0,0,0])
f11p();

translate([-f6x/2,0,f9x-f1y-d2y-f4y-drawergap-0.5])
rotate([0,0,0])
f11p();

translate([-f6x/2,0,f9x-0.5])
rotate([0,0,0])
f11p();

translate([1.9-8.5,0,0]){   //???
rotate([0,0,90]){
    
translate([(f8y/2),f8z,0])
rotate([90,-90,0])
f8p();
    
translate([(f8y/2)+(f9z/2)-(f8z/2),0,0])
rotate([0,-90,0])
f9p();
    
translate([-(f8y/2)+(f9z/2)+(f8z/2),0,0])
rotate([0,-90,0])
f9p();
} //end rotate
} //end translate

translate([-1.9+8.5,0,0]){
rotate([0,0,-90]){
    
translate([(f8y/2),f8z,0])
rotate([90,-90,0])
f8p();
    
translate([(f8y/2)+(f9z/2)-(f8z/2),0,0])
rotate([0,-90,0])
f9p();
    
translate([-(f8y/2)+(f9z/2)+(f8z/2),0,0])
rotate([0,-90,0])
f9p();
} //end rotate
} //end translate

 

F1

Welds to: F2, F3

Bolts to: F9

Abuts: A2

  • need to tweak bolt translates?
  • change to use cornerjoint module instead of insert module on outter ends of F3 connections


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

f1p();

module f1p(){
    
difference(){
translate([-(f1x/2),0,0])
cube([f1x,f1y,f1z]);
translate([-(f1x/2),0,0])
cuts();
translate([(f1x/2),0,0])
mirror([1,0,0])
cuts();
} //end difference
module cuts(){
    tabinsert(1,f3z,f1z,0.0625,0.125,0,0,0.25,0.25,0.0,0,0,0,0);
    
    translate([0,f1y-0.25,0])
        cube([0.4,0.25,f1z]);     //appears to be intended to interface with A2, but not sure why
    translate([(f1x-f2x)/2,f1y-f2z,0])
        tabinsert(1,f2z,f1z,0.0625,0.125,0,0,0,0,0.25,0.25,0.25,0.25,0);    //f2
    translate([(f1x/2)-1,0,0])
        tabinsert(1,f3z,f1z,0.0625,0.125,0.25,0.25,0,0,0.0,0,0,0,0); 
    translate([((f1x-d3x-drawerHgap)/2)-2,1.5,0])  //bolt center to inner edge of f9=2
        cylinder(h = f1z, r = 0.375);   
    translate([((f1x-d3x-drawerHgap)/2)-2,4.5,0])
        cylinder(h = f1z, r = 0.375);
    translate([((f1x-d3x-drawerHgap)/2)+(sliderodholeOD/2)+drawerHgap,2.465,0]) //not sure what this is supposed to align with, drawer?
        cylinder(h = f1z, r = sliderodholeOD/2);     
} //end cuts module

} //end f1p module
 

F2

Welds to: F1, F4, F6

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

f2p();

module f2p(){
    
difference(){
    cube([f2x,f2y,f2z]);
    translate([1,0,0])
        cornerjoint(f2z,f2x-2,f1z,0.125,f2x-2-0.25,0.125,0,0);
} //end difference

} //end f2p module

 

F3

Welds to: F1

Bolts to: F12

  • F3 and F1 should probably be made the same length.
    • going to set f3y=f1y. also some tweaks to insert holes
include <vars.scad>;
use <modus.scad>;

f3p();

module f3p(){

difference(){
translate([-(f3x/2),0,0])
cube([f3x,f3y,f3z]);
translate([-(f3x/2),0,0])
cuts();
translate([(f3x/2),0,0])
mirror([1,0,0])
cuts();
} //end difference
module cuts(){
    translate([1,0,0])
        cornerjoint(f3z,(f3x-4)/2,f1z,1,1,0.125,0,0);
    translate([5.375,f3y/2,0])
        cylinder(h = f3z, r = 0.5);      
} //end cuts module

} //end f3p module
 

F4

Welds to: F2, F5

Bolts to: F9

  • use cornerjoint module instead of insert for F5 connection
  • bolt holes look like they're maybe slightly miss aligned?
    • are they different sized?
include <vars.scad>;
use <modus.scad>;

f4p();

module f4p(){
    
difference(){
translate([-(((brickL+(d2z*2)+drawerHgap+(f9y*2)))/2),0,0])
    union(){
        cube([(brickL+(d2z*2)+drawerHgap+(f9y*2)),f4y,f4z]);
        translate([-((f4x-(brickL+(d2z*2)+drawerHgap+(f9y*2))))/2,f4y/2,0])
        f4triangle();
        translate([f4x-((f4x-(brickL+(d2z*2)+drawerHgap+(f9y*2)))/2),f4y/2,0])
        mirror([1,0,0])
        f4triangle();
    }
translate([-(f4x/2),0,0])
cuts();
translate([(f4x/2),0,0])
mirror([1,0,0])
cuts();
} //end difference

module cuts(){

    //f5 outer
    translate([(f4x/2)+((f5x/2)-2),f4y,0])
        cornerjoint(f4z,4,f5z,0.125,1,0.125,180,1);
        //tabinsert(4,f5z*2,f4z,0.0625,0.125,0,0,0,0,0,0,0.25,0.25,1);

    //f5 center
    translate([(f4x/2),f4y,0])
        tabinsert(2,f5z*2,f4z,0.0625,0.125,0,0,0,0,0.0,0,0.25,0.25,1);
    
    //f2
    translate([(f4x-f2x+1)/2,7.5,0])
        tabinsert(1,f2z,f6z,0.0625,0.125,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,1);    

    //f9 bolts
    translate([((f4x-brickL-(d2z*2)-drawerHgap)/2)-2,2,0])
        cylinder(h = f4z, r = 0.5025); //diameter 1.0?
    translate([((f4x-brickL-(d2z*2)-drawerHgap)/2)-2,6,0])
        cylinder(h = f4z, r = 0.5025);
    translate([((f4x-brickL-(d2z*2)-drawerHgap)/2)-2,9,0])
        cylinder(h = f4z, r = 0.5025);
    
} //end module

module f4triangle (){
difference(){
    cube([(f4x-(brickL+(d2z*2)+drawerHgap+(f9y*2)))/2,f4y/2,f4z]);
        difference(){
            cube([(f4x-(brickL+(d2z*2)+drawerHgap+(f9y*2)))/2,f4y/2,f4z]);
            translate([(f4x-(brickL+(d2z*2)+drawerHgap+(f9y*2)))/2,0,0])
            rotate([0,0,atan(((f4x-(brickL+(d2z*2)+drawerHgap+(f9y*2)))/2)/(f4y/2))])
                cube([10,10,f4z]);
            translate([(f4x-(brickL+(d2z*2)+drawerHgap+(f9y*2)))/2,0,0])
                cube([10,10,f4z]);
        }
    }
}  //end f4triangle module

}  //end f4p module
 
 

F5

Welds to: F4

Bolts to: A1

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

f5p();

module f5p(){
    
difference(){
translate([-(f5x/2),0,0])
cube([f5x,f5y,f5z]);
translate([-(f5x/2),0,0])
cuts();
translate([(f5x/2),0,0])
mirror([1,0,0])
cuts();
} //end difference

module cuts(){
    translate([4,0,0])
    cornerjoint(f5z,(f5x-(4*2)-2)/2,f4z,1,1,0.125,0,0);    

    //arm bolt hole
    translate([(a1x/2),f5y-1.5,0])  //aligns with hole in center of a1x
        cylinder(h = f5z, r = 0.5);
    
    //might add an insert for an A6 type of support
    
} //end cuts module

} //end f5p module
 

F6

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

Welds to: F2, F7

Bolts to: F9

  • changed bolt hole distance to outer edge, the drawerHgap makes it goofy to have a round number from center.
    • need to change translate to accomidate for drawerHgap
  • need to use insert module for f2 holes
  • need to use MAINcylinder specs to make cylinder pin hole
include <vars.scad>;
use <modus.scad>;

f6p();

module f6p(){

difference(){
translate([-(f6x/2),0,0])
cube([f6x,f6y,f6z]);
translate([-(f6x/2),0,0])
cuts();
translate([(f6x/2),0,0])
mirror([1,0,0])
cuts();
} //end difference
module cuts(){
    
    translate([(f6x-f2x)/2,f6y-f2z,0])
        tabinsert(1,f2z,f6z,0.0625,0.125,0,0,0,0,0.25,0.25,0.25,0.25,0);    //F2
    
//need to change this section to match MAINcylinder specs
    translate([(f6x/2)-1.125,f6y-3.22,0])
        cube([2.25,3.22,f6z]);  
    translate([f6x/2,f6y-3.22,0])
        cylinder(h = f6z, r = 1.125);
    
    // bolt holes to f9
    translate([((f6x-brickL-(d2z*2)-drawerHgap)/2)-2,2,0])
        cylinder(h = f6z, r = 0.38); //diameter 0.76?
    translate([((f6x-brickL-(d2z*2)-drawerHgap)/2)-2,6,0])
        cylinder(h = f6z, r = 0.38);
    
} //end cuts module
} //end f6p module
 

F8

Welds to: F9, F10

Bolts to: Rub Plate ?

  • need to redo cornerjoint module inputs
  • need to set standard bolt size
include <vars.scad>;
use <modus.scad>;

f8p();

module f8p(){

difference(){
cube([f8x,f8y,f8z]);
    translate([(1/12)*f8x,0,0])
        cornerjoint(f8z,(f8x/6),f9z,0.25,0.5,0.125,0,1);
    translate([(5/12)*f8x,0,0])
        cornerjoint(f8z,(f8x/6),f9z,0.25,0.5,0.125,0,1);
    translate([(9/12)*f8x,0,0])
        cornerjoint(f8z,(f8x/6),f9z,0.25,0.5,0.125,0,1);
    
    translate([(1/12)*f8x,f8y,0])
        cornerjoint(f8z,(f8x/6),f9z,0.25,0.5,0.125,180,1);
    translate([(5/12)*f8x,f8y,0])
        cornerjoint(f8z,(f8x/6),f9z,0.25,0.5,0.125,180,1);
    translate([(9/12)*f8x,f8y,0])
        cornerjoint(f8z,(f8x/6),f9z,0.25,0.5,0.125,180,1);
    
    hull(){
    translate([f8x-7-((f1y+d2y+drawergap+1)-(0.26/2)),f8y/2,0])  //?x interfaces with what? need to calculate center of F8
        cylinder(h = f8z, r = f8boltD/2);
    translate([f8x-7-((f1y+d2y+drawergap+1)+(0.26/2)),f8y/2,0])
        cylinder(h = f8z, r = f8boltD/2);
    }

        hull(){
    translate([f8x-((f1y+d2y+drawergap+1)-(0.26/2)),f8y/2,0])  //?x interfaces with what?
        cylinder(h = f8z, r = f8boltD/2);
    translate([f8x-((f1y+d2y+drawergap+1)+(0.26/2)),f8y/2,0])
        cylinder(h = f8z, r = f8boltD/2);
    }
}

} //end f8p module
 

F9

Welds to: F8, F11

Bolts to: F1, F4, F6

Abuts: A1 ?, A2 ?, F12

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

f9p();

module f9p(){

difference(){
cube([f9x,f9y,f9z]);
    translate([(3/12)*f9x,0,0])
        cornerjoint(f9z,(f8x/6),f8z,0.25,0.5,0.125,0,1);
    translate([(7/12)*f9x,0,0])
        cornerjoint(f9z,(f8x/6),f8z,0.25,0.5,0.125,0,1);
    translate([(11/12)*f9x,0,0])
        cornerjoint(f9z,(f8x/6),f8z,0.25,0.5,0.125,0,1);
    
    
    translate([0,f9y-0.5,0])
        tabinsert(0.5,0.5,f9z,0.03125,0.125,0,0,0,0,0.25,0.25,0,0,0);
    translate([f9x-f1y-d2y-f4y-drawergap-0.5,f9y-0.5,0])
        tabinsert(0.5,0.5,f9z,0.03125,0.125,0,0,0,0,0.25,0.25,0.25,0.25,0);
    translate([f9x-0.5,f9y-0.5,0])
        tabinsert(0.5,0.5,f9z,0.03125,0.125,0,0,0,0,0,0,0.25,0.25,0);
    
    
    //big cutout
    translate([f9x-(f1y-0.2)-(a2x+0.4),f9y-1.4,0])
        cube([a2x+0.4,1.4,f9z]);  //?interfaces with a2?
    
    
    //bolt holes
    //f6
    translate([2,2,0])  //?x interfaces with f6?  
    //replacing translate y=1.9 with y=f9y-2.5
        cylinder(h = f9z, r = 0.38);
    translate([6,2,0])  //?x interfaces with f6?
        cylinder(h = f9z, r = 0.38);   
        
        
        //distance from center to edge of part is 1.5
        //distance between center to center is 9.5283
        //distance from center to edge of part is 2
        //gap between parts is 6.0283
        //drawer is 6.0 tall
        //leaves 0.0283 space 
        //should this be 0.03125? (1/32)
        
        //should f4 be attached with 4 smaller bolts instead of 3 big ones. would prevent all movement?
        //f4
    translate([f9x-f1y-d2y-drawergap-2,2,0]) //replacing translate y=1.9 with f9y-2.5
        cylinder(h = f9z, r = 0.5025);
    translate([f9x-f1y-d2y-drawergap-5,2,0])
        cylinder(h = f9z, r = 0.5025);
    translate([f9x-f1y-d2y-drawergap-9,2,0])
        cylinder(h = f9z, r = 0.5025);
    
    //f1
    translate([f9x-4.5,2,0])  //?x interfaces with f1?
        cylinder(h = f9z, r = 0.38);
    translate([f9x-1.5,2,0])  //?x interfaces with f1?
        cylinder(h = f9z, r = 0.38);   
    }

}



 

F10

Welds to: F8?

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

cube([F10x,F10y,F10y]);
 

F11

Welds to: F9

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

f11p();

module f11p(){
    
difference(){
translate([0,-(f11y/2),0])
cube([f11x,f11y,f11z]);
translate([0,-(f11y/2),0])
cuts();
translate([0,(f11y/2),0])
mirror([0,1,0])
cuts();
} //end difference

module cuts(){
    translate([0.5,0,0])
        cube([0.125,0.125+f9z,f11z]);
    translate([0.625,0,0])
        cube([f11x-0.5-0.125,f9z,f11z]);
  
} //end cuts module

}  //end f11p module
 

F12

Bolts to Hopper Seat

F13

Spacer betwwen F6 and F9 used to accomidate MAINcylinder with larger diameter than brickW

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

f13p();

module f13p(){
    
    difference(){
    cube([f6y,f9y,f13z]);
        translate([2,f9y-2.5,0])  //?x interfaces with f6?  
    //replacing translate y=1.9 with y=f9y-2.5
        cylinder(h = f9z, r = 0.38);
    translate([6,f9y-2.5,0])  //?x interfaces with f6?
        cylinder(h = f9z, r = 0.38); 
    }  
} //end f13p module
 

Arms

A1

Welds to: A2, A6

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

Abuts: F9

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

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

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

A2

Welds to: A1, A6

Bolts to: Guards, Hopper mounts

Abuts: F1 (?), F9

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

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

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

A3

Welds to: A4, A5

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

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

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

A4

Welds to: A3

Bolts to: A1

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

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

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

A5

Welds to: A3

Bolts to: A1

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

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

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

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

A6

Welds to: A1, A2

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

a6p();

module a6p(){
    
    X=a2x;
    Y=a1x;
    Zx=a2z;
    Zy=a1z;
    
    W=min(((1)/cos((atan((Y-1)/(X-1))))),((1)/sin((atan((Y-1)/(X-1)))))); 
    //trying to make some overhang for insert to butt up against. not perfect but working
    //trying for 0.5, but not getting there exactly
    
difference(){

union(){

translate([-1/tan(atan((Y-1)/(X-1))),0,0])
rotate([0,0,atan((Y-1)/(X-1))])
translate([0,-W,0])
#cube([50,W,a6z]);
    
cube([0.625,Zx,a6z]);
    
translate([X-Zy,Y-0.625,0])
cube([Zy,0.625,a6z]);
} //end union - start difference
        
translate([0.625,0,0])    
cube([100,Zx,a6z]);

translate([-100,-99,0])    
cube([100,100,a6z]);

translate([0,-100,0])    
cube([100,100,a6z]);

translate([0,Y,0])
cube([100,100,a6z]);

translate([X,0,0])
cube([100,100,a6z]);

translate([X-Zy,Y-0.625-100,0])
cube([Zy,100,a6z]);



    } //end difference
    
}  //end a6p module
 

Drawer

Drawer Assembly

  • origin located at center of bottom of compression chamber
  • X-axis oriented along movement of drawer

CEB-scad-drawer.png

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


use<d1p.scad>;
use<d2p.scad>;
use<d3p.scad>;
use<d4p.scad>;
use<d5p.scad>;
use<d6p.scad>;
use<d8p.scad>;
use<d9p.scad>;

//main translate
translate([-d8y-d6z-(brickW/2),-d2z-(brickL/2),0]){
    
translate([0,d2z,0])
rotate([90,0,0])
d2p();

translate([0,d2z+d2z+brickL,0])
rotate([90,0,0])
d2p();

translate([0,d8x/2,0])
rotate([0,0,270])
d8p();

translate([d8y+d6z,d6x/2,0])
rotate([90,0,270])
d6p();

translate([d8y+d6z+brickW,d3x/2,d3y])
rotate([270,0,270])
d3p();

translate([d8y+d6z+brickW+d3z,d5x/2,0])
rotate([0,0,270])
d5p();

translate([d8y+d6z+brickW+d3z+(d5y/2),((d5x/2)+(d5z/2))-(brickL/4),0])
rotate([90,0,0])
d4p();

translate([d8y+d6z+brickW+d3z+(d5y/2),(d5x/2)+(d5z/2),0])
rotate([90,0,0])
d4p();

translate([d8y+d6z+brickW+d3z+(d5y/2),((d5x/2)+(d5z/2))+(brickL/4),0])
rotate([90,0,0])
d4p();

translate([d8y+d6z+brickW+d5y+d3z,d3x/2,d3y])
rotate([270,0,270])
d3p();


translate([d8y+d6z,(((d6x-cylinderDRAWERrodclevisW)/2)-(d9z)),0])
rotate([90,0,180])
d9p();

translate([d8y+d6z,(cylinderDRAWERrodclevisW+d9z)+((((d6x-cylinderDRAWERrodclevisW)/2)-(d9z))),0])
rotate([90,0,180])
d9p();

translate([(d8y+d6z+brickW),(brickL/2)+d2z,d3y])
rotate([0,0,270])
d1p();

//
//add drawer cylinger rod half and rod clevis
//

} //end main translate

 

D1

  • does not match freecad drawing from JuneGroup file
    • need to review


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

d1p();

module d1p(){

difference(){
translate([-(d1x/2),0,0])
cube([d1x,d1y,d1z]);
translate([-(d1x/2),0,0])
cuts();
translate([(d1x/2),0,0])
mirror([1,0,0])
cuts();
} //end difference
module cuts(){
        cube([(d1x-brickL-d2z-d2z)/2,16,d1z]);
    translate([(d1x-brickL-d2z-d2z)/2,1.5,0]) //1.5 could be better defined, but needs to match D2's cut out
        cube([0.6,5,d1z]);  //June freecad model has larger cut out
} //end module

} //end d1p module
 

D2

  • need to switch to "tabinsert" module

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

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

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

d2p();

module d2p(){
    
difference(){
cube([d2x,d2y,d2z]);
    
    //cuts numbered clockwise from top left
    
    //1 - Not on FreeCad Model??
    
    translate([0,d2y-0.43,0])
    cube([2,0.43,d2z]);
    
    //2 - D6
    
    translate([d8y,d2y-0.5,0])
    tabinsert(d6z,0.5,d2z,dGap,0.125,0,0,0,0,0.25,0.25,0.25,0.25,0);
    
    //3 - D3, D1
    
    translate([d8y+d6z+brickW,d2y-d1z-0.75,0])
    tabinsert(d3z,d1z+0.75,d2z,dGap,0.125,0,0,0,0,0.375,0.25,0.25,0.375,0);
    translate([d8y+d6z+brickW+d3z,d2y-d1z,0]) 
    tabinsert(1.5-d3z,d1z,d2z,dGap,0.125,0,0,0,0,0.25,0.625,0,0,0);
    
    //4 - D3, D1
    
    translate([d2x-d3z,d2y-0.75-d1z,0]) //put in far corner
    tabinsert(d3z,d1z+0.75,d2z,dGap,0.125,0,0,0,0,0,0,0.25,0.5,0);
    
    //5 - D3, D5
    
    translate([d8y+d6z+brickW+d3z+(d5y-0.5),0,0])
    tabinsert(0.5,d5z,d2z,dGap,0.125,0.25,0.25,0,0,0,0,0,0,0);
    translate([d8y+d6z+brickW+d3z+d5y,0,0])
    tabinsert(d3z,0.75,d2z,dGap,0.125,0.25,0.25,0,0,0,0,0,0,0);
    
    //6 -  D3, D5
    
    translate([d8y+d6z+brickW,0,0])
    tabinsert(d3z,0.75,d2z,dGap,0.125,0.5,0.25,0.25,0.25,0,0,0,0,0);
    translate([d8y+d6z+brickW+d3z,0,0]) 
    tabinsert(0.5,d5z,d2z,dGap,0.125,0,0,0.25,0.375,0,0,0,0,0);

    //7 - D6, D8 
    
    translate([d8y-0.75,0,0])
    tabinsert(0.75,d8z,d2z,dGap,0.125,0.25,0.25,0,0,0,0,0,0,0);
    translate([d8y,0,0])
    tabinsert(d6z,1,d2z,dGap,0.125,0.25,0.25,0.25,0.625,0,0,0,0,0);
    
    //8 - D8
    
    tabinsert(0.75,d8z,d2z,dGap,0.125,0,0,0.25,0.25,0,0,0,0,0);  
    
} //end difference

} //end d2p module


 

D3

  • need to fix corner joint module, then double check its use here
include <vars.scad>;
use <modus.scad>;

//this part is rendered upside down from placement

d3p();

module d3p(){

difference(){
translate([-(d3x/2),0,0])
cube([d3x,d3y,d3z]);
translate([-(d3x/2),0,0])
cuts();
translate([(d3x/2),0,0])
mirror([1,0,0])
cuts();
} //end difference

module cuts(){
    translate([0,d3y/2,0])
    cornerjoint(d3z,d3y-(0.75*2),d2z,0.125,0.25,0.125,270,1);    
    
    //outer columns tab inserts
    
    translate([(brickL/4)+d2z,d3y-d5z-(0.75/2),0])
    tabinsert(d4z,0.75,d3z,dGap,0.09375,0.375,0.25,0.25,0.375,0.375,0.25,0.25,0.375,1);
    translate([(brickL/4)+d2z,((d4y-d5z)/2),0])
    tabinsert(d4z,0.5,d3z,dGap,0.09375,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,1);
    translate([(brickL/4)+d2z,0,0])
    tabinsert(d4z,(0.75*2),d3z,dGap,0.09375,0.625,0.25,0.25,0.625,0,0,0,0,1);
    
    //center column tab inserts
    
    translate([d3x/2,d3y-d5z-(0.75/2),0])
    tabinsert(d4z,0.75,d3z,dGap,0.09375,0.375,0.25,0.25,0.375,0.375,0.25,0.25,0.375,1); 
    translate([d3x/2,((d4y-d5z)/2),0])
    tabinsert(d4z,0.5,d3z,dGap,0.09375,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,1);
    translate([d3x/2,0,0])
    tabinsert(d4z,(0.75*2),d3z,dGap,0.09375,0.625,0.25,0.25,0.625,0,0,0,0,1);
    
} //end cuts module

} //end d3p module
 

D4

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

d4p();

module d4p(){

difference(){
translate([-(d4x/2),0,0])
cube([d4x,d4y,d4z]);
translate([-(d4x/2),0,0])
cuts();
translate([(d4x/2),0,0])
mirror([1,0,0])
cuts();
} //end difference
module cuts(){
    translate([0,d5z+0.75,0])
    cornerjoint(d4z,(d4y-(0.75*2)-0.5-d5z)/2,d3z,0.125,((d4y-(0.75*2)-0.5-d5z)/2)-(0.125*2),0.125,270,0);
    
    translate([0,d4y-0.75-((d4y-(0.75*2)-0.5-d5z)/2),0])
    cornerjoint(d4z,(d4y-(0.75*2)-0.5-d5z)/2,d3z,0.125,((d4y-(0.75*2)-0.5-d5z)/2)-(0.125*2),0.125,270,0);

    translate([-0.125,0,0])
    cornerjoint(d4z,((d4x-0.5)/2)+(0.125),d5z,0.125,((d4x-0.5)/2)-0.125,0.125,0,0);
} //end cut module

} //end d4p module
 

D5

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

d5p();

module d5p(){

difference(){
translate([-(d5x/2),0,0])
cube([d5x,d5y,d5z]);
translate([-(d5x/2),0,0])
cuts();
translate([(d5x/2),0,0])
mirror([1,0,0])
cuts();
} //end difference

module cuts(){
    translate([0,d5y/2,0])
    cornerjoint(d5z,d5y-(0.5*2),d2z,0.125,0.25,0.125,270,1);

    translate([1,0,0])
        cube([(d5x-(1*3))/2,0.125,d5z]);
        translate([1,d5y-0.125,0])
        cube([(d5x-(1*3))/2,0.125,d5z]);
    
    translate([(brickL/4)+d2z,d5y/2,0])
    tabinsert(0.5,0.5,d5z,0.03125,0.09375,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,1);
 
        translate([d5x/2,3,0])
    tabinsert(0.5,0.5,d5z,0.03125,0.09375,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,1);

} //end cuts module

} //end d5p module
 

D6

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

d6p();

module d6p(){

difference(){
translate([-(d6x/2),0,0])
cube([d6x,d6y,d6z]);
translate([-(d6x/2),0,0])
cuts();
translate([(d6x/2),0,0])
mirror([1,0,0])
cuts();
} //end difference

module cuts(){
    translate([0,1,0])
    cornerjoint(d6z,d6y-1-0.5,d2z,0.125,0.25,0.125,270,0);
    
    translate([(((d6x-cylinderDRAWERrodclevisW)/2)-(d9z/2)),((d9y-d8z)/2)+d8z,0])  
    tabinsert(d9z,0.5,d5z,0.03125,0.09375,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,1);
} //end cuts module

} //end d6p module
 

D7

  • Should this part be re-categorized as an Arm part?
  • Welds to A4
    • tweaking to add inserts to aid weld


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

//need to add holes to A4 for cornerjoint

d7p();

module d7p(){

difference(){
cube([d7x,d7y,d7z]);
    
    //joint
    translate([d7x/2,0,0])
        cornerjoint(d7z,(d7x-1),a4z,0.125,0.25,0.125,0,1);
    
    //pin hole
    translate([d7x/2,a4z+d8z+(cylinderDRAWERbodyH/2),0])
        cylinder(h = d7z,r = (cylinderDRAWERrearclevisID/2));
} //end difference

} //end d7p module
 

D8

  • insert holes' position is wrong
include <vars.scad>;
use <modus.scad>;

d8p();

module d8p(){

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

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

} //end d8p module
 

D9

Welds to: D6, D8

  • uses drawer cylinder height to determine clevis pin location
include <vars.scad>;
use <modus.scad>;

d9p();

module d9p(){

difference(){
cube([d9x,d9y,d9z]);
    
    //x
translate([-0.125,0,0])
    cornerjoint(d9z,0.125+(d6z+((d9x-d6z-0.5)/2)),d8z,0.125,(d6z+((d9x-d6z-0.5)/2))-0.125,0.125,0,0);
translate([0.5+(d6z+((d9x-d6z-0.5)/2)),0,0])
    cornerjoint(d9z,((d9x-d6z-0.5)/2)+0.125,d8z,0.125,((d9x-d6z-0.5)/2)-0.125,0.125,0,0);
    
    //y
translate([0,-0.125,0])
    cornerjoint(d9z,0.125+(d8z+((d9y-d8z-0.5)/2)),d6z,0.125,(d8z+((d9y-d8z-0.5)/2))-0.125,0.125,270,0);
translate([0,0.5+(d8z+((d9y-d8z-0.5)/2)),0])
    cornerjoint(d9z,((d9y-d8z-0.5)/2)+0.125,d6z,0.125,((d9y-d8z-0.5)/2)-0.125,0.125,270,0);

    //pin hole
translate([(0.5/2)+(d6z+((d9x-d6z-0.5)/2)),(0.5/2)+(d8z+((d9y-d8z-0.5)/2)),0])
    cylinder(h = d9z,r = (cylinderDRAWERrodclevisID/2));
}

} //end d9p module
 

D10

d10x=18;
d10y=3;
d10z=dZstandard;
$fn=20;

difference(){
cube([d10x,d10y,d10z]);
    translate([1,d10y/2,0])
    cylinder(h = d10z,r = 0.55);
        translate([4,d10y/2,0])
    cylinder(h = d10z,r = 0.55);
        translate([9,d10y/2,0])
    cylinder(h = d10z,r = 0.55);
        translate([14,d10y/2,0])
    cylinder(h = d10z,r = 0.55);
        translate([17,d10y/2,0])
    cylinder(h = d10z,r = 0.55);
} //end difference


 

Grate

G1

g1x=23;
g1y=2;
g1z=0.5;
$fn=20;

difference(){
cube([g1x,g1y,g1z]);
    translate([7,g1y/2,0])
        cylinder(h = g1z,r = 0.4065);
    translate([16,g1y/2,0])
        cylinder(h = g1z,r = 0.4065);

} //end difference


 

G2

g2x=56;
g2y=2.3;
g2z=0.5;
$fn=20;
union(){
difference(){
cube([g2x,g2y-0.1,g2z]);
    translate([4.375,1.6,0]) //goofy distance apart holes
        cylinder(h = g2z,r = 0.406);
    translate([20.125,1.6,0])
        cylinder(h = g2z,r = 0.406);
        translate([35.875,1.6,0])
        cylinder(h = g2z,r = 0.406);
        translate([51.625,1.6,0])
        cylinder(h = g2z,r = 0.406);
       
    //first two cuts are goofy distance from begining, so is last one.
    for(i=[0:((g2x-3.4)/1.75)])
    translate([(i*1.75)+3.4,0,0])
    cube([0.3,0.5,g2z]);
        translate([1.6,0,0])
    cube([0.3,0.5,g2z]);

    

} //end difference

    //goofy distance from end
        translate([15.9475,g2y-0.1,0])
            cube([0.3,0.1,g2z]);
        translate([g2x-15.9475-0.3,g2y-0.1,0])
            cube([0.3,0.1,g2z]);
}
 


G3

g3x=2;
g3y=3;
g3z=0.5;
$fn=20;

difference(){
cube([g3x,g3y,g3z]);
    translate([1,1,0])
        cylinder(h = g3z,r = 0.40625);


} //end difference
 

G4

g4x=5;
g4y=2.5;
g4z=0.5;
$fn=20;

difference(){
cube([g4x,g4y,g4z]);
    translate([1,1.25,0])
        cylinder(h = g4z,r = 0.40625);


} //end difference


 


Part Review Layout

  • All parts layed out in sequence for review in DXF format
    • might find a way to label parts below X axis
review.scad
include <vars.scad>;
use <modus.scad>;

use<d1p.scad>;
use<d2p.scad>;
use<d3p.scad>;
use<d4p.scad>;
use<d5p.scad>;
use<d6p.scad>;
use<d8p.scad>;
use<d9p.scad>;


partspacing=1; //common distance between parts

//d1
projection(cut = true) //use projection to create 2D DXF files
translate([d1y,d1x/2,0])
rotate([0,0,90])
d1p();

projection(cut = true)
translate([d1y+partspacing+d2y,0,0])
rotate([0,0,90])
d2p();

projection(cut = true)
translate([d1y+partspacing+d2y+partspacing+d2y,0,0])
rotate([0,0,90])
d2p();

projection(cut = true)
translate([d1y+partspacing+d2y+partspacing+d2y+partspacing+d3y,d3x/2,0])
rotate([0,0,90])
d3p();

projection(cut = true)
translate([d1y+partspacing+d2y+partspacing+d2y+partspacing+d3y+partspacing+d3y,d3x/2,0])
rotate([0,0,90])
d3p();

 


To Do

  • get SVnest to work for torch table layout