You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.0 KiB
Plaintext
39 lines
1.0 KiB
Plaintext
15 years ago
|
#usage "<b>snap pins in symbol to grid<p>"
|
||
|
"Example: run snap-pin-in-symbol [100]"
|
||
|
"<author>Author: librarian@cadsoft.de</author>"
|
||
|
|
||
|
string cmd;
|
||
|
real Grid = 100; // default 100 Mil
|
||
|
string s;
|
||
|
|
||
|
real xoff, yoff;
|
||
|
if (argv[1]) Grid = strtod(argv[1]);
|
||
|
|
||
|
real snap(int n) { // returns next grid point
|
||
|
return round(u2mil(n) / Grid) * Grid;
|
||
|
}
|
||
|
|
||
|
int move = 0;
|
||
|
if (library) {
|
||
|
if (symbol) symbol(S) {
|
||
|
string name = S.name;
|
||
|
S.pins(P) {
|
||
|
xoff = snap(P.x) - u2mil(P.x);
|
||
|
yoff = snap(P.y) - u2mil(P.y);
|
||
|
if (xoff || yoff) {
|
||
|
move = 1;
|
||
|
sprintf( s, "MOVE (%.5f %.5f) (%.1f %.1f);\n", u2mil(P.x), u2mil(P.y), snap(P.x), snap(P.y));
|
||
|
cmd += s;
|
||
|
}
|
||
|
}
|
||
|
if (move) {
|
||
|
if (dlgMessageBox(cmd, "OK", "Cancel") != 0) exit (-1);;
|
||
|
exit("GRID MIL FINEST;\n" + cmd + "GRID MIL 100 1 ON;");
|
||
|
}
|
||
|
else dlgMessageBox("PINs in " + name + ".SYM on Grid", "OK");
|
||
|
}
|
||
|
else dlgMessageBox("Start this ULP in a Symbol-Editor", "OK");
|
||
|
}
|
||
|
else dlgMessageBox("Start this ULP in Library (Symbol)", "OK");
|
||
|
|