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

From Open Source Ecology
Jump to navigation Jump to search
 
(45 intermediate revisions by the same user not shown)
Line 2: Line 2:


creating an OpenSCAD replica of v16.09
creating an OpenSCAD replica of v16.09
[[CEB Press v16.09/SCAD Files/Parametric]]


=Frame=
=Frame=
Line 233: Line 236:


==F1==
==F1==
Welds to: F2, F3
Bolts to: F9
Abuts: A2


  <nowiki>
  <nowiki>
Line 271: Line 280:
  </nowiki>
  </nowiki>


==F2==


==F2==
Welds to: F1, F4, F6


  <nowiki>
  <nowiki>
Line 299: Line 309:
  </nowiki>
  </nowiki>


==F3==


==F3==
Welds to: F1
 
Bolts to: F12


  <nowiki>
  <nowiki>
Line 335: Line 348:


==F4==
==F4==
Welds to: F2, F5
Bolts to: F9


  <nowiki>
  <nowiki>
Line 392: Line 409:


==F5==
==F5==
Welds to: F4
Bolts to: A1


  <nowiki>
  <nowiki>
Line 428: Line 449:
} //end module
} //end module
  </nowiki>
  </nowiki>


==F6==
==F6==


some errors of symmetry in source dxf drawing. made some assumptions. need to check fit with interfacing parts.
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


  <nowiki>
  <nowiki>
Line 467: Line 491:
  </nowiki>
  </nowiki>


==F8==


==F8==
Welds to: F9, F10
 
Bolts to: Rub Plate ?


  <nowiki>
  <nowiki>
Line 522: Line 549:
  </nowiki>
  </nowiki>


==F9==
Welds to: F8, F11


==F9==
Bolts to: F1, F4, F6
 
Abuts: A1 ?, A2 ?, F12


  <nowiki>
  <nowiki>
Line 582: Line 614:


==F10==
==F10==
Welds to: F8?


  <nowiki>
  <nowiki>
Line 592: Line 626:


==F11==
==F11==
Welds to: F9


  <nowiki>
  <nowiki>
Line 616: Line 652:
} //end module
} //end module
  </nowiki>
  </nowiki>


=Arms=
=Arms=


==A1==
==A1==
Welds to: A2, A6
Bolts to: A4, A5, F1, H7, H8
Abuts: F9


  <nowiki>
  <nowiki>
Line 692: Line 733:


==A2==
==A2==
Welds to: A1, A6
Bolts to: Guards, Hopper mounts
Abuts: F1 (?), F9


  <nowiki>
  <nowiki>
Line 743: Line 790:


==A3==
==A3==
Welds to: A4, A5


  <nowiki>
  <nowiki>
Line 775: Line 824:


==A4==
==A4==
Welds to: A3
Bolts to: A1


  <nowiki>
  <nowiki>
