From ed2e085aa9f3b6bd7e6a873f9abadf944a89a19b Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Fri, 22 Jan 2021 22:32:17 +0000 Subject: [PATCH] scaffold-clamp-cleat: wip Signed-off-by: Ian Jackson --- scaffold-clamp-common.scad | 42 +++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/scaffold-clamp-common.scad b/scaffold-clamp-common.scad index cc5bad1..77f1388 100644 --- a/scaffold-clamp-common.scad +++ b/scaffold-clamp-common.scad @@ -36,6 +36,7 @@ cleat_horn_l = 60; cleat_horn_d_min = [8, 10]; cleat_horn_d_max = [10, 12]; cleat_height = 25; +cleat_stem_l = 20; // ---------- hhook ---------- @@ -255,12 +256,16 @@ 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_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); } @@ -275,14 +280,45 @@ module CleatHorn(){ } } +module CleatBase(){ + frames = cleat_frames/2; + se = cleat_stem_l/2 / cleat_horn_l; + r = cleat_frame_r(se); + + for (si=[0: frames-2]) { + s0 = se * si / (frames-1); + s1 = se * (si+1) / (frames-1); + hull(){ + for (z= [-(cleat_height + tube_dia/2), + cleat_frame_z(se)]) { + translate([cleat_frame_x(se), 0, z]) + CleatFrameSphere(r); + } + } + } + + for (si=[0 : cleat_frames-2]) { + s0 = si / (cleat_frames-1); + s1 = (si+1) / (cleat_frames-1); + //hull(){ + CleatFrame(s0); + CleatFrame(s1); + //} + } +} + module VCleatA(){ ////toplevel %DummyA(); translate([0, -(main_r + cleat_height), 0]) { rotate([0, -90, 90]) { for (m=[0,1]) { - mirror([m,0,0]) + mirror([m,0,0]) { CleatHorn(); + } + mirror([m,0,0]) { + CleatBase(); + } } } } -- 2.30.2