X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f X-Recipient: geda-user AT delorie DOT com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type; bh=NxKqz8dPb73iMyxbe2NxqQSVgQgEQncWWP40CT+ji1k=; b=YQtLPsyps10GcO96tq+efI+TQZABvONY2epzQ/tRQBC3Gyw/hBPCNT8FKWKogbzvr+ HbJ2pQyL8SCjd6cDAiZeYXKYkmR6cW67OOhgUmUF1QN8nSrNEhtBvqbDvbiipdXHQ1ZI GgjUz++NCL4cIY/ybTbdajkKHGT0Dk5R9gr6v64JG7F3vN18DbgQq/LhXNNmTGvwWj7k 3pdRcJBYa4MC650A8yseklPiq0sECqo9YnJRKMC7NPvIiyKXC5+pVyazA4oMhoKJbmAA nhshal4kMyU9EFQXHZTfWSW4wc1+E5aOpMNi+nIVI+kzmYEhtpkEmerAzP3gyZMzODhP i5OA== X-Received: by 10.112.130.105 with SMTP id od9mr72153lbb.45.1383858060768; Thu, 07 Nov 2013 13:01:00 -0800 (PST) MIME-Version: 1.0 In-Reply-To: References: From: Martin Held Date: Thu, 7 Nov 2013 13:00:40 -0800 Message-ID: Subject: [geda-user] Re: Perl hack for bulk updates of refdes' To: geda-user Content-Type: multipart/mixed; boundary=e89a8f64733d21c86d04ea9c9051 Reply-To: geda-user AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: geda-user AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk --e89a8f64733d21c86d04ea9c9051 Content-Type: multipart/alternative; boundary=e89a8f64733d21c86904ea9c904f --e89a8f64733d21c86904ea9c904f Content-Type: text/plain; charset=ISO-8859-1 Oh, I didn't attach the actual file, derp. On Thu, Nov 7, 2013 at 12:43 PM, Martin Held wrote: > DJ suggested I send this hack to the mailing list directly. This is an > ugly perl hack, but then again, most perl hacks are. I used it again today > and remembered I forgot to mail this one in. > > I'm not a normal geda-user subscriber, so your best bet is to reply > directly to me. > > I've found myself doing some big designs recently, wherein I add lots of > components, redo stuff, do a layout, make some schematic changes, split off > schematic files, split off board, recombine boards, make more changes, more > pcb changes, etc etc. In the end, the reference designators get all sorts > of out-of-whack. C200 near R1, stupid little OCD annoying stuff like that. > > The problem is that if you re-annotate your schematic (refdes, current > page, overwrite all existing) when you have a PCB layout that's complete, > there's no current 'good' way to forward annotate those changes without > gnetlist (in my system) deleting half the components, only to make you add > them all back in again, redo the refdes locations, yadda yadda. > > So here's a perl script to do what I needed. Do this where you have a > schematic and a corresponding layout. You can probably break things by > adding/removing components during this process. > > The first step is to grep refdes file.sch > pre.txt. This creates a file > of all reference designators. > Then go into gschem with your schematic, and attributes -> autonumber text > (or shortcut 'tu'), and wipe out all your reference designators with new > ones. Save and exit (backing up along the way might be a good idea too.. I > commit to SVN each time before/after I do this). You can also do any > manual changes, e.g. if you don't like the top to bottom, diagonal/etc > options in the autonumber menu. > > Then grep refdes file.sch > post.txt > > Now run the perl script. It'll create a hash out of pre and post.txt, and > then scan through the pcb file and change the reference designators as > necessary. Naturally, if you add or remove components, you can change the > order of pre/post.txt... that will screw things up in the hash table. > > ./update.pl pre.txt post.txt file.pcb output.pcb > > You may also wish to re-run gnetlist, and then when you open the > output.pcb file, reload the new netlist and ensure you didn't get any > munged connectivity. > > If all goes well, you have reference designators that make more sense. > > License: None, I don't care if you sell it or something, I use it for > myself, it works for my needs. You can even take credit for all I care. > > Cheers, > Martin > AE7IK > > > ------------------------------------------------------------------------------- > If there aren't any questions, then what is there to learn? > -- Martin Held - PADI MSDT-190219 diver DOT martin AT gmail DOT com http://www.raindroppro.com ------------------------------------------------------------------------------- If there aren't any questions, then what is there to learn? --e89a8f64733d21c86904ea9c904f Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Oh, I didn't attach the actual file, derp.


On Thu, Nov 7, = 2013 at 12:43 PM, Martin Held <diver DOT martin AT gmail DOT com> = wrote:
DJ suggested I send th= is hack to the mailing list directly.=A0 This=20 is an ugly perl hack, but then again, most perl hacks are.=A0 I used it=20 again today and remembered I forgot to mail this one in.

