//Reference sizes m8_diameter = 8.2; m3_diameter = 3.3; //Bar clamp dimensions outer_diameter = m8_diameter/2+3.3; //rod clamp outside diameter opening_size = m8_diameter-1; //size of cutout for threaded rod //Microswitch mount dimensions screw_spacing_long = 22.2; //measured from D4 microswitch screw_spacing_short = 10.3; //measured from D4 microswitch plate_length = 28; //measured from D4 microswitch, must be greater than screw_spacing_long plate_width = 16; //measured from D4 microswitch, must be greater than screw_spacing_short plate_thick = 4; module endstop_flush(){ union(){ difference(){ union(){ //main body of rod clamp translate([0, 0, 0]) cylinder(h =plate_width, r = outer_diameter, $fn = 20); //switch mount plate translate([m8_diameter/2-plate_thick,0,plate_width/2]) rotate([0,90,0]) switchplate(); } //hole for threaded rod translate([0, 0, -0.01]) cylinder(h =plate_width+1, r = m8_diameter/2, $fn = 18); //cutout for rod entry translate([0, -opening_size/2, -0.01]) cube([18,opening_size,plate_width+1.1]); //remove rest of rod clamp cylinder translate([m8_diameter/2-0.01,-plate_length/2,-0.01]) cube([plate_thick, plate_length+1, plate_width+1]); } } } module switchplate(){ difference(){ //mount plate translate([-plate_width/2, -plate_length/2,0]) cube ([plate_width,plate_length,plate_thick]); //mounting holes translate([-screw_spacing_short/2, -screw_spacing_long/2, -0.1]) cylinder(h =plate_thick+1, r = m3_diameter/2, $fn = 10); translate([screw_spacing_short/2, -screw_spacing_long/2, -0.1]) cylinder(h =plate_thick+1, r = m3_diameter/2, $fn = 10); translate([-screw_spacing_short/2, screw_spacing_long/2, -0.1]) cylinder(h =plate_thick+1, r = m3_diameter/2, $fn = 10); translate([screw_spacing_short/2, screw_spacing_long/2, -0.1]) cylinder(h =plate_thick+1, r = m3_diameter/2, $fn = 10); } } endstop_flush();