X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=scaffold-clamp.scad;h=19c86ef6af133ee3a30fc001dff2e69ca6f75faf;hb=8578b172793bc3ee9c9b9b1a2f1ecf46b911c9d8;hp=ef1fdd855017e8ba1f8f7d4833af4cef3b07a5cb;hpb=d0959efd1fd145dcb05f69c1592e5d162a0c3903;p=reprap-play.git diff --git a/scaffold-clamp.scad b/scaffold-clamp.scad index ef1fdd8..19c86ef 100644 --- a/scaffold-clamp.scad +++ b/scaffold-clamp.scad @@ -8,13 +8,17 @@ th = 7; pin_gap = 1.5; // around -smooth_r = 10; +smooth_r = 15; bolt_dia = 5 + 0.75; bolt_flat = 10 + 1; open_gap = 10; +hinge_unit = 10; +hinge_units = 4; +hinge_z_gap = 1; + // calculated pin_dia = th; @@ -25,15 +29,20 @@ hinge_gap = pin_gap; hinge_o_r = 0.5 * hole_dia + th; hinge_x = -0.5 * tube_dia - hinge_o_r; -bolt_x = 0.5 * tube_dia + bolt_flat * 0.5; +bolt_x = 0.5 * tube_dia + th + bolt_flat * 0.5; max_x = bolt_x + max(0.5 + bolt_dia + th, 0.5 * bolt_flat/2); flats_y = open_gap/2 + th; +stride_z = hinge_unit*2 + hinge_z_gap*2; +total_z = hinge_units * stride_z - hinge_z_gap; + +pin_flatten = pin_dia/2 * (1 - cos(45)); + $fa = 3; $fs = 0.1; -module MainPlan() { +module MainPlan(flatten=false) { difference(){ offset(r=-smooth_r) offset(delta=smooth_r) union(){ @@ -45,7 +54,14 @@ module MainPlan() { circle(r = tube_dia/2); rectfromto([0, -open_gap/2], [max_x+1, +open_gap/2]); - translate([hinge_x, 0]) circle(r= hole_dia/2); + translate([hinge_x, 0]) { + intersection(){ + circle(r= hole_dia/2); + if (flatten) + translate([ pin_flatten, 0 ]) + square(center=true, [hole_dia, hole_dia + 1]); + } + } } } @@ -55,21 +71,46 @@ module Portion(d=0) { [max_x+10, -(tube_dia/2+th+10)]); } -module MainPlanA(){ +module MainPlanA(flatten){ intersection(){ - MainPlan(); + MainPlan(flatten); Portion(0); } } -module MainPlanB(){ +module MainPlanB(flatten){ difference(){ - MainPlan(); + MainPlan(flatten); Portion(hinge_gap); } } -module PlanDemo(){ +module HalfClampX(flatten=false){ + difference(){ + translate([0,0, -total_z/2]) { + 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 (dz=[-1,+1]) { + translate([ bolt_x, 0, dz * total_z/4 ]) { + translate([0, -tube_dia/2, 0]) + rotate([-90,0,0]) + cylinder(r= bolt_dia/2, h= tube_dia); + translate([0, -flats_y, 0]) + rotate([90,0,0]) + cylinder(r= bolt_flat/2, h= tube_dia/2); + } + } + } +} + +module HalfClampA() { HalfClampX(false); } +module HalfClampB() { rotate([180,0,0]) HalfClampX(true); } + +module PlanDemo(){ ////toplevel MainPlan(); translate([0,0,-4]) color("red") Portion(1); translate([0,0,-2]) color("grey") Portion(0); @@ -81,4 +122,18 @@ module PlanDemo(){ // translate([max_x - hinge_x + 20, 0]) color("blue") MainPlanA(); } -PlanDemo(); +module GeneralB(){ ////toplevel + HalfClampX(true); +} + +module DummyB(){ ////toplevel + HalfClampX(); +} + +module Demo(){ ////toplevel + color("red") HalfClampA(); + color("blue") HalfClampB(); +} + +//PlanDemo(); +//HalfClamp();