← Back to team overview

kicad-developers team mailing list archive

Re: PLUGIN::Footprint*() from python

 

Exactly, what you're proposing must work, may be cleaner if you use "
GetPluginForPath(lpath) " twice (at start) to hide the IO_MGR calls :-) and
then you can convert from any format to any other without changes to your
script :D

Yes, the IO_MGR architecture is quite well designed , good design uses to
pay back fast :-)



2012/10/19 Dick Hollenbeck <dick@xxxxxxxxxxx>

> On 10/19/2012 02:24 PM, Miguel Angel Ajo Pelayo wrote:
> > Of course, I will be very happy to help on that, if you point me to the
> "lib table" branch.
>
> This new branch should not be needed, since the lib table is not needed
> for this script.
> The plugin types are supplied explicitly in the script as you have done.
>
> I was not certain you were honoring the plugin type, but now see that you
> are with the
> call to IO_MGR.PluginFind( plugin_Type ).
>
>
> Can the efficiency of your loop be improved if we keep the two plugins
> instantiated?
>
> See below
>
>
>
> >
> > The needed functions are here:
> >
> http://bazaar.launchpad.net/~kicad-testing-committers/kicad/testing/view/head:/pcbnew/scripting/module.i
> > <
> http://bazaar.launchpad.net/%7Ekicad-testing-committers/kicad/testing/view/head:/pcbnew/scripting/module.i
> >
> >
> > def GetPluginForPath(lpath):
> >         return IO_MGR.PluginFind(IO_MGR.LEGACY)
> >
> > def FootprintEnumerate(lpath):
> >         plug = GetPluginForPath(lpath)
> >         return plug.FootprintEnumerate(lpath)
> >
> > def FootprintLoad(lpath,name):
> >         plug = GetPluginForPath(lpath)
> >         return plug.FootprintLoad(lpath,name)
> >
> > def FootprintSave(lpath,module):
> >       plug = GetPluginForPath(lpath)
> >         return plug.FootprintSave(lpath,module)
> >
> > def FootprintDelete(lpath,name):
> >         plug = GetPluginForPath(lpath)
> >         plug.FootprintDelete(lpath,name)
> >
> > def FootprintLibCreate(lpath):
> >         plug = GetPluginForPath(lpath)
> >         plug.FootprintLibCreate(lpath)
> >
> > def FootprintLibDelete(lpath):
> >         plug = GetPluginForPath(lpath)
> >         plug.FootprintLibDelete(lpath)
> >
> > def FootprintIsWritable(lpath):
> >         plug = GetPluginForPath(lpath)
> >         plug.FootprintLibIsWritable(lpath)
> >
> >
> > and they should be available from pcbnew.* :
> >
> > it must be something like (totally untested):
> >
> > import pcbnew
>
> old = argv[1]    (my python knowledge is rusty)
> new = argv[2]
>
> legacy = IO_MGR.PluginFind(IO_MGR.LEGACY)
>
> kicad = IO_MGR.PluginFind(IO_MGR.KICAD)
>
>
> >
> > list_of_parts = pcbnew.FootprintEnumerate("file.mod")
> >
> > for part_id in list_of_parts:
> >     module = FootprintLoad("file.mod",part_id)
> >     FootprintSave("new_path",part_id)
>
> list_of_parts = legacy.FootprintEnumerate("file.mod")
>
> for part_id in list_of_parts:
>       module = legacy.FootprintLoad( old, part_id )
>      kicad.FootprintSave( new, module )
>
>
>
> >
> >
> > problems will arise, and bugs will need to be hunted :-)
> >
> > Greetings :-)
> >
> >
> > 2012/10/19 Dick Hollenbeck <dick@xxxxxxxxxxx <mailto:dick@xxxxxxxxxxx>>
> >
> >     Hi Miguel,
> >
> >     I would like to be able to instantiate to PLUGINs simultaneously in
> a script, one of
> >     type
> >     LEGACY, and the second of type KICAD.
> >
> >     Then I would like to copy all the footprints from one plugin to the
> other, thereby
> >     doing a
> >     conversion of the entire library behind the LEGACY plugin into the
> library behind the
> >     KICAD plugin.
> >
> >     Is this kind of script fu something you could help us with?
> >
> >     Maybe it could take two "library paths" on the command line, old and
> new.
> >
> >     FYI, a "library path" in the context of the new KICAD format is now
> a directory,
> >     whereas a
> >     "library path" in the context of the LEGACY plugin is an actual
> *.mod file, but I think
> >     the API hides this abstractly.
> >
> >
> >     Thanks for any help you can offer,
> >
> >     Dick
> >
> >
> >     P.S. Wayne and I are currently collaborating on the branch which is
> being used to
> >     add the
> >     "lib table" support.  So the time at which this script could be very
> useful is
> >     approaching.  I envision running it one time on all the package
> supplied footprint
> >     libraries, and that may be the end of its utility for the most part.
> >
> >
> >
> >
> >
> >
> >
> >     _______________________________________________
> >     Mailing list: https://launchpad.net/~kicad-developers
> >     <https://launchpad.net/%7Ekicad-developers>
> >     Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
> >     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
> >     Unsubscribe : https://launchpad.net/~kicad-developers
> >     <https://launchpad.net/%7Ekicad-developers>
> >     More help   : https://help.launchpad.net/ListHelp
> >
> >
> >
> >
> > --
> >
> > Miguel Angel Ajo Pelayo
> > http://www.nbee.es
> > +34 636 52 25 69
> > skype: ajoajoajo
>
>


-- 

Miguel Angel Ajo Pelayo
http://www.nbee.es
+34 636 52 25 69
skype: ajoajoajo

References