neingeist
/
arduinisten
Archived
1
0
Fork 0
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.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

39 lines
1.0 KiB
Plaintext

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