From 0ada0a6626d16a977698cc786e49afd01eb6385f Mon Sep 17 00:00:00 2001 From: Przemek Grondek Date: Thu, 6 Jan 2022 15:04:58 +0100 Subject: [PATCH] Add support X carriage --- X Carriage/X Carriage.scad | 35 +++++++++++++++++++---------------- X Carriage/X Carriage.stl | Bin 197484 -> 215884 bytes lib/common.scad | 10 +++++----- lib/examples.scad | 6 ++++++ 4 files changed, 30 insertions(+), 21 deletions(-) create mode 100644 lib/examples.scad diff --git a/X Carriage/X Carriage.scad b/X Carriage/X Carriage.scad index 23a4342..355fc3e 100644 --- a/X Carriage/X Carriage.scad +++ b/X Carriage/X Carriage.scad @@ -1,4 +1,5 @@ include <../lib/common.scad>; +include <../lib/examples.scad>; thickness = 6; width = 65; @@ -20,6 +21,7 @@ module base() { small_holes(); belt_holes(); endstop_holes(); + wheel_clerance(); } } @@ -33,6 +35,17 @@ module big_holes() { } +module wheel_clerance() { + diameter = 30; + diameter2 = 7; + translate([diameter2 / 2 + 5, diameter2 / 2 + 7, thickness]) + cylinder(d = diameter, h = thickness * 10); + + translate([width - (5 + diameter2 / 2), diameter2 / 2 + 7, thickness]) + cylinder(d = diameter, h = thickness * 10); + +} + module small_holes() { diameter = 5; @@ -57,21 +70,25 @@ module belt_holes() { module mount() { translate([(width - 35) / 2, 0]) { + rotate([90, 0, 0]) { difference() { union() { block_with_fillet(35, 30, thickness, 10); cube([35, 10, thickness]); + rotate([180, 0, 0]) + translate([0, - 20, 0]) + prism(35, 20, 23); } union() { translate([2.5 + 2, 20, 10]) rotate([180, 0, 0]) - screw_mount(length = 10, nut_size = 6, screw_size = 3, nut = "hexagon"); + screw_mount(length = 10, nut_size = 6, screw_size = 3, nut = "hexagon", nut_height = 30); translate([2.5 + 25, 20, 10]) rotate([180, 0, 0]) - screw_mount(length = 10, nut_size = 6, screw_size = 3, nut = "hexagon"); + screw_mount(length = 10, nut_size = 6, screw_size = 3, nut = "hexagon", nut_height = 30); } } } @@ -79,20 +96,6 @@ module mount() { } } -module screw_mount(length, nut_size, screw_size, nut = "none") { - translate([screw_size / 2, screw_size / 2, 0]) { - cylinder(d = screw_size + 3, h = screw_size); - cylinder(d = screw_size, h = length); - if (nut == "hexagon") { - translate([0, 0, length - 3]) - cylinder(d = nut_size, h = 3, $fn = 6); - } else if (nut == "square") { - translate([- nut_size / 2, - nut_size / 2, length - 3]) - cube([nut_size, nut_size, 3]); - } - } -} - module endstop_holes() { diameter = 2; translate([width - (diameter / 2 + 3), diameter / 2 + 16, - 0.1]) diff --git a/X Carriage/X Carriage.stl b/X Carriage/X Carriage.stl index f4937fb01bec0218f48019472790ab1456317c58..e2a52533cd443cad08b5f724a87d813b7e4be3ad 100644 GIT binary patch delta 28622 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 delta 13384 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