Line 829: Line 882:
     }
     }
} //end cornerjoint module
} //end cornerjoint module
</nowiki>
==A5==
Welds to: A3
Bolts to: A1
<nowiki>
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
</nowiki>
==A6==
Welds to: A1, A2
<nowiki>
</nowiki>
=Drawer=
==D1==
<nowiki>
d1x=18.5;
d1y=18;
d1z=0.5;
$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
</nowiki>
==D2==
<nowiki>
d2x=18.5;
d2y=6;
d2z=0.5;
$fn=20;
difference(){
cube([d2x,d2y,d2z]);
    //1 cuts numbered clockwise from top left
    translate([0,d2y-0.43,0])
cube([2,0.43,d2z]);
    //2
    translate([5.25,d2y,0])
    insert(0.8125,1.3125,0.125,0.3125,0.125,0.8125);
    //3
        translate([11.75,d2y,0])
    insert(0.8125,2.8125,0.125,0.3125,0.125,2.0625);
            translate([11.75+0.28125,d2y-0.53125,0])
cube([1,0.53125,d2z]);
                translate([11.75+0.78125,d2y-0.65625,0])
cube([0.625,0.25,d2z]);
    //4
    translate([d2x,d2y,0])
    insert(1.3125,2.8125,0.125,0.8125,0.125,1.8125);
    //5
    translate([d2x,0,0])
    insert(1.3125,1.8125,0.125,0.8125,0.125,1.3125);   
    translate([d2x,0,0])
    insert(2.375,1.3125,0.125,1.875,0.125,0.8125);
    //6 ??? error ???
    translate([11.4688,0,0])     
    cube([0.546875,0.78125,d2z]);
    translate([11.4688+0.546875,0,0])     
    cube([0.640575,0.53125,d2z]);
   
    translate([11.3438,0.40625,0])     
    cube([0.25,0.5,d2z]);
    translate([11.885609,0.65625,0])     
    cube([0.255066,0.25,d2z]);
    translate([11.4688+0.546875+0.640575-.125,0.28125,0])     
    cube([0.25,0.375,d2z]);
   
    //X values in dxf dont seem standard? error in model?
    //translate([11.75,0,0])      //insert(0.8125,1.8125,0.125,0.3125,0.125,1.3125); 
    //translate([11.75,0,0])    //insert(0.8125,1.8125,0.125,0.3125,0.125,1.3125);
    //7
   
        translate([4.65625,0,0])
    insert(1.125,1.3125,0.125,0.625,0.125,0.8125);
        translate([5.25,0,0])
    insert(0.8125,2.3125,0.125,0.3125,0.125,1.8125);
        translate([5.25,0.53125,0])
  cube([0.40625,0.375,d2z]);
   
    //8
        insert(1.8125,1.3125,0.125,1.3125,0.125,0.8125); 
} //end difference
module insert(X,Y,standdepthX,standwidthX,standdepthY,standwidthY){
    difference(){
        translate([0,0,d2z/2]){
        #cube([X,Y,d2z],true);
        }
        translate([X/2,0,d2z/2]){
        cube([standdepthY*2,standwidthY,d2z],true);
        }
        translate([-X/2,0,d2z/2]){
        cube([standdepthY*2,standwidthY,d2z],true);
        }
        translate([0,Y/2,d2z/2]){
        cube([standwidthX,standdepthX*2,d2z],true);
        }
        translate([0,-Y/2,d2z/2]){
        cube([standwidthX,standdepthX*2,d2z],true);
        }
    }
} //end insert
</nowiki>
==D3==
<nowiki>
d3x=13;
d3y=5.5;
d3z=0.5;
$fn=20;
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,0.75,0])
        cube([0.5,4,d3z]);
    translate([0.5,0.75,0])
        cube([0.125,0.125,d3z]); 
        translate([0.5,1.125,0])
        cube([0.125,3.25,d3z]); 
        translate([0.5,4.625,0])
        cube([0.125,0.125,d3z]); 
   
    translate([3.5,4.625,0])
    insert(0.75,1,0.09375,0.25); 
    translate([3.5,2.5,0])
    insert(0.75,0.75,0.09375,0.25); 
    translate([3.5,0.125,0])
    insert(0.75,1.5,0.09375,0.25); 
   
        translate([d3x/2,4.625,0])
    insert(0.75,1,0.09375,0.25); 
    translate([d3x/2,2.5,0])
    insert(0.75,0.75,0.09375,0.25); 
    translate([d3x/2,0.125,0])
    insert(0.75,1.5,0.09375,0.25); 
} //end module
module insert(X,Y,standdepth,standwidth){
    difference(){
        translate([0,0,d3z/2]){
        #cube([X,Y,d3z],true);
        }
        translate([X/2,0,d3z/2]){
        cube([standdepth*2,standwidth,d3z],true);
        }
        translate([-X/2,0,d3z/2]){
        cube([standdepth*2,standwidth,d3z],true);
        }
        translate([0,Y/2,d3z/2]){
        cube([standwidth,standdepth*2,d3z],true);
        }
        translate([0,-Y/2,d3z/2]){
        cube([standwidth,standdepth*2,d3z],true);
        }
    }
} //end insert
</nowiki>
==D4==
<nowiki>
d4x=7;
d4y=5.5;
d4z=0.5;
$fn=20;
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,d4y-0.75,0])
    rotate([0,0,270])
