X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=earring-stand.scad;h=8ed8f8697154e5daea56dc0c0921f728e1701a15;hp=5e0d91997c3e51343a1d8a83999e101237a92432;hb=0c0dd38d06e3dfba013b053045ec1b79e66aa51b;hpb=a293d7998319ec4811d456f3c38cb7315de2da68 diff --git a/earring-stand.scad b/earring-stand.scad index 5e0d919..8ed8f86 100644 --- a/earring-stand.scad +++ b/earring-stand.scad @@ -5,6 +5,17 @@ include front_height = 80; front_width = 120; front_setback = 30; +front_thick = 2.4; + +front_hex_stride = 14; +front_hex_dia = 11; + +front_surround_lr =3; + +back_thick = 3; +back_pillarw = 6; + +base_thick = 2.4; eclip_inner_rad = 2.5; eclip_gap_rad = 0.1; @@ -46,6 +57,8 @@ eclip_wall_offset = -ppxl; eclip_ra_offset = r2 - 0.1; +eclip_recept_height = r2; + eclip_rhs_offset = ppxl + rgap + eclip_prong_th; // does not include main_th @@ -161,7 +174,7 @@ module Sketch(){ polygon([pq, pp, pr]); } -thicks = [ 2, 2, 2 ]; +thicks = [ base_thick, front_thick, back_thick ]; module Joins(alpha, objnum, objnum_f, objnum_m) { pitch = (front_width - eclip_each_len) / (num_eclips-1); @@ -223,19 +236,75 @@ module Base(){ thicks[0]]); } +module FrontPattern(){ + totalh = front_height - eclip_wall_offset + thicks[1]; + + ystride = front_hex_stride; + xstride = front_hex_stride * cos(30) * 2; + + difference(){ + square([front_width, totalh]); + translate([ front_surround_lr, + eclip_recept_height ]) + square([ front_width - front_surround_lr*2, + totalh - eclip_recept_height*2 + ]); + } + + difference(){ + square([front_width, totalh]); + for (xi=[ 0 : 10 ]) { + translate([xi * xstride + + front_surround_lr + + front_hex_dia*.25, 0]) { + for (yi=[ 0 : 10 ]) { + echo(yi); + translate([0, yi * ystride]) { + for (dv=[ [0,0], + [-xstride/2, -ystride/2] + ]) + translate(dv) + circle(r= front_hex_dia/2, $fn=6); + } + } + } + } + } +} + module Front(){ ObjectJoins(1); rotate([0, 90-beta, 0]) translate([0, 0, ppxl]) rotate([0,0,90]) { - cube([front_width, - front_height - eclip_wall_offset + thicks[1], - thicks[1]]); + linear_extrude(height=thicks[1]) + FrontPattern(); } } module Back(){ ObjectJoins(2); + + zmin = pr[1]; + zmax = pq[1] + eclip_prong_th; + height = zmax - zmin; + + translate([pr[0] + eclip_wall_offset - thicks[2], + 0, 0]) + rotate([0,90,0]) + rotate([0,0,90]) { + difference(){ + cube([front_width, + height, + thicks[2]]); + translate([back_pillarw, + eclip_recept_height, + -10]) + cube([front_width - back_pillarw*2, + height - eclip_recept_height*2 - eclip_prong_th, + 20]); + } + } } module Demo(){