X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=cable-splice-clamp.scad;h=35d8be143ade70e29e1ca07c08de9a16c46c3124;hp=b1f6876979f7afd2fd6256a722e05a4c2fac545a;hb=d66c83a90d5552cad6773fff5b755f53aa4fd36d;hpb=2e81016db65692fd06fd31351ea8df75c2e51c72 diff --git a/cable-splice-clamp.scad b/cable-splice-clamp.scad index b1f6876..35d8be1 100644 --- a/cable-splice-clamp.scad +++ b/cable-splice-clamp.scad @@ -1,34 +1,111 @@ // -*- C -*- +include + cable_maxdia = 12; cable_mindia = 6; +strap_width = 4 + 0.5; +total_len = 70; + +wallmin = 1.5; + +strap_count = 2; -wallmin = 1; -wall = 2; +strap_wall_h = 1.5; +strap_wall_l = 2.0; -delta_ellipse = 0.5; +delta_ellipse = 0.45; // calculated -outerdia = cable_maxdia / cos(30) + wall*2; delta_shift = 1 - delta_ellipse; +roundoff_rad = cable_maxdia/2 * sqrt(delta_shift) + + cable_mindia/2 * (1-sqrt(delta_shift)); + +outerdia = 2*(roundoff_rad / cos(30) + wallmin); + +delta_shift_gap = (cable_maxdia-cable_mindia) * delta_shift; + +writing_dx = outerdia * sin(30); +writing_dz = total_len / 3; + module CrossSection(plus=0) { difference(){ for (dx = [-plus, 0, plus]) translate([dx, 0]) circle(r= outerdia/2, $fn=6); - scale([cable_maxdia, - cable_maxdia * delta_shift + cable_mindia * delta_ellipse]) - circle(r= 0.5, $fn=30); + intersection(){ + scale([cable_maxdia, + cable_maxdia * delta_shift + cable_mindia * delta_ellipse]) + circle(r= sqrt(0.5) * delta_shift + 0.5 * delta_ellipse, $fn=4); + circle(r= roundoff_rad, $fn=20); + } - square(center=true, [40, (cable_maxdia-cable_mindia) * delta_shift]); + square(center=true, [40, delta_shift_gap]); } } -linear_extrude(height=20) - CrossSection(0); +module CrossSectionDemo(){ ////toplevel + color("blue"){ + translate([0, delta_shift_gap/2, 0]){ + difference(){ + circle(r = cable_maxdia/2, $fn=20); + circle(r = cable_mindia/2, $fn=20); + } + } + } + + linear_extrude(height=20) + CrossSection(0); + + color("red") + linear_extrude(height=1) + CrossSection(2); +} + +module CompleteClamp(){ ////toplevel + difference(){ + union(){ + linear_extrude(height=total_len) + CrossSection(); + + for (i=[0 : strap_count]){ + if (i*2 != strap_count) { + translate([0, 0, + total_len * (i + 0.5) / (strap_count + 1)]) + for (m=[0,1]){ + mirror([0,0,m]) + translate([0,0, strap_width/2]) + linear_extrude(height=strap_wall_l) + CrossSection(strap_wall_h); + } + } + } + } + + for (my = [0,1]) { + mirror([0,my,0]) + translate([-writing_dx/2, + cos(30) * outerdia/2, + (total_len - writing_dz)/2]) + rotate([90,0,0]) + Commitid_BestCount([writing_dx, writing_dz]); + } + } +} + +module HalfPrint(){ ////toplevel + rotate([0,180,0]){ + intersection(){ + rotate([-90,0,-90]) + CompleteClamp(); + translate([-100,-100,0]) cube([1000,200,200]); + } + } +} -linear_extrude(height=1) - CrossSection(2); +//CrossSectionDemo(); +//CompleteClamp(); +HalfPrint();