cornerjoint(1.46875,0.625,0.125,1.21875,0.125);
   
        translate([0,1.46875+1.25,0])
    rotate([0,0,270])
cornerjoint(1.46875,0.625,0.125,1.21875,0.125);
translate([-0.125,0,0])
cornerjoint(3.375,0.625,0.125,3.125,0.125);
   
} //end module
module cornerjoint(L,H,EndGap,PadL,PadH){
    difference(){
    cube([L,H,d4z]);
        translate([EndGap,H-PadH,0])
        cube([PadL,PadH,d4z]);
        translate([L-EndGap-PadL,H-PadH,0])
        cube([PadL,PadH,d4z]);
    }
} //end cornerjoint module
</nowiki>
==D5==
<nowiki>
d5x=13;
d5y=6;
d5z=0.5;
$fn=20;
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,0.5,0])
        cube([0.5,5,d5z]);
    translate([0.5,0.5,0])
        cube([0.125,0.125,d5z]); 
        translate([0.5,0.875,0])
        cube([0.125,4.25,d5z]); 
        translate([0.5,5.375,0])
        cube([0.125,0.125,d5z]); 
    translate([1,0,0])
        cube([5,0.125,d5z]);
        translate([1,d5y-0.125,0])
        cube([5,0.125,d5z]);
   
    translate([3.5,3,0])
    insert(0.75,0.75,0.09375,0.25); 
        translate([d5x/2,3,0])
    insert(0.75,0.75,0.09375,0.25); 
} //end module
module insert(X,Y,standdepth,standwidth){
    difference(){
        translate([0,0,d5z/2]){
        #cube([X,Y,d5z],true);
        }
        translate([X/2,0,d5z/2]){
        cube([standdepth*2,standwidth,d5z],true);
        }
        translate([-X/2,0,d5z/2]){
        cube([standdepth*2,standwidth,d5z],true);
        }
        translate([0,Y/2,d5z/2]){
        cube([standwidth,standdepth*2,d5z],true);
        }
        translate([0,-Y/2,d5z/2]){
        cube([standwidth,standdepth*2,d5z],true);
        }
    }
} //end insert
</nowiki>
==D6==
<nowiki>
d6x=13;
d6y=6;
d6z=0.5;
$fn=20;
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,5.5,0])
    rotate([0,0,270])
cornerjoint(4.5,0.625,0.125,0.25,0.125);
   
    translate([5,2,0])
    insert(0.75,0.75,0.09375,0.25); 
} //end module
module insert(X,Y,standdepth,standwidth){
    difference(){
        translate([0,0,d6z/2]){
        #cube([X,Y,d6z],true);
        }
        translate([X/2,0,d6z/2]){
        cube([standdepth*2,standwidth,d6z],true);
        }
        translate([-X/2,0,d6z/2]){
        cube([standdepth*2,standwidth,d6z],true);
        }
        translate([0,Y/2,d6z/2]){
        cube([standwidth,standdepth*2,d6z],true);
        }
        translate([0,-Y/2,d6z/2]){
        cube([standwidth,standdepth*2,d6z],true);
        }
    }
} //end insert
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
</nowiki>
==D7==
<nowiki>
d7x=3;
d7y=3;
d7z=0.5;
$fn=20;
difference(){
cube([d7x,d7y,d7z]);
    translate([d7x/2,d7y/2,0])
    cylinder(h = d7z,r = 0.5);
}
</nowiki>
==D8==
<nowiki>
d8x=13;
d8y=5;
d8z=0.5;
$fn=20;
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,4.25,0])
    rotate([0,0,270])
