element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Autodesk EAGLE
  • Products
  • More
Autodesk EAGLE
EAGLE User Support (English) Rename wires
  • Blog
  • Forum
  • Documents
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Autodesk EAGLE to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Suggested Answer
  • Replies 34 replies
  • Answers 2 answers
  • Subscribers 173 subscribers
  • Views 3065 views
  • Users 0 members are here
Related

Rename wires

Former Member
Former Member over 11 years ago

Hello,

 

In an Eagle-shematic (50 pages) I need to change quite a lot of wire names. Select every single and change the name would do the job, but is quite time consuming...

 

The wires can have diferent names, some examples:

W500/01

W500/02

W500/xx

...

W501/01

W501/02

...

W502/01

...

W600/01

W600/02

...

W601/01

...

W700/BN

W700/BU

...

W135/1.5RD

...

 

Now as writen before, a lot of wire names should be changed. For example all W500/xx will be renamed to W512/xx and so on. Can somebody tell me how I can do that a bit more eficient? I tried this one: Renaming parts in Eagle CAD by editing the XML directly

Works quite well for part names, but the wire names are not recognised by this tool. I would have to change the source code (I think I'd be able to do that) and then recompile that, but I have no Idea about C++ and how to compile...

 

So it would be great if somebody had another simple and working idea how to do that.

 

Thank you

 

My configuration:

Eagle 6.5.2 Hobbyist licence

Win 8.1

  • Sign in to reply
  • Cancel
Parents
  • AnalogNotes
    0 AnalogNotes over 11 years ago

    Well, I'm going to show my Unix bias here, but there are a *lot* of tools available to do things like this built in to Linux and OS X and available for Windows.  It depends how deep you want to go down the rabbit hole!

     

    My first reaction would be to use "sed" the stream editor.  (Do a search for "sed for windows".)  Sed is used at the command line, and takes some input, modifies it, and sends it to some output.  For example,

     

    sed 's/W500/W512' schematic.sch > newschematic.sch

     

    which would change occurrences of W500 to W512 and create a new file called newschematic.sch without changing the original schematic.sch.  To make sure things look good, you could use the "diff" command on the two files to see exactly what was changed.  Of course, you wouldn't want to have to change that command line and re-run it for every substitution you want to make, so it's better to create a sed script file with all the commands you want (somewhat analogous to that CSV file in the referenced article), and then run the command:

     

    sed -f script.file schematic.sch > newschematic.sch

     

    Sed is a great tool and can be used over and over again without having to modify and recompile.  Now, if you want to learn something a little more sophisticated, there is a simple, yet amazing text processing language called AWK.  AWK knows how to read in a text file line by line, split the line into words and do things to those words.  You can do more testing and manipulating than you can in sed.  AWK is very much like the C programming language, so you can do things like printf to create new output.  Then, if you want to really go down the rabbit hole and get into more powerful scripting languages, the big three in my book are PERL, Python and Ruby.  Each has strengths and weaknesses and each has devout followers and detractors.  Let me know if you're interested or do a search to learn more...

     

    BTW, if you don't want to download and install any of these unix tools, you might consider using Windows PowerShell too...

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
  • Former Member
    0 Former Member over 11 years ago in reply to AnalogNotes

    Thank you for your help.

     

    after some tests I found out that Win doesn't like the following command:

    sed 's/W500/W5000' 30c.sch 30d.sch

    But the following seems to work so far (thank you google):

    sed "s/W500/W5000/" 30c.sch 30d.sch


    Well, first everything seems to work fine, it reads and schows all data in the 30c file, but after everything has finished, the 30d.sch is still empty. Any idea what I am doing wrong? Sorry I have to admit that I'm not the shell-guy...

     

    As for the advice with the inconsistent board: Thank you for your advice, but there is no board, only the schematic. It is the shematic of my newly build camper. I know, eagle may not be the best solution for doing that, but works so far ok for me...

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • AnalogNotes
    0 AnalogNotes over 11 years ago in reply to Former Member

    Ursicin Caminada wrote:

    Win fit? Hmm, not sure how this special command would help me on that right now...for that I use Ctrl+F2...But while I'm writing about; is it just to tell me there are powerfull commands in Eagle?

     

    Yes, that is just to point out that there are many powerful commands and learning them is a good thing.  Every command can be started from the command line instead of just the mouse...

     

    I think you understood me a bit wrong. I don't want to rename based on the page number.

    Right now I have the following (just an example):

                               Now                       Should be

    W100/1.5RD  on page 27                  1. W1xx wire on page 01

    W101/1.5RD  on page 32                  2. W1xx wire on page 01

    W102/50RD  on page 01                   3. W1xx wire on page 01

    W103/50BK  on page 45                   1. W1xx wire on page 02

    W104/1.5OR  on page 26                 2. W1xx wire on page 02

    W105/xxxx  on page 14                    1. W1xx wire on page 03

    ...                                                     ...

    W149/1.5OR  on page 06                  5. W1xx wire on page 26

    W150/1.5OR  on page 01                  1. W1xx wire on page 27

     

    Yes, I must be misunderstanding, because it is looking to me like you rename all the wires starting on page one, then going to page two, then three...

     

    Now the old W100 (on page 27) will be renamed to, W150 (assumed it is the 150iest W1xx wire in the shematic). But the last part of the name should be kept as it was before. The last part of the name is the dimension and the color of the wire, so it should stick to that wire where it is right now. So new we would have:

    W100/1.5OR  on page 01 (because the wire on Page 01 is a 1.5OR)

    W150/1.5RD  on page 27 (because the wire on page 27 is a 1.5RD)

     

    To keep the last part of the name the same, you will have to use the string functions of EAGLE.  First, use the strchr() function to find the location of the "/" character, then use the strsub() function to extract the last part of the string, so etwas:

     

    string oldname = "W154/1.5OR";

    char c = '/';

    int position = strchr(oldname, c);

    string lastpart = strsub(oldname, position);

     

    Now, lastpart should be "/1.5OR".  You can test this by going to the EAGLE control panel, then File->New->ULP and copy this and save it:

     

    string oldname = "W154/1.5OR";

    char c = '/';

    int position = strchr(oldname, c);

    string lastpart = strsub(oldname, position);

    dlgMessageBox(lastpart);

     

    Now open your schematic and then click the ULP button and choose the file you just saved.  the dlgMessageBox command will open a dialog box that should say "/1.5OR" and have an OK button.

     

    To generate the full new name, use the "sprintf" command, so:

     

    int number = 100;

    string newname;

    sprintf( newname, "W%d", number);

     

    Now, newname is "W100".  Then, add the last part to the wire name with "+=", so:

     

    newname += lastpart;

     

    Test:

     

    int number = 100;

    string oldname = "W154/1.5OR";

    char c = '/';

    int position = strchr(oldname, c);

    string lastpart = strsub(oldname, position);

    string newname;

    sprintf(newname, "W%d", number);

    newname += lastpart;

    dlgMessageBox(newname);

     

    OK, lunch time.  I will post later about how to use this in a loop to process all wires...

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • AnalogNotes
    0 AnalogNotes over 11 years ago in reply to AnalogNotes

    OK, let's look at how we would loop through everything.  In a previous message, I talked about how EAGLE can loop through every sheet of a schematic.  Let's make a test to see how that works.  Create a new ULP or you can use the one we created in the last message and delete everything in it.  Let's start with this code, so copy and paste this into the ULP:

     

    string sheetname;

    string message;

     

    schematic(S){

      S.sheets(SH){

        sprintf(sheetname, "Sheet: %d\n", SH.number);

        message += sheetname;

      }

    }

    dlgMessageBox(message);

     

    Save it and then run it by clicking the ULP button, or you can type "run" and the filename at the command line in the schematic.  (I called my ULP "rename.ulp", so I type "run rename.ulp" and press the enter key.)  You should get a dialog box with a line for every page of the schematic.  EAGLE dialog boxes are not very smart, so it may extend below the bottom of the screen.  Press the escape key or the space bar or click on the close button of the window.

     

    Now, let's make a list of all the nets on each page of the schematic.  Add in these lines after "message += sheetname;":

     

    SH.nets(N){

      message += N.name;

      message += " ";

    }

    message += "\n";

     

    The important things to know here are that we are going through all of the nets on the schematic page, and when we are using each one, it is called "N".  We add the name of the net to the message, then to make it readable, we are adding a space (" ").  After each page, we are adding a new line ("\n") to separate the pages.  So the whole thing should look like:

     

    string sheetname;

    string message;

     

    schematic(S){

      S.sheets(SH){

        sprintf(sheetname, "Sheet: %d\n", SH.number);

        message += sheetname;

        SH.nets(N){

          message += N.name;

          message += " ";

        }

        message += "\n";

      }

    }

    dlgMessageBox(message);

     

    Save that and run it.  Do you see all of the names of your wires?  If not, we are looking in the wrong place.  Let me know and we will try something else.  If you do see the names that you want to change, then we can proceed.

     

    Now it's time to add in the name changing code from my last message.  Let's remove the space and newline entries first, then we need to define some more variables:

     

    string oldname;

    string newname;

    string lastpart;

    char c = '/';

    int number = 100;

    int position;

     

    Put those lines below the sheetname and message variables.  Now the name changing lines:

     

    oldname = N.name;

    position = strchr(oldname, c);

    lastpart = strsub(oldname, position);

    sprintf(newname, "W%d", number);

    newname += lastpart;

    number += 1;

     

    Do you see how I got oldname from the name of the net this time?  The last line here is the magic bit that makes the wire number count up.  Now, let's put in the lines that show what we have done so far in the dialog box.  The whole thing should be:

     

    string sheetname;

    string message;

    string oldname;

    string newname;

    string lastpart;

    char c = '/';

    int number = 100;

    int position;

     

    schematic(S){

      S.sheets(SH){

        sprintf(sheetname, "Sheet: %d\n", SH.number);

        message += sheetname;

        SH.nets(N){

          oldname = N.name;

          position = strchr(oldname, c);

          lastpart = strsub(oldname, position);

          sprintf(newname, "W%d", number);

          newname += lastpart;

          number += 1;

          message += "Rename old: ";

          message += oldname;

          message += " to new: ";

          message += newname;

          message += "\n";

        }

      }

    }

    dlgMessageBox(message);

     

    Run that and see if that looks like what you are trying to accomplish.  In the next message, I'll show you how to generate the script that actually renames everything...

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 11 years ago in reply to AnalogNotes

    Wow, thank you for your huge work and patience.

     

    Unfortunately it doesn't look like a 5-minute-job to try out image I'll try to go through that step by step, but that has to wait till tomorrow evening. You know, there are such unimportant things like work, sleeping and so on who have to be done as well image

     

    I really apreciate your help and how you explain it step by step. Like that I have a small chance in understanding what I'm doing... Thank you very much.

     

    Good night

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • autodeskguest
    0 autodeskguest over 11 years ago in reply to AnalogNotes

    Doug Wellington wrote:

    Ursicin Caminada wrote:

     

    To keep the last part of the name the same, you will have to use the

    string functions of EAGLE.  First, use the strchr() function to find the

    location of the "/" character, then use the strsub() function to extract

    the last part of the string, so etwas:

     

    also have a look at strxstr, strrchr and strsplit / strjoin  could be

    an alternative

    --

     

    Lorenz

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • AnalogNotes
    0 AnalogNotes over 11 years ago in reply to autodeskguest

    CadSoft Guest wrote:

    also have a look at strxstr, strrchr and strsplit / strjoin  could be an alternative

     

    strxstr?  Do we want to give this poor guy a brain cramp already?  LOL!!!

     

    Some people, when confronted with a problem, think “I know, I'll use regular expressions.” Now they have two problems.  -Jamie Zawinski*

     

    For the unknowing/unsuspecting, strxstr() is a very powerful function that uses a thing called a "regular expression" to search for a pattern of characters.  I think the line I quoted from Jamie is hilarious, but I actually *LOVE* regular expressions.  We use them in text processing, for example, building a compiler, which is one of the most advanced things you can do in computer science.  I taught a class on regular expressions and there are entire books devoted to just regular expressions.  image

     

    *There is a humorous web site devoted to this kind of quote: Two Problems

     

    EDIT: Here's an example of a regular expression ("regex"):

     

    ^[ \t]+|[ \t]+$

     

    quoted from Wikipedia: Regular expression  image

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • autodeskguest
    0 autodeskguest over 11 years ago in reply to AnalogNotes

    Doug Wellington wrote:

    CadSoft Guest wrote:

     

    since when is element14 suppressing the sender of newsgroup post?

     

     

    also have a look at strxstr, strrchr and strsplit / strjoin  could be

    an alternative

     

    strxstr?  Do we want to give this poor guy a brain cramp already? 

    LOL!!! [...]

     

    I know 8-)

     

    I only mentioned it for completeness sake while pointing out that

    there are more possibilities beside strchr and substr

    --

     

    Lorenz

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • AnalogNotes
    0 AnalogNotes over 11 years ago in reply to autodeskguest

    CadSoft Guest wrote:

    since when is element14 suppressing the sender of newsgroup post?

     

    Yeah, this site is a bit wonky, eh?  Do you post from the Stratford Digital EagleCentral site or do you post directly via NNTP?  I finally gave up on those and use Element14 because I can edit posts.  The down side is that the Jive software Element14 uses really just seems to suck.  For example, when I click on the "CadSoft Guest" title at the top of your message, it is linked to Drew Fustini, and I'm guessing you aren't Drew!  As far as I can tell, post edits don't propagate off this site, and in general, things are hard to find, which may be more of an organization thing than a Jive thing, but it doesn't reflect well on either.  There's a webinar about the site in less than an hour, so maybe things will clear up a bit...

     

    strxstr?  Do we want to give this poor guy a brain cramp already?

    LOL!!! [...]

     

    I know 8-)

     

    I only mentioned it for completeness sake while pointing out that

    there are more possibilities beside strchr and substr

     

    Thanks.  Yeah, TIMTOWTDI as the Perl guys say...

     

    The fun thing is, when we come full circle in this discussion, we'll get back to sed, which is actually a great regular expression tool...  image

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • autodeskguest
    0 autodeskguest over 11 years ago in reply to AnalogNotes

    Doug Wellington wrote:

     

    CadSoft Guest (aka Lorenz) wrote:

     

    since when is element14 suppressing the sender of newsgroup post?

     

    Yeah, this site is a bit wonky, eh?  Do you post from the Stratford

    Digital EagleCentral site or do you post directly via NNTP?  I finally

    gave up on those and use Element14 because I can edit posts.  The down

    side is that the Jive software Element14 uses really just seems to

    suck.  For example, when I click on the "CadSoft Guest" title at the top

    of your message, it is linked to Drew Fustini, and I'm guessing you

    aren't Drew!  As far as I can tell, post edits don't propagate off this

    site, and in general, things are hard to find, which may be more of an

    organization thing than a Jive thing, but it doesn't reflect well on

    either.  There's a webinar about the site in less than an hour, so maybe

    things will clear up a bit...

     

    I'm posting directly via nntp (since I started using eagle, long long

    before farnell bought cadsoft).

     

     

    There is a nice quote regarding nntp vs. web bases forums:

     

    Web based forums are like subscribing to 10 different newspapers and

    having to visit 10 different news stands to pickup each one. Email

    list-server groups and USENET are like having all of those newspapers

    delivered to your door every morning.

     

     

    I follow about 30-40 news groups and mailing list (using gmane.org as

    mailing list to nntp bridge) regularly.

     

    That wouldn't be possible using web based forums.

    Using my new client I can skim over the new posts during my morning

    coffee break.

    --

     

    Lorenz

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • AnalogNotes
    0 AnalogNotes over 11 years ago in reply to autodeskguest

    Sorry to continue the off-topic hijack, but that's how these forum things seem to work...  image

    Lorenz wrote:

    There is a nice quote regarding nntp vs. web bases forums:

    Web based forums are like subscribing to 10 different newspapers and

    having to visit 10 different news stands to pickup each one. Email

    list-server groups and USENET are like having all of those newspapers

    delivered to your door every morning.

    I follow about 30-40 news groups and mailing list (using gmane.org as

    mailing list to nntp bridge) regularly.

     

    That wouldn't be possible using web based forums.

    Using my new client I can skim over the new posts during my morning

    coffee break.

     

    [curmudgeon]

    Indeed.  I've always hated forums, but it's the way of the world now for most of the topics I seem to be interested in.  I used to, and still do, love listservs (remember Bitnet?) and newsgroups because, as you say, they come to you instead of you having to remember to go to them.  It all seemed so simple back then.  I'm an old MH user too, so I have a *huge* directory structure of messages from both email and nntp.  Of course, for me at least, email isn't the best answer any more, as most people don't edit much, they just pile answers on top of the previous message(s) and most of them are RTF or HTML (in other words, much larger than they need to be).  How many times have you gotten a 90k message that only adds "+1" to all the previous quotes?  image  Forums like this seem to be nicer in that regard, as you have to explicitly click a button to quote the previous message...

    [/curmudgeon]

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • autodeskguest
    0 autodeskguest over 11 years ago in reply to AnalogNotes

    On 04/03/14 20:02, Doug Wellington wrote:

     

     

    That's English for "wise man who speaks truth"

    image

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Reply
  • autodeskguest
    0 autodeskguest over 11 years ago in reply to AnalogNotes

    On 04/03/14 20:02, Doug Wellington wrote:

     

     

    That's English for "wise man who speaks truth"

    image

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Children
No Data
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube