⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 change-pad-in-lbr.ulp

📁 老外的PCB设计软件,是免费的.可以上网更新.
💻 ULP
📖 第 1 页 / 共 2 页
字号:
                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 + -