kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #09106
Re: PLUGIN::Footprint*() from python
-
To:
kicad-developers@xxxxxxxxxxxxxxxxxxx
-
From:
Dick Hollenbeck <dick@xxxxxxxxxxx>
-
Date:
Sat, 10 Nov 2012 22:09:47 -0600
-
In-reply-to:
<CA+CzoSY8ftByAhXrkZYpL=Mo77ZPVY6MZH85Auwnfur9q+nrLw@mail.gmail.com>
-
User-agent:
Mozilla/5.0 (X11; Linux x86_64; rv:16.0) Gecko/20121028 Thunderbird/16.0.2
OK, I got a footprint library to convert from legacy to kicad format using the attached
command line python script.
It ran nicely, and quickly, without a fuss once I get it setup correctly.
Procedure I used, which is perhaps not optimal, but is one that worked:
(I'm open to suggestions on improvement.)
1) Build target _pcbnew after enabling scripting in cmake.
$ make _pcbnew
2) Changed dir to pcbnew
$ cd pcbnew
$ pwd
build/pcbnew
3) Entered following command line, script takes to arguments: oldLibPath & newLibPath
$ PYTHONPATH=. ../lib_convert.py /usr/local/share/kicad/modules/smd_dil.mod /tmp/smd_dil
4) inspect one footprint found in new librarypath /tmp/smd_dil
$ less /tmp/smd_dil/msoic-10.kicad_mod
Attached is one of the converted footprints, *.kicad_mod
Observations:
a) Layernames should be in English always (in a footprint, not a board).
b) The old footprint was deci-mils, the new one is mm.
c) The next thing I notice is the ugyly timestamps on the fp_lines.
Wayne or JP, do we need those time stamps on mere lines?
#!/usr/bin/python
from __future__ import print_function
from pcbnew import *
import sys
if len( sys.argv ) < 3 :
print( "usage: script oldLibraryPath newLibraryPat" )
sys.exit(1)
# 2 libraryPaths. One is a file, one is a new directory, but that difference
# is abstracted into the notion of a "library path", so you can forget that you
# now know that secret.
old = sys.argv[1]
new = sys.argv[2]
legacy = IO_MGR.PluginFind( IO_MGR.LEGACY )
kicad = IO_MGR.PluginFind( IO_MGR.KICAD )
try:
kicad.FootprintLibDelete( new )
except:
None # ignore, new may not exist if first run
kicad.FootprintLibCreate( new )
list_of_parts = legacy.FootprintEnumerate( old )
for part_id in list_of_parts:
module = FootprintLoad( old, part_id )
kicad.FootprintSave( new, module )
(module msoic-10 (layer Front) (tedit 49EA0D66) (tstamp 0)
(at 0 0)
(descr MSOIC-10)
(fp_text reference MSOIC-10 (at 0 -0.29972) (layer SilkS_Front)
(effects (font (size 0.24892 0.24892) (thickness 0.06096)))
)
(fp_text value U*** (at 0 0.29972) (layer SilkS_Front)
(effects (font (size 0.24892 0.24892) (thickness 0.0508)))
)
(fp_line (start -1.016 -2.413) (end -1.016 -1.524) (layer SilkS_Front) (width 0.127) (tstamp 509F21A7))
(fp_line (start -0.508 -2.413) (end -0.508 -1.524) (layer SilkS_Front) (width 0.127) (tstamp 509F21A8))
(fp_line (start 0 -2.413) (end 0 -1.524) (layer SilkS_Front) (width 0.127) (tstamp 509F21A9))
(fp_line (start 0.4826 -2.413) (end 0.4826 -1.524) (layer SilkS_Front) (width 0.127) (tstamp 509F21AA))
(fp_line (start 1.016 -2.413) (end 1.016 -1.524) (layer SilkS_Front) (width 0.127) (tstamp 509F21AB))
(fp_line (start 1.016 2.413) (end 1.016 1.524) (layer SilkS_Front) (width 0.127) (tstamp 509F21AC))
(fp_line (start 0.508 2.413) (end 0.508 1.524) (layer SilkS_Front) (width 0.127) (tstamp 509F21AD))
(fp_line (start 0 2.413) (end 0 1.524) (layer SilkS_Front) (width 0.127) (tstamp 509F21AE))
(fp_line (start -0.508 2.413) (end -0.508 1.524) (layer SilkS_Front) (width 0.127) (tstamp 509F21AF))
(fp_line (start -0.9906 2.413) (end -0.9906 1.524) (layer SilkS_Front) (width 0.127) (tstamp 509F21B0))
(fp_circle (center -0.89916 0.9017) (end -1.09982 1.09982) (layer SilkS_Front) (width 0.127) (tstamp 509F21B1))
(fp_line (start 1.50114 -1.50114) (end -1.50114 -1.50114) (layer SilkS_Front) (width 0.127) (tstamp 509F21B2))
(fp_line (start -1.50114 -1.50114) (end -1.50114 1.50114) (layer SilkS_Front) (width 0.127) (tstamp 509F21B3))
(fp_line (start -1.50114 1.50114) (end 1.50114 1.50114) (layer SilkS_Front) (width 0.127) (tstamp 509F21B4))
(fp_line (start 1.50114 1.50114) (end 1.50114 -1.50114) (layer SilkS_Front) (width 0.127) (tstamp 509F21B5))
(pad 1 smd rect (at -1.00076 2.30124) (size 0.29972 1.02108)
(layers Front SoldP_Front Mask_Front)
)
(pad 2 smd rect (at -0.50038 2.30124) (size 0.29972 1.02108)
(layers Front SoldP_Front Mask_Front)
)
(pad 3 smd rect (at 0 2.30124) (size 0.29972 1.02108)
(layers Front SoldP_Front Mask_Front)
)
(pad 4 smd rect (at 0.50038 2.30124) (size 0.29972 1.02108)
(layers Front SoldP_Front Mask_Front)
)
(pad 5 smd rect (at 1.00076 2.30124) (size 0.29972 1.02108)
(layers Front SoldP_Front Mask_Front)
)
(pad 6 smd rect (at 1.00076 -2.30124) (size 0.29972 1.02108)
(layers Front SoldP_Front Mask_Front)
)
(pad 7 smd rect (at 0.50038 -2.30124) (size 0.29972 1.02108)
(layers Front SoldP_Front Mask_Front)
)
(pad 8 smd rect (at 0 -2.30124) (size 0.29972 1.02108)
(layers Front SoldP_Front Mask_Front)
)
(pad 9 smd rect (at -0.50038 -2.30124) (size 0.29972 1.02108)
(layers Front SoldP_Front Mask_Front)
)
(pad 10 smd rect (at -1.00076 -2.30124) (size 0.29972 1.02108)
(layers Front SoldP_Front Mask_Front)
)
(model smd/smd_dil/msoic-10.wrl
(at (xyz 0 0 0))
(scale (xyz 1 1 1))
(rotate (xyz 0 0 0))
)
)
Follow ups
References
-
Winbuilder Nanometer support
From: Brian Sidebotham, 2012-10-11
-
Re: Winbuilder Nanometer support
From: Dick Hollenbeck, 2012-10-11
-
Re: Winbuilder Nanometer support
From: Wayne Stambaugh, 2012-10-11
-
Re: Winbuilder Nanometer support
From: Adam Wolf, 2012-10-11
-
Re: Winbuilder Nanometer support
From: Wayne Stambaugh, 2012-10-11
-
Re: Winbuilder Nanometer support
From: Dick Hollenbeck, 2012-10-11
-
Re: Winbuilder Nanometer support
From: Adam Wolf, 2012-10-11
-
Re: Winbuilder Nanometer support
From: Hans Henry von Tresckow, 2012-10-19
-
Re: Winbuilder Nanometer support
From: Adam Wolf, 2012-10-19
-
Re: Winbuilder Nanometer support
From: Miguel Angel Ajo Pelayo, 2012-10-19
-
Re: Winbuilder Nanometer support
From: Adam Wolf, 2012-10-19
-
Re: Winbuilder Nanometer support
From: Miguel Angel Ajo Pelayo, 2012-10-19
-
PLUGIN::Footprint*() from python
From: Dick Hollenbeck, 2012-10-19
-
Re: PLUGIN::Footprint*() from python
From: Miguel Angel Ajo Pelayo, 2012-10-19