chiark / gitweb /
pawn wip remove old version
[reprap-play.git] / pawn.scad
1 // -*- C -*-
2
3 // shape parameters
4
5 r1 =  3;
6 r2 =  6; a2 = 30;
7 r3 = r2;
8 r4 =  8; a4 = 30;
9 r5 = 12;
10 h6 =  5; a6 = 5;
11
12 // coordinates
13
14                        z1 =  0;
15 h2 = r2 * sin(a2);     z2 = z1 - h2;
16 h3 = r3 * sin(a2);     z3 = z2 - h3;
17 h4 = r4 * sin(a4);     z4 = z3 - h4;
18 h5 = r5 * sin(a4-a6);  z5 = z4 - h5;
19                        z6 = z5 - h6;
20
21 x1 =  0 - r1;
22 x2 = x1 + r2 * (1-cos(a2));
23 x3 = x2 + r3 * (1-cos(a2));
24 x4 = x3 - r4 * (1-cos(a4));
25 x5 = x4 - r5 * (1-cos(a4-a6));
26 x6 = x5 - h6 * tan(a6);
27
28 $fa=1;
29 $fs=0.1;
30
31 module SegmentBasisSquare(zmin, zmax, xmin){
32   translate([xmin, zmin-0.01]) square([-xmin+0.01, zmax-zmin+0.02]);
33 }
34 module ConvexSegment(xc, zc, r, zmin, zmax){
35   intersection(){
36     translate([xc,zc]) circle(r=r);
37     SegmentBasisSquare(zmin,zmax,-50);
38   }
39 }
40 module ConcaveSegment(xc, zc, r, zmin, zmax){
41   difference(){
42     SegmentBasisSquare(zmin,zmax, xc);
43     translate([xc,zc]) circle(r=r);
44   }
45 }
46
47 module PawnTemplate(){
48   ConvexSegment(  x1 + r1,         z1,              r1, z1, 50);
49   ConvexSegment(  x1 + r2,         z1,              r2, z2, z1);
50   ConcaveSegment( x3 - r3,         z3,              r3, z3, z2);
51   ConcaveSegment( x3 - r4,         z3,              r4, z4, z3);
52   ConvexSegment(  x5 + r5*cos(a6), z5 - r5*sin(a6), r5, z5, z4);
53   polygon([[x6, z6],
54            [x5, z5+0.01],
55            [0.01, z5],
56            [0.01, z6]]);
57 }
58
59 PawnTemplate();