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=f71c848756b259723e6fcb078acf912114ec9a5f;hp=dd376d6571b5cfec90025f72301fc7d079f3e5ae;hb=f1824fce4c0b4420e0ba377d8d8a4e43e42e4a7d;hpb=bbef35cb314c489e0765fcc0233a3dd647690cb2 diff --git a/cable-splice-clamp.scad b/cable-splice-clamp.scad index dd376d6..f71c848 100644 --- a/cable-splice-clamp.scad +++ b/cable-splice-clamp.scad @@ -2,7 +2,7 @@ include -rnom = 9; +rnom = 3.5 / 2; // alpha is slope angle, which is half of inner concave angle that // wire sits in @@ -13,9 +13,15 @@ alpha = 40; // degrees mu = 1/4; // wall thickness, and base width as fraction of cable size -wall_r = 1.5 / 6.5; +wall_r = 2.5 / 6.5; base_r = 0.75; +total_len = 60; + +strap_width = 3.0 + 0.5; + +strap_count = 4; + // for cross-section calculations: // // origin O is at intersection of straight line segments forming walls @@ -54,25 +60,33 @@ y_B_r = -dy_OB_r; x_T_r = sina; y_T_r = -tana * sina; -top_r = wall_r - (d_OC_r - 1); - wall_x_r = wall_r / tan(90-alpha); -echo(r0,r1, "ratio",r1/r0); +top = wall_r * r1 - (d_OC_r - 1) * r0; +basew = base_r * rnom; -module CrossSection(plus=0) { +echo("dias", r0*2, r1*2, "ratio",r1/r0); + +module CrossSectionHalf(plus=0) { difference(){ polygon([[-0.1, y_T_r * r0], [x_T_r * r0, y_T_r * r0], [x_B_r * r1, y_B_r * r1], [x_B_r * r1 + wall_x_r * rnom + plus, y_B_r * r1], - [base_r * rnom + plus, top_r * rnom], - [-0.1, top_r * rnom]]); + [basew + plus, top], + [-0.1, top]]); translate([0, -d_OC_r * r0]) circle(r = r0); } } +module CrossSection(plus=0) { + for (m=[0,1]) { + mirror([m,0]) + CrossSectionHalf(plus); + } +} + module CrossSectionDemo(){ ////toplevel color("black") CrossSection(2); CrossSection(); @@ -82,5 +96,43 @@ module CrossSectionDemo(){ ////toplevel } } +strap_wall_h = 1.5; +strap_wall_l = 2.0; + +writing_dx = total_len / 3; +writing_dy = basew*2; + +module HalfClamp(){ ////toplevel + difference(){ + rotate([90,0,0])rotate([0,90,0]){ + 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); + } + } + } + } + + translate([0, -basew, top]) + Commitid_BestCount([writing_dx, writing_dy]); + } +} + +module HalfClampPrint(){ ////toplevel + rotate([180,0,0]) + HalfClamp(); +} + //CrossSection(); -CrossSectionDemo(); +//CrossSectionDemo(); +//HalfClamp(); +HalfClampPrint();