cornerjoint(3.5,0.625,0.125,0.25,0.125);
        translate([1,d8y-0.125,0])
        cube([5.125,0.125,d8z]);
   
    translate([5,3.5,0])
    insert(0.75,0.75,0.09375,0.25); 
} //end module
module insert(X,Y,standdepth,standwidth){
    difference(){
        translate([0,0,d8z/2]){
        #cube([X,Y,d8z],true);
        }
        translate([X/2,0,d8z/2]){
        cube([standdepth*2,standwidth,d8z],true);
        }
        translate([-X/2,0,d8z/2]){
        cube([standdepth*2,standwidth,d8z],true);
        }
        translate([0,Y/2,d8z/2]){
        cube([standwidth,standdepth*2,d8z],true);
        }
        translate([0,-Y/2,d8z/2]){
        cube([standwidth,standdepth*2,d8z],true);
        }
    }
} //end insert
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
</nowiki>
==D9==
<nowiki>
d9x=3.5;
d9y=3.5;
d9z=0.5;
$fn=20;
difference(){
cube([d9x,d9y,d9z]);
    translate([2,0,0])
    singlepeg(0.5,0.5,0.125,0.125,d9x);
        translate([-0.0000001,2,0]) //slight x shift to fix abberation
    rotate([0,0,270])
    singlepeg(0.5,0.5,0.125,0.125,d9x);
   
    translate([2,2,0])
    cylinder(h = d9z,r = 0.5);
} //end difference
module singlepeg(L,W,divotsDepth,divotsW,sidelength){
translate([(W/2),0,0]){
union(){
cube([divotsW,L+divotsDepth,d9z]);
  translate([divotsW,0,0]) 
cube([sidelength,L,d9z]);
}
}
translate([-(W/2),0,0]){
mirror([1,0,0]){
    union(){
cube([divotsW,L+divotsDepth,d9z]);
  translate([divotsW,0,0]) 
cube([sidelength,L,d9z]);
}
}
}
}
</nowiki>
==D10==
<nowiki>
d10x=18;
d10y=3;
d10z=0.5;
$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
</nowiki>
=Grate=
==G1==
<nowiki>
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
</nowiki>
==G2==
<nowiki>
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]);
}
</nowiki>
==G3==
<nowiki>
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
</nowiki>
==G4==
<nowiki>
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
  </nowiki>
  </nowiki>

Latest revision as of 02:04, 31 May 2017

work in progress

creating an OpenSCAD replica of v16.09

CEB Press v16.09/SCAD Files/Parametric


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

d1x=18.5;
d1y=18;
d1z=0.5;
$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

d2x=18.5;
d2y=6;
d2z=0.5;
$fn=20;

difference(){
cube([d2x,d2y,d2z]);
    //1 cuts numbered clockwise from top left
    translate([0,d2y-0.43,0])
cube([2,0.43,d2z]);
    //2
    translate([5.25,d2y,0])
    insert(0.8125,1.3125,0.125,0.3125,0.125,0.8125);
    //3
        translate([11.75,d2y,0])
    insert(0.8125,2.8125,0.125,0.3125,0.125,2.0625);
            translate([11.75+0.28125,d2y-0.53125,0])
cube([1,0.53125,d2z]);
                translate([11.75+0.78125,d2y-0.65625,0])
cube([0.625,0.25,d2z]);
    //4
    translate([d2x,d2y,0])
    insert(1.3125,2.8125,0.125,0.8125,0.125,1.8125);
    //5
    translate([d2x,0,0])
    insert(1.3125,1.8125,0.125,0.8125,0.125,1.3125);    
    translate([d2x,0,0])
    insert(2.375,1.3125,0.125,1.875,0.125,0.8125);
    //6 ??? error ???
    translate([11.4688,0,0])       
    cube([0.546875,0.78125,d2z]);
    translate([11.4688+0.546875,0,0])       
    cube([0.640575,0.53125,d2z]);
    
    translate([11.3438,0.40625,0])       
    cube([0.25,0.5,d2z]);
    translate([11.885609,0.65625,0])       
    cube([0.255066,0.25,d2z]);
    translate([11.4688+0.546875+0.640575-.125,0.28125,0])       
    cube([0.25,0.375,d2z]);
    
    //X values in dxf dont seem standard? error in model?
    //translate([11.75,0,0])       //insert(0.8125,1.8125,0.125,0.3125,0.125,1.3125);  
    //translate([11.75,0,0])    //insert(0.8125,1.8125,0.125,0.3125,0.125,1.3125); 
    //7
    
        translate([4.65625,0,0])
    insert(1.125,1.3125,0.125,0.625,0.125,0.8125);
        translate([5.25,0,0])
    insert(0.8125,2.3125,0.125,0.3125,0.125,1.8125);
        translate([5.25,0.53125,0])
   cube([0.40625,0.375,d2z]);
    
    //8
        insert(1.8125,1.3125,0.125,1.3125,0.125,0.8125);  
} //end difference