I'= ;m not a normal geda-user subscriber, so your best bet is to reply directly= to me.

I've found myself doing some big designs recently, wherein I add=20 lots of components, redo stuff, do a layout, make some schematic=20 changes, split off schematic files, split off board, recombine boards,=20 make more changes, more pcb changes, etc etc.=A0 In the end, the reference designators get all sorts of out-of-whack.=A0 C200 near R1, stupid little OCD annoying stuff like that.

The problem is that if you re-annotate your schematic=20 (refdes, current page, overwrite all existing) when you have a PCB=20 layout that's complete, there's no current 'good' way to fo= rward=20 annotate those changes without gnetlist (in my system) deleting half the components, only to make you add them all back in again, redo the=20 refdes locations, yadda yadda.

So here's a perl script to do what I needed.=A0 Do this where you h= ave a schematic and a corresponding layout.=A0 You can probably break things= =20 by adding/removing components during this process.

The fi= rst step is to grep refdes file.sch > pre.txt.=A0 This creates a file of= all reference designators.
Then go into gschem with your schematic, and=20 attributes -> autonumber text (or shortcut 'tu'), and wipe out a= ll=20 your reference designators with new ones.=A0 Save and exit (backing up=20 along the way might be a good idea too.. I commit to SVN each time=20 before/after I do this).=A0 You can also do any manual changes, e.g. if=20 you don't like the top to bottom, diagonal/etc options in the autonumbe= r menu.

Then grep refdes file.sch > post.txt

No= w run the perl script.=A0 It'll create a hash out of pre and post.txt, a= nd=20 then scan through the pcb file and change the reference designators as=20 necessary.=A0 Naturally, if you add or remove components, you can change=20 the order of pre/post.txt... that will screw things up in the hash=20 table.

-------------------------------------------------------------------------= ------
If there aren't any questions, then what is there to learn?



