📄 change-pad-in-lbr.ulp
字号:
dlgIntEdit(mpercent);
dlgLabel(" &+ %");
dlgIntEdit(ppercent);
dlgStretch(1);
}
}
dlgStretch(1);
}
dlgHBoxLayout {
dlgLabel("&Drill diameter ");
dlgRealEdit(change_values[n], min_val[n], max_val[n]);
dlgStretch(1);
}
todo = 0;
}
if( n == P_rounddrill) {
dlgLabel(rounddrill_help);
dlgHBoxLayout {
dlgLabel(" &- %");
dlgIntEdit(mpercent);
dlgLabel(" &+ %");
dlgIntEdit(ppercent);
dlgStretch(1);
todo = 0;
}
}
if( n == P_restring) {
dlgLabel(restring_help);
dlgHBoxLayout {
dlgGroup("Range") {
dlgHBoxLayout {
dlgLabel(" m&in ");
dlgRealEdit(minrestring);
dlgLabel(" m&ax ");
dlgRealEdit(maxrestring);
}
}
dlgLabel(" New &Restring ");
dlgRealEdit(change_values[n], min_val[n], max_val[n]);
dlgStretch(1);
}
todo = 0;
}
if (todo) {
dlgHBoxLayout {
dlgRealEdit(change_values[n], min_val[n], max_val[n]);
dlgStretch(1);
}
}
dlgVBoxLayout {
if (min_max[n]) dlgLabel(min_max[n]);
dlgHBoxLayout {
dlgStretch(0);
dlgPushButton("+OK") dlgAccept();
dlgStretch(1);
dlgSpacing(100);
dlgPushButton("-Cancel") dlgReject();
dlgStretch(0);
}
}
};
if (Result == 0) exit (0);
}
}
return;
}
// change First flag
void change_first(string onoff, int x, int y) {
sprintf(s, "Change FIRST %s (%.4f %.4f);\n", onoff, u2mm(x), u2mm(y));
cmd += s;
return;
}
// change Pad Shape
void change_shape(string shape, int x, int y) {
sprintf(s, "Change SHAPE %s (%.4f %.4f);\n", shape, u2mm(x), u2mm(y));
cmd += s;
return;
}
// change Drill Diameter
void change_prill(real diameter, int x, int y, int drill, string pac) {
real isdrill = u2mm(drill);
if (isdrill >= diameter - (diameter / 100 * mpercent) && isdrill <= diameter + (diameter / 100 * ppercent)) {
if (abs(diameter - isdrill) < 0.000001 ) return;
sprintf(s, "Change DRILL %.4f (%.4f %.4f);\n", diameter, u2mm(x), u2mm(y));
cmd += s;
cntchdrill++;
}
return;
}
// change Drill Diameter rounded 1/10 mm
void change_prillround(real diameter, int x, int y, int drill) {
real isdrill = u2mm(drill);
real rval = round(isdrill * 10.0) / 10.0;
if (abs(rval - isdrill) < 0.000001 ) return;
if (isdrill >= rval - ((rval / 100) * mpercent) && isdrill <= rval + ((rval / 100) * ppercent)) {
cntchdrill++;
sprintf(s, "Change DRILL %.4f (%.4f %.4f);\n", rval, u2mm(x), u2mm(y));
cmd += s;
}
return;
}
// change Pad Diameter
void change_pdiameter(real diameter, int x, int y) {
sprintf(s, "Change DIAMETER %.4f (%.4f %.4f);\n", diameter, u2mm(x), u2mm(y));
cmd += s;
return;
}
// change Pad Restring
void change_restring(real mRestring, int diam, int x, int y, int drill) {
real isrestring = u2mm(diam) - u2mm(drill);
if (isrestring) isrestring /= 2; // ** do not device by zerro **
if (isrestring < 0) isrestring = 0; // negativ parameter not allowed
if (isrestring >= minrestring && isrestring <= maxrestring) {
sprintf(s, "CHANGE DIAMETER %.4f (%.4f %.4f);\n", u2mm(drill) + 2 * mRestring, u2mm(x), u2mm(y));
cmd += s;
cntchrestring++;
}
return;
}
// change Stop mask flag
void change_mask(string onoff, int x, int y) {
sprintf(s, "Change %s (%.4f %.4f);\n", onoff, u2mm(x), u2mm(y));
cmd += s;
return;
}
// ********************************************************
if (library) {
pad1 = "<img src=change-pad-in-lbr-1.bmp>";
padx = "<img src=change-pad-in-lbr-x.bmp>";
int n = 0;
library(L) {
get_changemenue(L.name);
// *** check if a change parameter activ ***
if (!to_change[P_shape] &&
!to_change[P_drill] &&
!to_change[P_rounddrill] &&
!to_change[P_diameter] &&
!to_change[P_restring] &&
!to_change[P_stopmask] &&
!to_change[P_creammask] &&
!to_change[P_firstpad]) exit (0);
if (change_values[P_stopmask]) stop_onoff = "ON";
else stop_onoff = "OFF";
if (change_values[P_creammask]) cream_onoff = "ON";
else cream_onoff = "OFF";
script_change = filesetext(L.name, "~~~.scr");
output(script_change, "wtD") {
printf("DISPLAY NONE 1 16 17;\n");
int firstf = 1;
L.packages(P) {
cntPac++;
change_pac = 0;
cmd = "";
P.contacts(C) {
cntContact++;
if (C.pad) {
if (to_change[P_shape] && (shape || shape1)){
if (C.name == "1" && shape1) change_shape(shape_form[shape1], C.pad.x, C.pad.y);
else { if (shape) change_shape(shape_form[shape], C.pad.x, C.pad.y); }
}
if (to_change[P_firstpad]) {
if (C.name == fist_pad_name) {
change_first(first_onoff[flag_offon], C.x, C.y);
}
}
if (to_change[P_drill]) {
change_prill(change_values[P_drill], C.pad.x, C.pad.y, C.pad.drill, P.name);
}
if (to_change[P_rounddrill]) {
change_prillround(change_values[P_drill], C.pad.x, C.pad.y, C.pad.drill);
}
if (to_change[P_diameter]) {
change_pdiameter(change_values[P_diameter], C.pad.x, C.pad.y);
}
if (to_change[P_restring]) {
change_restring(change_values[P_restring], C.pad.diameter[LAYER_BOTTOM], C.pad.x, C.pad.y, C.pad.drill);
}
if (to_change[P_stopmask]) {
change_mask("STOP " + stop_onoff, C.pad.x, C.pad.y);
}
}
else if (C.smd) {
if (to_change[P_stopmask]) {
change_mask("STOP " + stop_onoff, C.smd.x, C.smd.y);
}
if (to_change[P_creammask]) {
change_mask("CREAM " + cream_onoff, C.smd.x, C.smd.y);
}
}
}
if (cmd) {
printf("EDIT %s.PAC;\n", P.name);
printf("%s",grid);
printf("%s",cmd);
}
}
// printf("GRID DEFAULT;\n");
printf("DISPLAY NONE 1 16 17 20 21 29 31;\n");
}
}
string sc;
s = "";
if (cntchdrill) {
sprintf(s, "%d Drills to change!\n", cntchdrill);
sc += s;
}
if (cntchrestring) {
sprintf(s, "%d Pad-Restring to change!", cntchrestring);
sc += s;
}
if (sc) if (dlgMessageBox(sc, "Ok", "Cancel") != 0) exit(0);
exit ("SCRIPT '" + script_change + "';\n");
}
else {
dlgMessageBox("! Start this ULP in a Library");
exit (0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -