chiark / gitweb /
5b3cd9e4ac36e9b5060d0b85f4120efee4943633
[reprap-play.git] / earring-stand.scad
1 // -*- C -*-
2
3 eclip_inner_rad = 2.5;
4 eclip_gap_rad = 0.5;
5 eclip_prong_th = 3;
6 eclip_outer_strt = 0.5;
7 eclip_inner_xstrt = 0.5;
8
9 eclip_ult_angle = 44;
10 eclip_base_epsilon = 0.5;
11
12 // calculated
13
14 include <utils.scad>
15
16 eclip_inner_strt = eclip_outer_strt + eclip_inner_xstrt;
17
18 r0 = eclip_inner_rad;
19 r1 = r0 + eclip_inner_rad;
20 r2 = r1 + eclip_prong_th;
21 r2e = r1 + eclip_base_epsilon;
22
23 ppxl = -(r0 / sqrt(2)) + (eclip_inner_strt / sqrt(2));
24
25 $fn=70;
26
27 module EclipLPlanCore(alpha){
28   FArcSegment(0,0, r1,r2,
29               180-eclip_ult_angle, eclip_ult_angle-alpha +1);
30
31   difference(){
32     hull(){
33       intersection(){
34         circle(r2);
35         rotate(-alpha) mirror([1,1]) square([r2e, 50]);
36      }
37       rotate(-alpha) mirror([1,1]) square([r2e, r2]);
38     }
39     circle(r1);
40   }
41 }
42
43 module EclipLPlan(alpha){
44   rotate(alpha) EclipLPlanCore(alpha);
45 }
46
47 module EclipPPlanCore(main_th){
48   intersection(){
49     hull(){
50       circle(r0);
51       rotate(45) square([r0,r0]);
52     }
53     translate([-(r0+.1), -(r0+.1)])
54       square([(r0+.1) + main_th + ppxl, r2*2]);
55   }
56   translate([ppxl, 0]) square([main_th, r2]);
57 }
58
59 color("red") EclipLPlanCore(10);
60 color("blue") EclipPPlanCore(1.5);