diff --git a/src/common.scad b/src/common.scad index a80f0e7..2f78271 100644 --- a/src/common.scad +++ b/src/common.scad @@ -9,5 +9,14 @@ module cubi(s, fillet=0, edges=EDGES_ALL) { } } +module screwhole(d, h, head=true) { + $fn=$preview ? 5 : 20; + translate([0, 0, h]) cylinder(d=d*1.5, h=d*0.5); + split=h*0.5; + translate([0, 0, split]) cylinder(d=d, h=(h-split)); + cylinder(d2=d, d1=d*0.1, h=split); + cylinder(d2=d*0.6, d1=d*0.6, h=split/2); +} + function vec_sum(v, w) = [v.x + w.x, v.y + w.y, v.z + w.z]; diff --git a/src/strap.scad b/src/strap.scad index 6423e3c..4c02fd0 100644 --- a/src/strap.scad +++ b/src/strap.scad @@ -1,14 +1,22 @@ links_count=3; // [1..20] include_terminal=true; // [true,false] +include_screwhole=true; // [true,false] +clip_screwhole=2; + +//export=302;//MODEL_CLIP_A; +//export=303;//MODEL_CLIP_B; include use use include +use use +use use +use if (is_model_strict(MODEL_LINKS)) { echo("==============================="); @@ -81,7 +89,13 @@ module clip() { slack=groove?0.2:0; joiner_size=[entry_size.x-6+slack, entry_size.y-6+slack, entry_size.z-3+slack]; joiner_pos=[entry_pos.x, entry_pos.y, entry_pos.z - entry_size.z/2 + joiner_size.z/2]; - translate(joiner_pos) cube(joiner_size, center=true); + difference() { + translate(joiner_pos) cube(joiner_size, center=true); + screw_cutout(); + } + } + module screw_cutout() { + if (include_screwhole) down(clip_size.z/2) screwhole(d=clip_screwhole, h=clip_size.z); } module model() { @@ -93,6 +107,7 @@ module clip() { } right(clip_size.x/2) socket_cutout(); left(clip_size.x/2) socket_cutout(); + screw_cutout(); } }