X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=topeak-seatstay-lock.scad;h=d00f0d45fda90b5fb6bf2272eebb3b33c469195e;hb=736b9344219efd9875a47bb859160434282bad8a;hp=efa3d13cdd10c213a67c033254e00736c12b9f68;hpb=2a45007e093f5e240868c0102e6e288fd5b87daa;p=reprap-play.git diff --git a/topeak-seatstay-lock.scad b/topeak-seatstay-lock.scad index efa3d13..d00f0d4 100644 --- a/topeak-seatstay-lock.scad +++ b/topeak-seatstay-lock.scad @@ -1,11 +1,35 @@ // -*- C -*- -pump_dia = 27; -seatstay_mindia = 14; -seatstay_maxdia = 19; +pump_dia = 27 + 0.5; +seatstay_mindia = 14 + 0.5; +seatstay_maxdia = 19 + 0.5; pump_seatstay_gap = 12.3; pump_seatstay_delta = 0.1; -holes_rotation = 7; + +body_thick_x = 5; +body_thick_y = 5; + +pin_workdepth = 16; +pin_width = 11 + 0.5; +pin_thick = 3 + 0.6; +pin_base = 25; + +lock_manouvre_thick = 3.5 + 0.5; +lock_manouvre_len = 18; +lock_hang_width = 17.5; +lock_manouvre_len_smaller = 13; + +body_depth_each = 5; +clatter_gap = 0.5; + +// fudgeish + +holes_rotation = 9; +pin_offset = 7; + +// computed + +body_depth = pin_width + body_depth_each*2; module Holes(){ translate([0, -pump_dia/2]); @@ -24,4 +48,75 @@ module Holes(){ } } -Holes(); +module BodyPlan(){ + hull(){ + for(x=[-1,1]) for(y=[-1,1]) + translate([x*body_thick_x, y*body_thick_y]) + Holes(); + } +} + +module Body(){ + translate([0,0,-body_depth/2]) + linear_extrude(height=body_depth){ + difference(){ + BodyPlan(); + Holes(); + } + } +} + +module Pin(){ + translate([0, pin_offset, 0]) rotate([0,90,0]){ + translate([0, 0, -pin_thick/2]) + linear_extrude(height=pin_thick){ + translate([-pin_base/2, 0]) square([pin_base, 50]); + translate([-pin_width/2, -100]) square([pin_width, 101]); + } + hull() for (d=[0,10]) { + translate([d*2,-d,0]) + translate([-lock_manouvre_thick/2, + -pin_workdepth-100, + -lock_manouvre_len_smaller]) + cube([lock_manouvre_thick, 100, + lock_manouvre_len + lock_manouvre_len_smaller]); + } + translate([-lock_manouvre_thick/2, -pin_workdepth-50, + -lock_hang_width/2]) + cube([50, 50, lock_hang_width]); + } +} + +module Demo(){ + %Body(); + Pin(); +} + +module All(){ + difference(){ + Body(); + Pin(); + } +} + +module Piece(pc){ + translate([0,-pc*4,0]) + intersection(){ + mirror([0,pc,0]) + translate([-200,clatter_gap/2,-200]) cube([400,400,400]); + All(); + } +} + +module PiecesPrint(){ + rotate([0,180,0]) + for (pc=[0,1]){ + Piece(pc); + } +} + +//Demo(); +//All(); +//Pin(); +//Pieces(); +PiecesPrint();