X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f X-Recipient: geda-user AT delorie DOT com X-Mailer: exmh version 2.8.0 04/21/2012 (debian 1:2.8.0~rc1-2) with nmh-1.5 X-Exmh-Isig-CompType: repl X-Exmh-Isig-Folder: inbox From: karl AT aspodata DOT se To: geda-user AT delorie DOT com Subject: Re: [geda-user] Scripting pcb (was: A fileformat library) In-reply-to: References: <1512221837 DOT AA25291 AT ivan DOT Harhan DOT ORG> <20151222232230 DOT 12633 DOT qmail AT stuge DOT se> <0F6F1D0F-4F07-48EA-90FE-836EAD4E2354 AT noqsi DOT com> <0FCF3774-F93C-4BFF-BB61-636F75DCCACB AT noqsi DOT com> <20160106091006 DOT 5F67B809D7A1 AT turkos DOT aspodata DOT se> <20160106133049 DOT 5A0E9809D79B AT turkos DOT aspodata DOT se> <20160106143629 DOT 4D39D809D79B AT turkos DOT aspodata DOT se> Comments: In-reply-to "Levente (leventelist AT gmail DOT com) [via geda-user AT delorie DOT com]" message dated "Wed, 06 Jan 2016 16:25:15 +0100." Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Message-Id: <20160106164022.D0D4E809D79B@turkos.aspodata.se> Date: Wed, 6 Jan 2016 17:40:22 +0100 (CET) X-Virus-Scanned: ClamAV using ClamSMTP 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 Levente: > I'd make such API calls, for example move (change coordinate) of object, > add new, or iterate through objects. If you want scripting outside of pcb, then I don't know about anything currently available. If we make a simple parsing thing that gives you a parse tree, could that be something to start tinkering with. First is some header things, then a list of "Symbol", Grid setting, Vias, elements, then list of layers which contains lines, arcs, text and polygons; followed by a list of nets. Given that you could do something like: pcb.read(myfile.pcb); pcb.layer[1].line[14].x1 += 122; pcb.layer[1].line[14].y1 -= 33; pcb.export_ps(excellent_design.ps); one could implement search queries: my_line = find_line(pcb.layer[1], x1 > 299 && width < 13); in whatever language you'd use. Would that be something ? /// For scripting, why don't you try out Igor2's pcb-rnd, he has implemented scripting. See http://www.delorie.com/archives/browse.cgi?p=geda-user/2016/01/06/06:44:34 and report back goods and bads. /// Or, you can help by looking through action scrips and see what can be improved. I tried this little script Select(All) Mode(Move) MovePointer(100, 100) but I got ":unknown action `MovePointer'", so a lot could be improved there. /// Can a plugin solve your need, I don't know much about pcb's plugins. > If we talk about SQL implementation, > that would be fairly easy to implement with SQL queries inside the library. Well, now you are talking about bypassing the lib :) But given a parsetree, it wouldn't be hard to export it to some sql and do queries there, somehow correlate what's in memory with the answer or import from sql, do your stuff, and then save it. Regards, /Karl Hammar ----------------------------------------------------------------------- Aspö Data Lilla Aspö 148 S-742 94 Östhammar Sweden +46 173 140 57