diff --git a/tests/rails.scad b/tests/rails.scad index f91b950..2a72118 100644 --- a/tests/rails.scad +++ b/tests/rails.scad @@ -34,7 +34,7 @@ module rails() nut = screw_nut(screw); washer = screw_washer(screw); - rail_assembly(rail, length, rail_travel(rail, length) / 2); + rail_assembly(rail, length, rail_travel(rail, length) / 2, $i<2 ? grey20 : "green", $i<2 ? grey20 : "red"); rail_screws(rail, length, sheet + nut_thickness(nut, true) + washer_thickness(washer)); diff --git a/vitamins/rail.scad b/vitamins/rail.scad index de75c28..db42e4a 100644 --- a/vitamins/rail.scad +++ b/vitamins/rail.scad @@ -65,7 +65,7 @@ module carriage_hole_positions(type) { //! Position children over screw holes children(); } -module carriage(type, rail) { //! Draw the specified carriage +module carriage(type, rail, end_color = grey20, wiper_color = grey20) { //! Draw the specified carriage total_l = carriage_length(type); block_l = carriage_block_length(type); block_w = carriage_width(type); @@ -100,19 +100,30 @@ module carriage(type, rail) { //! Draw the specified carriage carriage_hole_positions(type) circle(screw_pilot_hole(screw)); } - } - color(grey20) - for(end = [-1, 1]) - translate([end * (block_l / 2 + end_l / 2), 0]) - rotate([90, 0, 90]) - linear_extrude(height = end_l, center = true) - difference() { - translate([-end_w / 2, carriage_clearance(type)]) - square([end_w, end_h]); - cutout(); - } + module carriage_end(type, end_w, end_h, end_l) { + wiper_length = 0.5; + color(wiper_color) translate_z(-end_l/2) linear_extrude(wiper_length) + difference() { + translate([-end_w/2, carriage_clearance(type)]) + square([end_w, end_h]); + cutout(); + } + color(end_color) translate_z(wiper_length-end_l/2) linear_extrude(end_l-wiper_length) + difference() { + translate([-end_w/2, carriage_clearance(type)]) + square([end_w, end_h]); + cutout(); + } + } + + translate([-(block_l+end_l)/2,0,0]) + rotate([90, 0, 90]) + carriage_end(type, end_w, end_h, end_l); + translate([(block_l+end_l)/2,0,0]) + rotate([90, 0, -90]) + carriage_end(type, end_w, end_h, end_l); } module rail(type, length) { //! Draw the specified rail @@ -139,11 +150,11 @@ module rail(type, length) { //! Draw the specified rail } } -module rail_assembly(type, length, pos) { //! Rail and carriage assembly +module rail_assembly(type, length, pos, carriage_end_color = grey20, carriage_wiper_color = grey20) { //! Rail and carriage assembly rail(type, length); translate([pos, 0]) - carriage(rail_carriage(type), type); + carriage(rail_carriage(type), type, carriage_end_color, carriage_wiper_color); }