axel_nut_width = 13; // across faces axel_nut_width2 = 14.8; // across corners axel_nut_height = 6.5; axel_diameter = 8; axel_tolerance = 1; axel_center_height = 42 / 2; base_width = 40; // extrusion width base_length = base_width * 1.5; base_height = axel_center_height + axel_diameter * 1.5; module axel_nut_slot() { rotate([90, 0, 0]) union() { translate([axel_nut_width2 / -2, 0, 0]) cube([axel_nut_width2, base_height, axel_nut_height]); linear_extrude(height = axel_nut_height) circle(d = axel_nut_width2, $fn = 6); } } module axel() { translate([base_width / 2, base_length + axel_tolerance, axel_center_height]) rotate([90, 0, 0]) union() { cylinder(base_length + axel_tolerance * 2, d = axel_diameter + axel_tolerance, $fn = 100); translate([0, 0, 0]) rotate([0, 0, 45]) cube([axel_diameter / 2, axel_diameter / 2, base_length + axel_tolerance * 2]); } } module base() { cube([base_width, base_length, base_height]); } bolt_nut_width = 6.9; bolt_nut_width2 = 7.9; bolt_nut_height = 3; bolt_width = 4; bolt_tolerance = .25; module bolt() { translate([0, 0, bolt_width]) cylinder(base_height - bolt_width, d = bolt_width + bolt_tolerance, $fn = 100); translate([0, 0, base_height - bolt_width * 2]) union() { translate([bolt_nut_width / -2, bolt_nut_width2 / -2, 0]) cube([bolt_nut_width, bolt_nut_width2, bolt_nut_height]); cylinder(bolt_width, d1 = bolt_nut_width, d2 = bolt_width + bolt_tolerance, $fn = 100); } } module transporter() { difference() { base(); axel(); translate([base_width / 2, axel_nut_height * 2, base_height / 2]) axel_nut_slot(); translate([base_width / 2, base_length - axel_nut_height, base_height / 2]) axel_nut_slot(); translate([10, base_length / 2, 0]) bolt(); translate([30, base_length / 2, 0]) bolt(); } } transporter();