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.

85 lines
3.2 KiB
Plaintext

#usage "<b>Generate a mask to fill vias for vacuum adapter.</b>\n"
"<p>"
"To delete the elements in user layer afterwards, display it without "
"any other layers, and use GROUP and DELETE. Then remove the user "
"layer with the command LAYER -number."
"<p>"
"<author>Author: support@cadsoft.de</author>"
// THIS PROGRAM IS PROVIDED AS IS AND WITHOUT WARRANTY OF ANY KIND, EXPRESSED OR IMPLIED
int userlayer = 101;
if (argv[1]) userlayer = strtol(argv[1]);
if (!userlayer) {
int Result = dlgDialog("Fill mask for vacuum") {
dlgLabel(usage);
dlgHBoxLayout {
dlgIntEdit(userlayer);
dlgStretch(1);
dlgPushButton("+OK") dlgAccept();
dlgStretch(1);
dlgPushButton("-Cancel") dlgReject();
}
};
if (!Result) exit (0);
}
string cmd;
sprintf(cmd, "SET WIRE_BEND 2;\nGRID mm;\nLayer %d FillVia;\nchange layer %d;\n", userlayer, userlayer);
void center(int x, int y, int diameter, int shape) {
real radius = u2mm(diameter) / 2;
string h;
switch (shape) {
case VIA_SHAPE_SQUARE : sprintf(h, "RECT (%.4f %.4f) (%.4f %.4f) ;\n",
u2mm(x) - radius, u2mm(y) - radius, u2mm(x) + radius, u2mm(y) + radius );
break;
case VIA_SHAPE_ROUND : sprintf(h, "CIRCLE 0 (%.4f %.4f) (%.4f %.4f) ;\n",
u2mm(x), u2mm(y), u2mm(x) + radius, u2mm(y) );
break;
case VIA_SHAPE_OCTAGON : real pwidth = 0.2032;
real frame = radius - pwidth/2;
sprintf(h, "CHANGE STYLE 0;\nPOLYGON %.4f (%.4f %.4f) (%.4f %.4f) (%.4f %.4f) (%.4f %.4f) (%.4f %.4f) (%.4f %.4f) (%.4f %.4f) (%.4f %.4f) (%.4f %.4f);\n",
pwidth,
u2mm(x) - frame,
u2mm(y) - frame * 0.4139,
u2mm(x) - frame * 0.4139,
u2mm(y) - frame,
u2mm(x) + frame * 0.4139,
u2mm(y) - frame,
u2mm(x) + frame,
u2mm(y) - frame * 0.4139,
u2mm(x) + frame,
u2mm(y) + frame * 0.4139,
u2mm(x) + frame * 0.4139,
u2mm(y) + frame,
u2mm(x) - frame * 0.4139,
u2mm(y) + frame,
u2mm(x) - frame,
u2mm(y) + frame * 0.4139,
u2mm(x) - frame,
u2mm(y) - frame * 0.4139
);
break;
}
cmd += h;
return;
}
if (board) board(B) {
B.signals(S) {
S.vias(V) {
if(V.start == 1 && V.end == 16) {
center(V.x, V.y, V.diameter[1], V.shape[1]);
}
}
}
exit (cmd);
}
else dlgMessageBox("Start this ULP in a Board!", "OK");
exit (0);