module insert(X,Y,standdepthX,standwidthX,standdepthY,standwidthY){
    difference(){
        translate([0,0,d2z/2]){
        #cube([X,Y,d2z],true);
        }
        translate([X/2,0,d2z/2]){
        cube([standdepthY*2,standwidthY,d2z],true);
        }
        translate([-X/2,0,d2z/2]){
        cube([standdepthY*2,standwidthY,d2z],true);
        }
        translate([0,Y/2,d2z/2]){
        cube([standwidthX,standdepthX*2,d2z],true);
        }
        translate([0,-Y/2,d2z/2]){
        cube([standwidthX,standdepthX*2,d2z],true);
        }
    }
} //end insert
 

D3

d3x=13;
d3y=5.5;
d3z=0.5;
$fn=20;

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,0.75,0])
        cube([0.5,4,d3z]);
    translate([0.5,0.75,0])
        cube([0.125,0.125,d3z]);  
        translate([0.5,1.125,0])
        cube([0.125,3.25,d3z]);  
        translate([0.5,4.625,0])
        cube([0.125,0.125,d3z]);  
    
    translate([3.5,4.625,0])
    insert(0.75,1,0.09375,0.25);  
    translate([3.5,2.5,0])
    insert(0.75,0.75,0.09375,0.25);  
    translate([3.5,0.125,0])
    insert(0.75,1.5,0.09375,0.25);  
    
        translate([d3x/2,4.625,0])
    insert(0.75,1,0.09375,0.25);  
    translate([d3x/2,2.5,0])
    insert(0.75,0.75,0.09375,0.25);  
    translate([d3x/2,0.125,0])
    insert(0.75,1.5,0.09375,0.25);  
} //end module
module insert(X,Y,standdepth,standwidth){
    difference(){
        translate([0,0,d3z/2]){
        #cube([X,Y,d3z],true);
        }
        translate([X/2,0,d3z/2]){
        cube([standdepth*2,standwidth,d3z],true);
        }
        translate([-X/2,0,d3z/2]){
        cube([standdepth*2,standwidth,d3z],true);
        }
        translate([0,Y/2,d3z/2]){
        cube([standwidth,standdepth*2,d3z],true);
        }
        translate([0,-Y/2,d3z/2]){
        cube([standwidth,standdepth*2,d3z],true);
        }
    }
} //end insert
 

D4

d4x=7;
d4y=5.5;
d4z=0.5;
$fn=20;

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,d4y-0.75,0])
    rotate([0,0,270])
cornerjoint(1.46875,0.625,0.125,1.21875,0.125);
    
        translate([0,1.46875+1.25,0])
    rotate([0,0,270])
cornerjoint(1.46875,0.625,0.125,1.21875,0.125);

translate([-0.125,0,0])
cornerjoint(3.375,0.625,0.125,3.125,0.125);
    
 

} //end module


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

D5

