File: trace-layer.ulp

package info (click to toggle)
eagle 5.10.0-2
  • links: PTS
  • area: non-free
  • in suites: squeeze
  • size: 88,616 kB
  • ctags: 720
  • sloc: makefile: 33; sh: 24
file content (122 lines) | stat: -rw-r--r-- 2,708 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#usage "Trace layer, to display layers step by step.<p>"
       "RUN trace-layer +<br>"
       "RUN trace-layer -<br>"
       "Layers 17 Pad, 18 Via, 19 Unrouted, 23 tOrigin and 24 bOrigin are not separated displayed"

// Version 1.0  - 2007.06.06 support@cadsoft.de

int    supplyLayer[];
int    usedLayer[];
int    mLayer = 0;
int    lastUsed;
string cmd;
string message = "";

string layerFile = filesetext(argv[0], ".trl");
string f[];
int    isFile = fileglob(f, layerFile);

void checkLayer(void) {
  if (argv[1] == "+") {
    if (mLayer == 23 || mLayer == 24) mLayer = 25;
    if (mLayer == 17 || mLayer == 18 || mLayer == 19) mLayer = 20;
    lastUsed = mLayer;
  }
  if (argv[1] == "-") {
    if (mLayer == 23 || mLayer == 24) mLayer = 22;
    if (mLayer == 17 || mLayer == 18 || mLayer == 19) mLayer = 16;
    lastUsed = mLayer;
  }
  return;
}

if (isFile) {
  string rLayer;
  int n = fileread(rLayer, layerFile);
  mLayer = strtol(rLayer);
}


if (argv[1] == "-") {
  mLayer --;
  if (board) {
    if (mLayer < 1) {
      if (!mLayer) message = "The first layer.";
      mLayer = 1;
    }
  }
  else if (schematic) {
    if (mLayer < 91) mLayer = 91;
  }
}

if (argv[1] == "+") {
  mLayer ++;
  if (mLayer >255) {
    mLayer = 255;
    if (!mLayer) message = "The last layer.";
  }
}


checkLayer();
if (board) {
  board(B) {
    B.layers(L) {
      if (L.used) {
        usedLayer[L.number] = 1;
      }
      string ln = L.name;
      if (ln[0] == '$') {
        usedLayer[L.number] = 1;
        supplyLayer[L.number] = 1;
      }
    }
    if (argv[1] == "+") {
      if (!usedLayer[mLayer]) {
        do {
          mLayer++;
          if (usedLayer[mLayer]) break;
        } while (mLayer < 256);
        if (mLayer >= 255) message = "The last Layer.";
      }
    }
    if (argv[1] == "-") {
      if (!usedLayer[mLayer]) {
        do {
          mLayer--;
          if (usedLayer[mLayer]) break;
        } while (mLayer > 1);
      }
    }

    checkLayer();
    if (usedLayer[mLayer]) {
      if (mLayer < 17) {
        if (supplyLayer[mLayer]) {
          sprintf(cmd, "DISPLAY NONE %d;\n", mLayer);
          message ="<font color=\"red\"><b>ATTENTION</b></font> this is a <b>Supply</b> layer, <b>do not use</b> this Layer in CAM-Job with <b>Pad</b>- and/or <b>Via</b>-Layer.";
        }
        else {
          sprintf(cmd, "DISPLAY NONE %d 17 18;\n", mLayer);
        }
      }
      else {
        sprintf(cmd, "DISPLAY NONE %d;\n", mLayer);
      }
      lastUsed = mLayer;
    }
  }
}
checkLayer();
if (lastUsed) {
  output(layerFile, "wtD") {
    printf("%d", lastUsed);
  }
}
if (message) {
  string s;
  sprintf(s, "RUN ulpmessage '%s';\n", message);
  cmd += s;
}
exit (cmd);