X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=cable-splice-clamp.scad;h=35d8be143ade70e29e1ca07c08de9a16c46c3124;hb=285989a8f48e8df71883a09dcaa7173302fefe5f;hp=cd310bf862fca12885f956e2e70ca35bfc13fadd;hpb=2898a43cc8a80c7aa5a79e36a502ffc4c34511a9;p=reprap-play.git diff --git a/cable-splice-clamp.scad b/cable-splice-clamp.scad index cd310bf..35d8be1 100644 --- a/cable-splice-clamp.scad +++ b/cable-splice-clamp.scad @@ -1,29 +1,47 @@ // -*- 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.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= sqrt(0.5) * delta_shift + 0.5 * delta_ellipse, $fn=4); + 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, delta_shift_gap]); } @@ -47,4 +65,47 @@ module CrossSectionDemo(){ ////toplevel CrossSection(2); } -CrossSectionDemo(); +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]); + } + } +} + +//CrossSectionDemo(); +//CompleteClamp(); +HalfPrint();