d5x=13;
d5y=6;
d5z=0.5;
$fn=20;

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,0.5,0])
        cube([0.5,5,d5z]);
    translate([0.5,0.5,0])
        cube([0.125,0.125,d5z]);  
        translate([0.5,0.875,0])
        cube([0.125,4.25,d5z]);  
        translate([0.5,5.375,0])
        cube([0.125,0.125,d5z]);  

    translate([1,0,0])
        cube([5,0.125,d5z]);
        translate([1,d5y-0.125,0])
        cube([5,0.125,d5z]);
    
    translate([3.5,3,0])
    insert(0.75,0.75,0.09375,0.25);  
 
        translate([d5x/2,3,0])
    insert(0.75,0.75,0.09375,0.25);  

} //end module
module insert(X,Y,standdepth,standwidth){
    difference(){
        translate([0,0,d5z/2]){
        #cube([X,Y,d5z],true);
        }
        translate([X/2,0,d5z/2]){
        cube([standdepth*2,standwidth,d5z],true);
        }
        translate([-X/2,0,d5z/2]){
        cube([standdepth*2,standwidth,d5z],true);
        }
        translate([0,Y/2,d5z/2]){
        cube([standwidth,standdepth*2,d5z],true);
        }
        translate([0,-Y/2,d5z/2]){
        cube([standwidth,standdepth*2,d5z],true);
        }
    }
} //end insert
 


D6

d6x=13;
d6y=6;
d6z=0.5;
$fn=20;

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,5.5,0])
    rotate([0,0,270])
cornerjoint(4.5,0.625,0.125,0.25,0.125);


    
    translate([5,2,0])
    insert(0.75,0.75,0.09375,0.25);  
 

} //end module
module insert(X,Y,standdepth,standwidth){
    difference(){
        translate([0,0,d6z/2]){
        #cube([X,Y,d6z],true);
        }
        translate([X/2,0,d6z/2]){
        cube([standdepth*2,standwidth,d6z],true);
        }
        translate([-X/2,0,d6z/2]){
        cube([standdepth*2,standwidth,d6z],true);
        }
        translate([0,Y/2,d6z/2]){
        cube([standwidth,standdepth*2,d6z],true);
        }
        translate([0,-Y/2,d6z/2]){
        cube([standwidth,standdepth*2,d6z],true);
        }
    }
} //end insert

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
 


D7

d7x=3;
d7y=3;
d7z=0.5;
$fn=20;

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

D8

d8x=13;
d8y=5;
d8z=0.5;
$fn=20;

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,4.25,0])
    rotate([0,0,270])
cornerjoint(3.5,0.625,0.125,0.25,0.125);

        translate([1,d8y-0.125,0])
        cube([5.125,0.125,d8z]);
    
    translate([5,3.5,0])
    insert(0.75,0.75,0.09375,0.25);  
 

} //end module
module insert(X,Y,standdepth,standwidth){
    difference(){
        translate([0,0,d8z/2]){
        #cube([X,Y,d8z],true);
        }
        translate([X/2,0,d8z/2]){
        cube([standdepth*2,standwidth,d8z],true);
        }
        translate([-X/2,0,d8z/2]){
        cube([standdepth*2,standwidth,d8z],true);
        }
        translate([0,Y/2,d8z/2]){
        cube([standwidth,standdepth*2,d8z],true);
        }
        translate([0,-Y/2,d8z/2]){
        cube([standwidth,standdepth*2,d8z],true);
        }
    }
} //end insert

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
 

D9

d9x=3.5;
d9y=3.5;
d9z=0.5;
$fn=20;

difference(){
cube([d9x,d9y,d9z]);
    translate([2,0,0])
    singlepeg(0.5,0.5,0.125,0.125,d9x);
        translate([-0.0000001,2,0]) //slight x shift to fix abberation
    rotate([0,0,270])
    singlepeg(0.5,0.5,0.125,0.125,d9x);
    
    translate([2,2,0])
    cylinder(h = d9z,r = 0.5);
} //end difference


module singlepeg(L,W,divotsDepth,divotsW,sidelength){

translate([(W/2),0,0]){
union(){
cube([divotsW,L+divotsDepth,d9z]);
  translate([divotsW,0,0])  
cube([sidelength,L,d9z]);
}
}
translate([-(W/2),0,0]){
mirror([1,0,0]){
    union(){
cube([divotsW,L+divotsDepth,d9z]);
  translate([divotsW,0,0])  
cube([sidelength,L,d9z]);
}
}
}
}
 

D10

d10x=18;
d10y=3;
d10z=0.5;
$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