2014-01-19 23:40:56 +01:00
|
|
|
|
|
|
|
|
//------------------------------------------------------------
|
|
|
|
|
// Parametric pendulum rod coupling to increase frame stiffness
|
|
|
|
|
//
|
|
|
|
|
// http://www.thingiverse.com/wardwouts
|
|
|
|
|
//
|
|
|
|
|
//------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
bar1_diameter = 6.5;
|
|
|
|
|
bar2_diameter = 6.5;
|
|
|
|
|
|
|
|
|
|
M3 = 3.2;
|
|
|
|
|
|
|
|
|
|
thickness = 3;
|
|
|
|
|
spacing = 1;
|
2014-01-26 18:29:23 +01:00
|
|
|
compat = 3; // 3 for compatible with reprappro pieces; 0 a bit smaller
|
2014-01-19 23:40:56 +01:00
|
|
|
|
2014-01-20 15:55:52 +01:00
|
|
|
open=1;
|
|
|
|
|
|
2014-01-19 23:40:56 +01:00
|
|
|
|
|
|
|
|
FN=80*1; // 80 for nice prints; 16 for speed
|
|
|
|
|
|
|
|
|
|
bar1r = bar1_diameter/2;
|
|
|
|
|
bar2r = bar2_diameter/2;
|
|
|
|
|
|
|
|
|
|
height=bar1_diameter+2*thickness;
|
|
|
|
|
|
|
|
|
|
// I really need nut or rivetsize to make bar1mount the right size
|
|
|
|
|
module bar1mount(){
|
2014-01-26 18:29:23 +01:00
|
|
|
translate([-(bar1_diameter+2*thickness+compat),-thickness/2,0]){
|
2014-01-19 23:40:56 +01:00
|
|
|
difference(){
|
2014-01-26 18:29:23 +01:00
|
|
|
cube([bar1_diameter+2*thickness+compat+1,thickness,height]);
|
2014-01-19 23:40:56 +01:00
|
|
|
union(){
|
|
|
|
|
translate([thickness + bar1r,-thickness,thickness+bar1r]){
|
|
|
|
|
rotate([-90,0,0]){
|
|
|
|
|
cylinder(h=(thickness*4), r=bar1r, $fn=FN);
|
|
|
|
|
}
|
2014-01-20 15:55:52 +01:00
|
|
|
if (open ==1){
|
|
|
|
|
translate([-bar1r,0,0]){
|
|
|
|
|
rotate([0,10,0]){
|
|
|
|
|
cube([2*bar1r,thickness*4,30]);
|
|
|
|
|
}
|
2014-01-19 23:40:56 +01:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
module bar2mount(){
|
|
|
|
|
translate([bar2r+thickness,0,0]){
|
|
|
|
|
difference(){
|
|
|
|
|
cylinder(h=height, r=bar2r+thickness, $fn=FN);
|
|
|
|
|
translate([0,0,-height]){
|
|
|
|
|
cylinder(h=height*3, r=bar2r, $fn=FN);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
module screwmount(){
|
|
|
|
|
translate([bar2_diameter+2*thickness-1,-(thickness+spacing/2),0]){
|
|
|
|
|
difference(){
|
|
|
|
|
cube([thickness*2+M3, thickness*2+spacing, height]);
|
|
|
|
|
translate([thickness+M3/2, -thickness, height/2]){
|
|
|
|
|
rotate([-90,0,0]){
|
|
|
|
|
cylinder(h=thickness*5+spacing, r=M3/2, $fn=FN);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
module cutout(){
|
|
|
|
|
translate([bar2r+thickness,-spacing/2,-height]){
|
|
|
|
|
cube([thickness*5+M3*2, spacing, height*3]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
module crossbar_coupling(){
|
|
|
|
|
difference(){
|
|
|
|
|
union(){
|
|
|
|
|
bar1mount();
|
|
|
|
|
bar2mount();
|
|
|
|
|
screwmount();
|
|
|
|
|
}
|
|
|
|
|
cutout();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
crossbar_coupling();
|