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=851b5f615f257f8718d1250ce53cdd546b1b7aba;hb=d66c83a90d5552cad6773fff5b755f53aa4fd36d;hpb=9d2fa0d24b2aef087ea465bbd980f3e3fbfa5595 diff --git a/cable-splice-clamp.scad b/cable-splice-clamp.scad index 851b5f6..35d8be1 100644 --- a/cable-splice-clamp.scad +++ b/cable-splice-clamp.scad @@ -1,5 +1,7 @@ // -*- C -*- +include + cable_maxdia = 12; cable_mindia = 6; strap_width = 4 + 0.5; @@ -16,11 +18,18 @@ delta_ellipse = 0.45; // calculated -outerdia = cable_maxdia / cos(30) + wallmin*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]) @@ -31,9 +40,7 @@ module CrossSection(plus=0) { 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= cable_maxdia/2 * sqrt(delta_shift) - + cable_mindia/2 * (1-sqrt(delta_shift)), - $fn=20); + circle(r= roundoff_rad, $fn=20); } square(center=true, [40, delta_shift_gap]); @@ -59,22 +66,46 @@ module CrossSectionDemo(){ ////toplevel } module CompleteClamp(){ ////toplevel - 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); + 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]); } } } -CrossSectionDemo(); +//CrossSectionDemo(); //CompleteClamp(); +HalfPrint();