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

📄 find.ulp

📁 老外的PCB设计软件,是免费的.可以上网更新.
💻 ULP
📖 第 1 页 / 共 2 页
字号:
#usage "<qt><b>Find elements in schematic/board and zoom in</b>\n"
       "<p>"
       "Centers the object and zooms into the drawing."
       "<p>"
       "Usage: RUN find [ <i>name</i> [ count | * ] [ pin | pad | CH new_value]]"
       "<p>"
       "<h3>You can also run this ULP from the command line:</h3><p>"
       "RUN find<br>"
       "RUN find name<br>"
       "RUN find name counter<br>"
       "RUN find name all PIN|PAD|DEV<b> ***</b><br>"
       "RUN find value * CH new-value<br>"
       "Search string is the <b>name</b> of the Device/Package/Net/Bus/Pin/Signal/Value<p>"
       "<b>counter</b> specifies the number of elements that should be found before ending the search, "
       "<b>*</b> sets the counter to 1000. PIN | PAD search also for Pin- and Pad-Name<p>"
       "<b>CH</b> value; change the value of element if found (CH are case sensitiv)<p>"
       "<hr> "
       "Searching order:<p>"
       "<table>"
       "<tr><td><u>Schematic</u>:</td><td><u>Board</u>:</td></tr>"
       "<tr><td>1. Part name</td><td>1. Element</td></tr>"
       "<tr><td>2. Device name</td><td>1. Element</td></tr>"
       "<tr><td>3. Net name</td><td>2. Signal/Wires/Vias</td><tr>"
       "<tr><td>4. Bus name</td><td>3. Pads</td></tr>"
       "<tr><td>5.&nbsp;Pin/Pad&nbsp;name&nbsp;if&nbsp;option&nbsp;PIN&nbsp;|&nbsp;PAD&nbsp;<b>***</b>&nbsp;is&nbsp;given.</td><td>4.&nbsp;Value</td></tr>"
       "<tr><td>6. Value</td><td> Searching for values is not case sensitive.</td></tr>"
       "</table>"
       "<b>Restriction:</b> Due to the bus name convention it is not possible"
       "to search for bus members like address or data nets named, for example, D0, D1, D3."
       "The net name does not occur in a bus name like D[0..n], so we can't search for it.<br>"
       "<author>Author: support@cadsoft.de</author></qt>"

// THIS PROGRAM IS PROVIDED AS IS AND WITHOUT WARRANTY OF ANY KIND, EXPRESSED OR IMPLIED


string  Hilfe =  "<qt><h3>Starten Sie dieses ULP auch aus der Kommandozeile mit:</h3><p>" +
                 "RUN find<br>" +
                 "RUN find name<br>" +
                 "RUN find name Z&auml;hler<br>" +
                 "RUN find name * PIN|PAD|DEV<b> ***</b><br>" +
                 "RUN find alter-value * CH neuer-value<p>" +
                 "Suchbegriff ist der <b>name</b> des Device/Package/Net/Bus/Pin/Pad/Signal/Value<br>" +
                 "<b>Z&auml;hler</b> ist die Anzahl der gefundenen Elemente, nach der die Suche beendet wird.<br>"
                 "<b>*</b> setzt den Z&auml;hler im Programm auf 1000.<br>" +
                 "<b>PIN</b> | <b>PAD</b> sucht zus&auml;tzlich nach PIN oder PAD Namen.<br>" +
                 "<b>CH</b> value ersetzt den Value das gefundenen Elements (CH ist Case sensitiv)<p>" +
                 " <hr> " +
                 "Find sucht in der Reihenfolge:<p>" +
                 "<table>" +
                 "<tr><td><u>Schaltplan</u>:</td><td><u>Board</u>:</td></tr>" +
                 "<tr><td>1. Part-Name</td><td>1. Element</td></tr>" +
                 "<tr><td>2. Device-Name</td><td>1. Element</td></tr>" +
                 "<tr><td>3. Netz-Name</td><td>2. Signal/Wires</td><tr>" +
                 "<tr><td>4. Bus-Name</td><td>3. Pads</td><tr>" +
                 "<tr><td>5.&nbsp;Pin/Pad-Name&nbsp;falls&nbsp;PIN&nbsp;|&nbsp;PAD&nbsp;<b>***</b>&nbsp;gesetzt&nbsp;ist.</td><td>4. Value</td></tr>" +
                 "<tr><td>6. Value </td><td>In Values, wird in der Schreibweise, so wie mit Gro&szlig;schreibung gesucht. </td></tr>" +
                 "</table>" +
                 "<b>Einschr&auml;nkung:</b> Netznamen von Daten- und Adressbussen wie D0, D1, D3..." +
                 "werden innerhalb des Busses in der Schreibweise D[0..n] abgelegt. " +
                 "Somit kann das Netz D1 innerhalb eines Busses nicht gefunden werden.</qt>";

// Revision 1.1  2005.06.15  - CH : search an replace Value / Suchen und ersetzen das Value alf@cadsoft.de
//                             Zuweisung von vfind berichtigt, es konnten nur Values mit Gro遱chreibung gefunden werden.
//                             durchsuchen von Netz-Namen in Bussen berichtigt.
// Revision 1.2  2005.07.19  - Search also in Polygon - contour - wire
//
// Revision 1.3  2005.11.14  - Search Part_Name
//


string find;
string vfind;
string NewValue;
string ChangeValue;
int    change_value = 0;
string again;
string fpin;
string fndpin = "Element";
string foundelement = "";
string fPinPad[] = { "", "PIN", "PAD", "DEV" };
int    fcnt = 0;
int    all;
int    cnt;
int    Result;
int    mx, my;
real   lastZoom = 0;
int    lastSheet = 0;

