X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=earring-stand.scad;h=28024a876f5ed3bba2b98947420128b2b6d30943;hb=11bbae0f64a33a21098dfd6c6f6001a53cbdd072;hp=ace6c7a17274e84fc4743278b10bdc758c66baa9;hpb=d26f6954c5d0205b1d6431caf1a3205aaab27bfb;p=reprap-play.git diff --git a/earring-stand.scad b/earring-stand.scad index ace6c7a..28024a8 100644 --- a/earring-stand.scad +++ b/earring-stand.scad @@ -1,5 +1,7 @@ // -*- C -*- +include + eclip_inner_rad = 2.5; eclip_gap_rad = 0.5; eclip_prong_th = 3; @@ -9,6 +11,15 @@ eclip_inner_xstrt = 0.5; eclip_ult_angle = 44; eclip_base_epsilon = 0.5; +eclip_each_len = 6; +eclip_each_every = 15; + +test_alpha = 10; +test_main_th = 1.5; +test_eclips = 5; +test_base_th = 2.5; +test_len = eclip_each_len + eclip_each_every*(test_eclips-1); + // calculated include @@ -16,10 +27,19 @@ include eclip_inner_strt = eclip_outer_strt + eclip_inner_xstrt; r0 = eclip_inner_rad; -r1 = r0 + eclip_inner_rad; +r1 = r0 + eclip_gap_rad; r2 = r1 + eclip_prong_th; r2e = r1 + eclip_base_epsilon; +ppxl = -(r0 / sqrt(2)) + (eclip_inner_strt / sqrt(2)); + +rgap = eclip_gap_rad; + +eclip_base_offset = r1; +eclip_wall_offset = -ppxl; + +eclip_ra_offset = r2 - 0.1; + $fn=70; module EclipLPlanCore(alpha){ @@ -38,4 +58,85 @@ module EclipLPlanCore(alpha){ } } -EclipLPlanCore(10); +module EclipRPlan(alpha, main_th){ + intersection(){ + rotate(alpha) + translate([ppxl + main_th + rgap, -r2*2]) + square([eclip_prong_th, r2*(2 + 1/sqrt(2))]); + translate([-r2, -r2e]) + square([r2*3, eclip_base_epsilon + r2*4]); + } +} + +module EclipLPlan(alpha){ + rotate(alpha) EclipLPlanCore(alpha); +} + +module EclipPPlan(main_th){ + intersection(){ + hull(){ + circle(r0); + rotate(90-eclip_ult_angle) square([r0,r0]); + } + translate([-(r0+.1), -(r0+.1)]) + square([(r0+.1) + main_th + ppxl, r2*2]); + } + translate([ppxl, 0]) square([main_th, r2]); +} + +module TestBase(){ ////toplevel + translate([0,0, eclip_base_offset]){ + for (i=[0 : 2: test_eclips-1]) { + translate([0, i*eclip_each_every]) + rotate([90,0,0]) + linear_extrude(height=eclip_each_len) + EclipLPlan(test_alpha); + } + for (j=[1 : 2: test_eclips-2]) { + translate([0, j*eclip_each_every]) + rotate([90,0,0]) + linear_extrude(height=eclip_each_len) + EclipRPlan(test_alpha, test_main_th); + } + } + translate([-r2, -eclip_each_len, -test_base_th]){ + difference(){ + cube([r2*2, + test_len, + test_base_th]); + mirror([0,0,1]) Commitid_BestCount_M([r2*2, test_len]); + } + } +} + +module TestProtr(){ ////toplevel + difference(){ + translate([0,0, test_main_th - eclip_wall_offset]) + rotate([0,90,0]) + linear_extrude(height=test_len) + EclipPPlan(test_main_th); + mirror([0,0,1]) Commitid_BestCount_M([test_len, r2]); + } +} + +module TestRAProtr(){ ////toplevel + rotate([-90,0,0]) TestProtr(); + mirror([1,0,0]) + translate([-test_len, + -r2, + -(eclip_ra_offset + test_base_th)]) + cube([test_len, + r2*2, + test_base_th]); +} + +module TestPlanDemo(){ + color("red") EclipLPlan(test_alpha); + color("blue") rotate(test_alpha) EclipPPlan(test_main_th); + color("green") EclipRPlan(test_alpha, test_main_th); +} + +//PlanDemo(); +//TestBase(); +//TestProtr(); +//TestRAProtr();