From 384480e8240e00a5a0519d7eb4006a72adba2c15 Mon Sep 17 00:00:00 2001 From: Dejvino Date: Sun, 17 Jan 2021 16:49:08 +0100 Subject: [PATCH] Fixed linked strap parametrization --- strap_link.scad | 40 +++++++++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/strap_link.scad b/strap_link.scad index 3d60eb7..e32cb94 100644 --- a/strap_link.scad +++ b/strap_link.scad @@ -1,14 +1,24 @@ -links_count=3; +links_count=15; //validation=1; VALIDATE_INTERSECTION=1; +//xray=1; + use use include -function get_link_segment_size() = [10, 20, 5]; +function get_link_segment_size() = [15, 30, 5]; function get_link_pin_diameter() = 2; +function get_link_socket_slack() = [1, 4, 1]; + +echo("==============================="); +echo(str("Strap length: ", (links_count * get_link_segment_size().x), " mm")); +echo("==============================="); + +assert(get_link_segment_size().x >= 10, "Link segment is too short."); +assert(get_link_segment_size().z >= (get_link_pin_diameter() + get_link_socket_slack().z + 1), "Link segment is too thin."); module link() { segment_size=get_link_segment_size(); @@ -18,21 +28,26 @@ module link() { back(h/2) xrot(90) cylinder(h=h, d=d, $fn=$preview ? 10 : 30); } module pin_socket_area() { - h=segment_size.y-3; + h=segment_size.y-get_link_socket_slack().y; d=segment_size.z; back(h/2) xrot(90) cylinder(h=h, d=d, $fn=$preview ? 10 : 30); } module pin_socket() { difference() { pin_socket_area(); - scale(1.1) pin(); + scaleup = [ + ((get_link_pin_diameter() + get_link_socket_slack().x) / get_link_pin_diameter()), + ((get_link_pin_diameter() + get_link_socket_slack().y) / get_link_pin_diameter()), + ((get_link_pin_diameter() + get_link_socket_slack().z) / get_link_pin_diameter()) + ]; + scale(scaleup) pin(); } } module joiner() { gap=2; + arm_size=[8, 3, segment_size.z]; module arm() { - arm_size=[segment_size.x*0.9, 2, segment_size.z]; - fwd(segment_size.y/2) right(segment_size.x/4) cuboid(arm_size, fillet=1, edges=EDGES_FRONT + EDGES_Y_ALL); + fwd(segment_size.y/2 + arm_size.y/2 - 1) right(arm_size.x/2 - 1) cuboid(arm_size, fillet=1, edges=EDGES_FRONT + EDGES_Y_ALL); } module armFront() { arm(); @@ -41,15 +56,15 @@ module link() { scale([1, -1, 1]) arm(); } module armJoiner() { - joiner_size=[4, segment_size.y, segment_size.z]; - right(segment_size.x/2) cuboid(joiner_size, fillet=1, edges=EDGES_Z_ALL + EDGES_BOTTOM); + joiner_size=[arm_size.x*0.48, segment_size.y, segment_size.z]; + right(joiner_size.x + 1) cuboid(joiner_size, fillet=1, edges=EDGES_Z_ALL + EDGES_BOTTOM); } module socketJoiner() { joiner_size=[segment_size.x-4, segment_size.y-4, segment_size.z]; difference() { - right(segment_size.x/2 + 2.5) cuboid(joiner_size, fillet=1, edges=EDGES_Z_ALL + EDGES_BOTTOM); + right(joiner_size.x/2 + 4.5) cuboid(joiner_size, fillet=1, edges=EDGES_Z_ALL + EDGES_BOTTOM); right(segment_size.x) scale([1, 2, 1]) pin_socket_area(); } } @@ -76,6 +91,13 @@ if (!is_undef(validation)) { right(2*segment_size.x) link(); } } +} else if (!is_undef(xray)) { + intersection() { + cube([1000, 1000, 1000]); + for (i = [0:links_count-1]) { + right(i*segment_size.x) link(); + } + } } else { for (i = [0:links_count-1]) { right(i*segment_size.x) link();