int test = 0;

string fileName = argv[0];
string scriptfile = filesetext(fileName, "$$$.scr");

int gridunit;
string unit[] = { "Micron", "mm", "Mil", "Inch" };

real u2u(int val) {
  switch (gridunit) {
     case GRID_UNIT_MIC  : return u2mic(val);
     case GRID_UNIT_MM   : return u2mm(val);
     case GRID_UNIT_MIL  : return u2mil(val);
     case GRID_UNIT_INCH : return u2inch(val);
     }
}

string dpbacksl(string fs) {
  int l = 0;
  do {
    if (fs[l] == '\\') {
      string fs1 = strsub(fs, 0 , l + 1);
      string fs2 = strsub(fs, l + 1 );
      fs = fs1 + "\\" + fs2;
      l += 2;
      }
    l++;
  } while (fs[l]);
  return fs;
}


void showrepeat(string text) {
  dlgDialog("FIND.ULP") {
    dlgHBoxLayout dlgSpacing(600);
    dlgHBoxLayout {
      dlgVBoxLayout dlgSpacing(300);
      dlgTextEdit(text);
    }
    dlgHBoxLayout {
      dlgPushButton("+&OK") dlgAccept();
      dlgStretch(1);
    }
  };
  return;
}

string returnfind(void) {
   string rs;
   if (!fpin) fndpin = "Element";
   sprintf(rs, "run ulpmessage.ulp '%d %s(s) %s found!' '%s';\n", fcnt, fndpin, find, foundelement );
   return dpbacksl(rs);
   }

void check(string repeat) {
   repeat += returnfind();
   if (test) showrepeat(repeat);
   exit (repeat);
}


void helpULP(void) {
   if (language() == "de") dlgMessageBox(Hilfe, "OK");
   else dlgMessageBox(usage, "OK");
   return;
}

string getfind() {
   string f;
   if (!all) all = 1;
   int pin = 0;
   Result = dlgDialog("Find Element"){
      dlgHBoxLayout {
         dlgVBoxLayout {
            dlgHBoxLayout {
               dlgLabel("&Name ");
               dlgStringEdit(f);
               dlgStretch(1);
               dlgSpacing(10);
               dlgPushButton("&Help") helpULP();
            }
            dlgHBoxLayout {
               dlgLabel("&Counts");
               dlgIntEdit(all, 0, 2000);
               dlgStretch(1);
               dlgSpacing(280);
            }
            dlgHBoxLayout {
               dlgGroup("Find PIN | PAD | DEV name in SCH") {
                  dlgRadioButton("n&o", pin);
                  dlgRadioButton("P&IN", pin);
                  dlgRadioButton("P&AD", pin);
                  dlgRadioButton("&DEV", pin);
               }
               dlgGroup("Value") {
                  dlgHBoxLayout {
                     dlgCheckBox("&change", change_value);
                     dlgLabel(" to new &Value ");
                     dlgStringEdit(NewValue);
                  }
                  dlgLabel("if value found.");
               }
               dlgStretch(1);
            }
            dlgStretch(0);
            dlgHBoxLayout {
               dlgPushButton("+&Find") {
                  dlgAccept(1);
                  fpin = fPinPad[pin];
                  all--;
                  if (change_value) ChangeValue = "CH";
               }
               dlgStretch(1);
               dlgPushButton("-Cancel") dlgReject();
            }
            dlgStretch(1);
         }
      }
   };
   if (Result && !f) {
      if (ChangeValue = "CH");
      else dlgMessageBox("No search string!", "OK");
      f = "";
   }
   return f;
}


string show_B(real x, real y, real zoom1, real zoom2, string findb, int fist) {
   fcnt++;
   string cmd = "";
   if (lastZoom) {
      sprintf(cmd, "\n;WINDOW (%.6f %.6f) (%.6f %.6f) (%.6f %.6f);\n"
                   "SHOW '%s';\n",
                   x, y,
                   x, y,
                   x, y,
                   findb
                   );
      }
   else {
      sprintf(cmd, "WINDOW FIT;\n"
                "WINDOW (%.6f %.6f) (%.6f %.6f) (%.6f %.6f);\n"
                "SHOW '%s';\n",
                x, y,
                x + zoom1, y,
                x + zoom2, y,
                findb
                );
      lastZoom = zoom2;
      }
   if (ChangeValue == "CH") {
      string chval;
      sprintf(chval, "VALUE %s '%s';\n", findb, NewValue);
      cmd += chval;
   }
   return cmd;
}


string show_S(int s, real x, real y, real zoom1, real zoom2, string finds) {
   fcnt++;
   string cmd = "";
   if (s != lastSheet) {
      lastSheet = s;
      sprintf(cmd, "EDIT .s%d;\nWINDOW (%.6f %.6f) (%.6f %.6f) (%.6f %.6f);\nSHOW '%s';\n", s,
           x, y,
           x + zoom1, y,
           x + zoom2, y,
           finds
           );
      }
   else {
      sprintf(cmd, "WINDOW (%.6f %.6f) (%.6f %.6f) (%.6f %.6f);\nSHOW '%s';\n",
           x, y,
           x, y,
           x, y,
           finds
           );
      }
   if (ChangeValue == "CH") {
      string chval;
      sprintf(chval, "VALUE %s '%s';\n", finds, NewValue);
      cmd += chval;
   }
   return cmd;
}


real zfactor(real x1, real y1, real x2, real y2) {
  return sqrt( pow(x2 - x1, 2) + pow(y2 - y1, 2) );
}


// *** split bus-name from net-name ***
int findBus(string name, string sfind) {
  string bn[];
  int b;
  b = strsplit(bn, name, ':');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -