$fn=60; // Physical dimensions EXTRUSION_WIDTH = 40; EXTRUSION_HEIGHT = 40; EXTRUSION_GROOVE_WIDTH = 8.2; MOTOR_WIDTH = 43.0; MOTOR_HEIGHT = 43.0; MOTOR_DEPTH = 40.0; MOTOR_CORNER = 4.5; MOTOR_SHAFT_HOLE_DIAMETER = 24; BOLT_HOLE_DIAMETER = 6.4; // M6 BOLT_HOLE_HEAD_DIAMETER = 11; // M6 MGN_RAIL_WR = 12; MGN_RAIL_HR = 8; F688ZZ_D = 16; // Parameters CORNER_SIZE = 5.0; // Part corner size MOTOR_TO_BORDER_CLEARANCE = 5.0; CHAMFER_SIZE = 1; EXTRUSION_BORDER_CLEARANCE = 4; // Distance between extrusion and part borders EXTRUSION_GROOVE_SLIDE_CLEARANCE = 0.2; // Slide to groove clearance EXTRUSION_GROOVE_SLIDE_DEPTH = 2; // Slide depth // Variables total_width = EXTRUSION_WIDTH - EXTRUSION_BORDER_CLEARANCE + MOTOR_WIDTH + MOTOR_TO_BORDER_CLEARANCE; total_height = EXTRUSION_HEIGHT - EXTRUSION_BORDER_CLEARANCE + MOTOR_HEIGHT + MOTOR_TO_BORDER_CLEARANCE; //minkowski() { linear_extrude(8 - CHAMFER_SIZE) difference() { hull() { square([EXTRUSION_WIDTH + 3, EXTRUSION_HEIGHT + 3]); translate([EXTRUSION_WIDTH + MOTOR_WIDTH / 2, EXTRUSION_HEIGHT + MOTOR_HEIGHT / 2]) circle(F688ZZ_D/2 + MOTOR_TO_BORDER_CLEARANCE); } translate([-1, -1]) square([EXTRUSION_WIDTH + 1, EXTRUSION_HEIGHT +1]); translate([EXTRUSION_WIDTH + MOTOR_WIDTH / 2, EXTRUSION_HEIGHT + MOTOR_HEIGHT / 2]) circle(F688ZZ_D/2); translate([EXTRUSION_WIDTH / 2 - MGN_RAIL_WR / 2, EXTRUSION_HEIGHT - 1]) square([MGN_RAIL_WR, MGN_RAIL_HR + 1]); square([EXTRUSION_WIDTH / 2 - MGN_RAIL_WR / 2, EXTRUSION_HEIGHT + MGN_RAIL_HR + 10]); square([EXTRUSION_WIDTH + 10, EXTRUSION_BORDER_CLEARANCE]); } translate([CHAMFER_SIZE, CHAMFER_SIZE]) cylinder(CHAMFER_SIZE,CHAMFER_SIZE,0); }