--
Martin Held - PADI MSDT= -190219
dive= r DOT martin AT gmail DOT com
http://www.raindroppro.com
---------------------------------------------------------------------------= ----
If there aren't any questions, then what is there to learn? --e89a8f64733d21c86904ea9c904f-- --e89a8f64733d21c86d04ea9c9051 Content-Type: application/x-perl; name="update.pl" Content-Disposition: attachment; filename="update.pl" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hnqhcf960 IyEvdXNyL2Jpbi9wZXJsCgojICBBIHNpbXBsZSBoYXNoIGdlbmVyYXRvciBhbmQgZmluZC1yZXBs YWNlIHNjcmlwdCBmb3IgdXNlIHdpdGggZ0VEQS9nc2NoZW0gYW5kCiMgIGdFREEvcGNiCiMKIyAg VXNhZ2U6ICBncmVwIHJlZmRlcyBmaWxlLnNjaCA+IHByZS50eHQKIyAgICAgICAgICBUaGVuIGVk aXQgeW91ciBmaWxlLnNjaCwgbWFraW5nIG5vIGNvbXBvbmVudCBjaGFuZ2VzL2FkZGl0aW9ucy9k ZWxldGlvbnMKIwkgICAgIEZvciBleGFtcGxlLCBhdHRyaWJzIC0+IGF1dG9udW1iZXIgdGV4dCAt PiBnbG9iYWwgb3ZlcndyaXRlCiMJICAgQ2xvc2UgZ3NjaGVtCiMgICAgICAgICAgZ3JlcCByZWZk ZXMgZmlsZS5zY2ggPiBwb3N0LnR4dAojCiMJICAgTmV4dCwgcnVuIHRoaXMgc2NyaXB0LCBlLmcu IC4vdXBkYXRlLnBsIHByZS50eHQgcG9zdC50eHQgZmlsZS5wY2Igb3V0cHV0LnBjYgojCiMJICAg VGhpcyBzY3JpcHQgd2lsbCBOT1Qgb3ZlcndyaXRlIHlvdXIgb2xkIFBDQiBmaWxlLgojCiMJICAg QWZ0ZXIgeW91J3ZlIGdlbmVyYXRlZCB0aGUgbmV3IFBDQiBmaWxlLCBydW4gZ25ldGxpc3QsIGNy ZWF0ZSBhIG5ldwojICAgICAgICAgICAgbmV0bGlzdCBhbmQgaW1wb3J0IGl0IGludG8gUENCLCBh bmQgZW5zdXJlIHlvdXIgY29ubmVjdGl2aXR5IHN0YXllZAojICAgICAgICAgICAgdGhlIHNhbWUu CiMgICAgICAgICAKIyAgICAgICAgICBJZiB5b3UgZG9uJ3QgdXNlIGFueSBiYWNrdXBzIGFuZCBz Y3JldyBzb21ldGhpbmcgdXAsIGJvbyBob28gZm9yIHlvdS4KIwkgICBOTyBXQVJSQU5USUVTLiAg CiMJICAgCiMgICAgICAgICAgVGhpcyBzY3JpcHQgY2FycnJpZXMgbm8gbGljZW5zZS4gIEl0IHdv cmtzIGZvciBtZSwgSSBkb24ndCBjYXJlIHdoYXQKIyAgICAgICAgICAgIHlvdSBkbyB3aXRoIGl0 LiAgTm8gYXR0cmlidXRpb24vc291cmNlIG5lZWRlZC4KIwojCSAgIE1hcnRpbiBIZWxkCiMgICAg ICAgICAgQUU3SUsKIwkgICBPY3QgMjl0aCwgMjAxMwoKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5n czsKCm15ICRvcmlnID0gJEFSR1ZbMF0gb3IgZGllICJOZWVkIGFuIG9yaWdpbmFsIGZpbGVcbiI7 Cm15ICRuZXcgPSAkQVJHVlsxXSBvciBkaWUgIk5lZWQgYSBuZXcgZmlsZVxuIjsKbXkgJG1vZGZp bGUgPSAkQVJHVlsyXSBvciBkaWUgIk5lZWQgYSBQQ0IgZmlsZSB0byBlZGl0XG4iOwpteSAkb3V0 ZmlsZSA9ICRBUkdWWzNdIG9yIGRpZSAiTmVlZCBhbiBvdXRwdXQgZmlsZS5cbiI7CgpvcGVuICht eSAkZG9yaWcsICc8JywgJG9yaWcpIG9yIGRpZSAiQ291bGQgbm90IG9wZW4gJyRvcmlnJyAkXG4i OwpvcGVuIChteSAkZG5ldywgJzwnLCAkbmV3KSBvciBkaWUgIkNvdWxkIG5vdCBvcGVuICckbmV3 JyAkXG4iOwpvcGVuIChteSAkZG1vZCwgJzwnLCAkbW9kZmlsZSkgb3IgZGllICJDb3VsZCBub3Qg b3BlbiAnJG1vZGZpbGUnICRcbiI7Cm9wZW4gKEQsICc+JywgJG91dGZpbGUpIG9yIGRpZSAiQ291 bGQgbm90IG9wZW4gJyRvdXRmaWxlJyBmb3Igd3JpdGUgJFxuIjsKCm15ICVjaGFuZ2VzID0gKCk7 Cgp3aGlsZSAobXkgJG9yaWdsaW5lID0gPCRkb3JpZz4pIHsKICBteSAkY2hnbGluZSA9IDwkZG5l dz47CgogIAogIG15IEBvcmlnZmllbGRzID0gc3BsaXQgIj0iICwgJG9yaWdsaW5lOwogIG15IEBj aGdmaWVsZHMgPSBzcGxpdCAiPSIgLCAkY2hnbGluZTsKIAogIGNob21wICRvcmlnZmllbGRzWzFd OwogIGNob21wICRjaGdmaWVsZHNbMV07CiAgJGNoYW5nZXN7JG9yaWdmaWVsZHNbMV19ID0gJGNo Z2ZpZWxkc1sxXTsKICAKICAKfQoKY2xvc2UgKCRkb3JpZyk7CmNsb3NlICgkZG5ldyk7CgojTm93 IHByb2Nlc3MgdGhlIFBDQiBmaWxlCgp3aGlsZSAobXkgJGxpbmUgPSA8JGRtb2Q+KSB7CgogIGlm KCRsaW5lID1+IC9FbGVtZW50XFsvICkKICB7CiAgICBteSBAbCA9IHNwbGl0ICIgIiAsICRsaW5l OwogICAgcHJpbnQgRCAiJGxbMF0gJGxbMV0iOwogICAgCiAgICAkbFsyXSA9fiBzL1snXCInXS8v ZzsKICAgIHByaW50IEQgIiBcIiRjaGFuZ2VzeyRsWzJdfVwiICI7ICAgIAogICAgcHJpbnQgRCAi JGxbM10gJGxbNF0gJGxbNV0gJGxbNl0gJGxbN10gJGxbOF0gJGxbOV0gJGxbMTBdXG4iOwogICAg aWYoJGxbMTFdKSAKICAgIHsKICAgICAgcHJpbnQgRCAiRVJST1IiOwogICAgfQogICAgCiAgfQog IGVsc2UKICB7CiAgICBwcmludCBEICRsaW5lOwogIH0KICAKfQoKY2xvc2UgKEQpOwpjbG9zZSAo JGRtb2QpOwoKICAK --e89a8f64733d21c86d04ea9c9051--