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);
|