bba7b6259c585211e2c1c3a8f9c365fef8d78027
Stefan Schuermans version 1.0.0

Stefan Schuermans authored 12 years ago

1) #! /usr/bin/perl
2) 
3) use strict;
4) use warnings;
5) 
6) my $pi = 3.1415;
7) 
8) sub mm2pcb
9) {
10)   my $mm = shift;
11)   my $pcb = $mm * 1.0e5 / 25.4;
12)   return int($pcb >= 0.0 ? $pcb + 0.5 : $pcb - 0.5)
13) }
14) 
15) sub line
16) {
17)   my $sx = shift;
18)   my $sy = shift;
19)   my $ex = shift;
20)   my $ey = shift;
21) 
22)   printf "\tElementLine[%d %d %d %d 1000]\n",
23)          mm2pcb($sx), mm2pcb($sy), mm2pcb($ex), mm2pcb($ey);
24) 
25) }
26) 
27) sub pad
28) {
29)   my $sx = shift;
30)   my $sy = shift;
31)   my $ex = shift;
32)   my $ey = shift;
33)   my $w = shift;
34)   my $name = shift;
35)   my $no = shift;
36) 
37)   printf "\tPad[%d %d %d %d %d 3000 %d \"%s\" \"%d\" \"square\"]\n",
38)          mm2pcb($sx), mm2pcb($sy), mm2pcb($ex), mm2pcb($ey),
39)          mm2pcb($w), mm2pcb($w) + 600, $name, $no;
40) }
41) 
42) sub element
43) {
44)   my $idx = shift;
45)   my $cx = shift;
46)   my $cy = shift;
47)   my $angle = shift;
48)   my $ov_tx = shift;
49)   my $ov_ty = shift;
50) 
51)   my $rx = cos($angle);
52)   my $ry = sin($angle);
53)   my $bx = cos($angle + $pi / 2);
54)   my $by = sin($angle + $pi / 2);
55) 
56)   my $angle_i = int($angle * 4 / $pi + 0.5);
57) 
58)   my $tx = -2.0;
59)   my $ty = 1.5;
60)   my $ta = 0;
61)   if ($angle_i == 1) {
62)     $tx = -5.0;
63)     $ty = 0.5;
64)     $ta = 0;
65)   }
66)   elsif ($angle_i == 2) {
67)     $tx = -3.0;
68)     $ty = 2.0;
69)     $ta = 1;
70)   }
71)   elsif ($angle_i == 3) {
72)     $tx = -5.0;
73)     $ty = -2.5;
74)     $ta = 0;
75)   }
76)   elsif ($angle_i == 4) {
77)     $tx = -2.0;
78)     $ty = -3.0;
79)     $ta = 0;
80)   }
81)   elsif ($angle_i == 5) {
82)     $tx = 1.5;
83)     $ty = -2.0;
84)     $ta = 0;
85)   }
86)   elsif ($angle_i == 6) {
87)     $tx = 1.5;
88)     $ty = 2.0;
89)     $ta = 1;
90)   }
91)   elsif ($angle_i == 7) {
92)     $tx = 1.0;
93)     $ty = 1.0;
94)     $ta = 0;
95)   }
96)   if ($ov_tx && $ov_ty) {
97)     $tx = $ov_tx;
98)     $ty = $ov_ty;
99)   }
100) 
101)   printf "Element[\"\" \"APL3015\" \"LED%d\" \"APL3015\" %d %d %d %d %d 100 \"\"]\n(\n",
102)          $idx, mm2pcb($cx), mm2pcb($cy), mm2pcb($tx), mm2pcb($ty), $ta;
103) 
104)   pad( - 1.5 * $rx - 0.1 * $bx, - 1.5 * $ry - 0.1 * $by,
105)        - 1.5 * $rx + 0.1 * $bx, - 1.5 * $ry + 0.1 * $by, 1.4, "A", 1);
Stefan Schuermans whitespace fix

Stefan Schuermans authored 11 years ago

106)   pad(   1.5 * $rx - 0.1 * $bx,   1.5 * $ry - 0.1 * $by,