X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=earring-stand.scad;h=ef1ad56b7efae822b90d86571b90f715c3787e2f;hb=84c0c47cb1219826fbb5e55a2a1713c98d88d63b;hp=e3df5ac49ac68db3046ff23e5d56cbc2fce4224f;hpb=f69e678e2d115bd4bbcc1018096bd83d79ce2245;p=reprap-play.git diff --git a/earring-stand.scad b/earring-stand.scad index e3df5ac..ef1ad56 100644 --- a/earring-stand.scad +++ b/earring-stand.scad @@ -25,6 +25,8 @@ test_base_th = 2.5; test_len = eclip_each_len + eclip_each_every*(test_eclips-1); echo("test_len",test_len); +num_eclips = 5; + // calculated include @@ -45,6 +47,9 @@ eclip_wall_offset = -ppxl; eclip_ra_offset = r2 - 0.1; +eclip_rhs_offset = ppxl + rgap + eclip_prong_th; +// does not include main_th + $fn=70; module EclipLPlanCore(alpha){ @@ -157,30 +162,73 @@ module Sketch(){ thicks = [ 2, 2, 2 ]; module Joins(alpha, objnum, objnum_f, objnum_m) { + pitch = (front_width - eclip_each_len) / (num_eclips-1); + echo("Joins",objnum, objnum_f, objnum_m); thm = thicks[objnum_m]; + stride = (front_width - eclip_each_len) / (num_eclips-1); + if (objnum==objnum_f) { - EclipLPlan(alpha); - EclipRPlan(alpha, thm); + for (i=[ 1 : 2 : num_eclips-1 ]) { + translate([0, i*stride + eclip_each_len, 0]) { + rotate([90,0,0]) + linear_extrude(height=eclip_each_len) + EclipLPlan(alpha); + } + } + for (i=[ 0 : 2 : num_eclips-1 ]) { + translate([0, i*stride + eclip_each_len, 0]) { + rotate([90,0,0]) + linear_extrude(height=eclip_each_len) + EclipRPlan(alpha, thm); + } + } } if (objnum==objnum_m) - rotate(alpha) + mirror([0,1,0]) + rotate([90,0,0]) + linear_extrude(height=front_width) + rotate(alpha) EclipPPlan(thm); } +function r3(pc) = [ pc[0], 0, pc[1] ]; + module ObjectJoins(objnum){ echo("Object",objnum); - translate(pp) Joins(beta, objnum, 0,1); - translate(pr) mirror([1,0,0]) Joins(0, objnum, 0,2); - translate(pq) rotate([0,0,-90]) Joins(beta, objnum, 2,1); + translate(r3(pp)) Joins(beta, objnum, 0,1); + translate(r3(pr)) mirror([1,0,0]) Joins(0, objnum, 0,2); + translate(r3(pq)) rotate([0,90,0]) Joins(beta, objnum, 2,1); } module Base(){ - ObjectJoins(0); + xmin = pr[0] - eclip_rhs_offset - thicks[2]; + xmax = pp[0] + eclip_rhs_offset + thicks[1] + + eclip_prong_th * (1/cos(beta) - 1) + + eclip_base_offset * tan(beta); + intersection(){ + ObjectJoins(0); + translate([xmin, + -1, + -50]) + cube([xmax - xmin, + front_width + 2, + 300]); + } + translate([xmin, + 0, + -eclip_base_offset - thicks[0]]) + cube([xmax - xmin, + front_width, + thicks[0]]); } module Front(){ - ObjectJoins(1); + %ObjectJoins(1); + rotate([0, 90-beta, 0]) + translate([0, 0, ppxl]) + rotate([0,0,90]) + cube([front_width, front_height, thicks[1]]); } module Back(){ @@ -188,9 +236,9 @@ module Back(){ } module Demo(){ - Base(); - Front(); - Back(); + color("red") Base(); + color("blue") Front(); + color("black") Back(); } //PlanDemo(); @@ -198,4 +246,4 @@ module Demo(){ //TestProtr(); //TestRAProtr(); //Sketch(); -//Demo(); +Demo();