X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=scaffold-clamp-common.scad;h=d2640b6a9a08ef3e8b75c0467896634de7a9da05;hp=4e9f36759e267902306214f23f3b5aca9536a674;hb=HEAD;hpb=42a7d031ba69b63bbe7edb8c8a57c0cadd22dfa1 diff --git a/scaffold-clamp-common.scad b/scaffold-clamp-common.scad index 4e9f367..79ed1da 100644 --- a/scaffold-clamp-common.scad +++ b/scaffold-clamp-common.scad @@ -46,6 +46,14 @@ hhook_inside = 40; hhook_th = 4; hhook_l = 40; +// ---------- linear bracket ---------- + +linear_bracket_h = 50; +linear_bracket_l = 100; +linear_bracket_t = 15; +linear_bracket_hole_offset = 20; +linear_bracket_hole_dia = 5 + 1.00; + // ========== defaults ========== pin_head_th = th/2; @@ -179,28 +187,36 @@ module MainPlanB(flatten){ } } -module HalfClampX(flatten=false){ - difference(){ - translate([0,0, min_z]) { - linextr(0, total_z) mirror([0,1]) MainPlanB(); - for (i=[0 : hinge_units-1]) { - translate([0,0, stride_z*i]) - linextr(0, hinge_unit) MainPlanA(flatten); - } +module HalfClampXPositive(flatten=false){ + translate([0,0, min_z]) { + linextr(0, total_z) mirror([0,1]) MainPlanB(); + for (i=[0 : hinge_units-1]) { + translate([0,0, stride_z*i]) + linextr(0, hinge_unit) MainPlanA(flatten); } - for (j=[0:nbolts-1]) { - translate([ bolt_x, 0, min_z + (j + 0.5) * bolt_stride ]) { - translate([0, -tube_dia/2, 0]) - rotate([-90,0,0]) - cylinder(r= bolt_hole_r, h= tube_dia); - translate([0, -flats_y, 0]) - rotate([90,0,0]) - cylinder(r= bolt_flat/2, h= tube_dia/2); - } + } +} + +module HalfClampXNegative(){ + for (j=[0:nbolts-1]) { + translate([ bolt_x, 0, min_z + (j + 0.5) * bolt_stride ]) { + translate([0, -tube_dia/2, 0]) + rotate([-90,0,0]) + cylinder(r= bolt_hole_r, h= tube_dia); + translate([0, -flats_y, 0]) + rotate([90,0,0]) + cylinder(r= bolt_flat/2, h= tube_dia/2); } } } +module HalfClampX(flatten=false){ + difference(){ + HalfClampXPositive(flatten); + HalfClampXNegative(); + } +} + // ---------- vhook ---------- module VHookProfile() { @@ -373,6 +389,34 @@ module HHookPlanDemo(){ HHookHookPlan(); } +// ---------- linear bracket ---------- + +module LinearBracketA(){ ////toplevel + difference(){ + union(){ + HalfClampXPositive(); + mirror([1,0,0]) + linextr_y_xz(-open_gap/2 - linear_bracket_t, -open_gap/2) + rectfromto([0, min_z], + [max_x + linear_bracket_l, min_z + linear_bracket_h]); + } + HalfClampXNegative(); + linextr(-1000,1000) + TubePlan(); + mirror([1,0,0]) + linextr_y_xz(-100,100) { + for (t = [ + [1,1] * linear_bracket_hole_offset, + -[1,1] * linear_bracket_hole_offset + + [linear_bracket_l, linear_bracket_h] + ]) { + translate([ max_x, min_z ] + t) + circle(r= linear_bracket_hole_dia/2); + } + } + } +} + // ---------- misc ---------- module PinSitu(){ ////toplevel