X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=scaffold-clamp-common.scad;h=c16fbd8bce6dcb593b5101b543908aeb3d8af8f1;hb=3c1da07f2c510b741d2a83025220c7c1b70aab44;hp=843e05c18d25ed398ec3d2e6c791f23b08b2a32a;hpb=df4e53c99a5573eee956a297534c170da2a81808;p=reprap-play.git diff --git a/scaffold-clamp-common.scad b/scaffold-clamp-common.scad index 843e05c..c16fbd8 100644 --- a/scaffold-clamp-common.scad +++ b/scaffold-clamp-common.scad @@ -32,10 +32,11 @@ vhook_th = 14; cleat_frames = 10; cleat_curve_r = 200; -cleat_horn_l = 60; -cleat_horn_d_min = [8, 10]; -cleat_horn_d_max = [10, 12]; +cleat_horn_l = 40; +cleat_horn_d_min = [10, 12]; +cleat_horn_d_max = [12, 14]; cleat_height = 25; +cleat_stem_l = 20; // ---------- hhook ---------- @@ -90,6 +91,14 @@ vhook_y0 = -max(main_r, (tube_dia/2 + vhook_th)); vhook_ctr = vhook_y0 - vhook_inside/2; vhook_outer_dia = vhook_inside + vhook_th*2; +// calculated - cleat + +cleat_horn_tl = cleat_horn_l + cleat_stem_l/2; + +vcleat_dz = max(0, + cleat_horn_tl + cleat_horn_d_min[0]/2 - total_z/2 + ); + // calculated - hhook hhook_outer_dia = hhook_inside + hhook_th*2; @@ -249,15 +258,22 @@ module VHookPlanDemo(){ // ---------- cleat ---------- +function cleat_frame_theta(s) = s * cleat_horn_tl / cleat_curve_r * 360/TAU; +function cleat_frame_z(s) = cleat_curve_r * (1 - cos(cleat_frame_theta(s))); +function cleat_frame_x(s) = cleat_curve_r * sin(cleat_frame_theta(s)); +function cleat_frame_r(s) = ( cleat_horn_d_min * s + + cleat_horn_d_max * (1-s) ) * 0.5; + +module CleatFrameSphere(r) { + scale([1, r[1]/r[0], 1]) + sphere(r= r[0]); +} + module CleatFrame(s) { - r = ( cleat_horn_d_min * s + - cleat_horn_d_max * (1-s) ) * 0.5; - translate([0,0, cleat_curve_r]) - rotate( s * cleat_horn_l / cleat_curve_r * 360/TAU * [0,1,0] ) - translate([0,0, -cleat_curve_r]) + r = cleat_frame_r(s); + translate([cleat_frame_x(s), 0, cleat_frame_z(s)]) rotate([0, 90, 0]) - scale([1, r[1]/r[0]]) - sphere(r= r[0]); + CleatFrameSphere(r); } @@ -265,26 +281,55 @@ module CleatHorn(){ for (si=[0 : cleat_frames-2]) { s0 = si / (cleat_frames-1); s1 = (si+1) / (cleat_frames-1); - //hull(){ + hull(){ CleatFrame(s0); CleatFrame(s1); - //} + } } } -module VCleatA(){ ////toplevel - %DummyA(); +module CleatBase(){ + frames = cleat_frames/2; + se = cleat_stem_l/2 / cleat_horn_tl; + r = cleat_frame_r(se); + + hull(){ + for (s = [-se, se]) { + for (z= [-(cleat_height + tube_dia/2), + cleat_frame_z(s)]) { + translate([cleat_frame_x(s), 0, z]) + linear_extrude(height=0.1) + scale([1, r[1]/r[0]]) + circle(r=r[0]); + } + } + } +} - translate([0, -(main_r + cleat_height), 0]) { - rotate([0, -90, 90]) { - for (m=[0,1]) { - mirror([m,0,0]) - CleatHorn(); +module VCleat(){ + translate([0,0, vcleat_dz]){ + difference(){ + translate([0, -(main_r + cleat_height), 0]) { + rotate([0, -90, 90]) { + CleatBase(); + for (m=[0,1]) { + mirror([m,0,0]) { + CleatHorn(); + } + } + } } + linextr(-cleat_stem_l, +cleat_stem_l) + circle(r = tube_dia/2 + 0.1); } } } +module VCleatA(){ ////toplevel + DummyA(); + VCleat(); +} + // ---------- hhook ---------- module HHookHookPlan(){ @@ -378,5 +423,12 @@ module Demo(){ ////toplevel rotate([0,0,180]) PinSitu(); } +module DemoPair(){ ////toplevel + color("red") rotate([180,0,0]) DemoA(); + color("blue") DemoA(); + color("orange") translate([hinge_x, 0, min_z - hinge_z_gap]) + rotate([0,0,180]) PinSitu(); +} + //PlanDemo(); //HalfClamp();