Thanks Konstantin. Clearly it was a major expenditure of effort and the time you put into the documentation is very impressive.
Unfortunately I was not able to glean much from the code in a short time. (I wonder if English "Specification" means the same thing in Russian as it does in English.) Maybe I will run it and translate the UI strings as I go, but right now I have no idea what it does. The schematic sheet parsing could come in handy for somebody, but I was going to work with the generic netlist xml file. Right now I was hoping just to communicate at a high level in English. Dick On 11/07/2013 02:18 PM, Барановский Константин wrote: > Hello Dick! > > Please look at this https://launchpad.net/kicadbom2spec. > Documentation on Russian but comments in sources on English. > Hope it will be helpful. > > Regards > Konstantin > > 07.11.2013 21:23, Dick Hollenbeck пишет: >> After finishing a board today, I still feel like our BOM support is lacking, >> so I have >> some thoughts to share, get some feedback, and maybe figure out how to get >> it coded in python. >> >> >> My Definitions, so you can follow: >> ======================================================= >> part = something from the eeschema library. >> >> component = something from one of the schematic sheets, an instantiation of >> a part. >> ======================================================== >> >> The problem is basically this in a nutshell: >> >> >> lack of "parts-list" support in eeschema. >> >> >> To me a parts-list is a table of unique parts used, duplicates are coalesced >> into one row >> by collating. That is, if I have quantity (30) of 0.1uF caps, I'd expect >> them to show up >> on one row in the parts list. >> >> Yes its nice to have "properties" for every component in the schematic, but >> it is simply >> not practical to put component information into each instantiation, >> especially a >> duplication of purchasing information. >> >> So I propose the following solution. This is a python parts-list and BOM >> generator, and >> requires no changes to eeschema. Let me call it *bom_or_partslist.py* for >> the sake of >> discussion. It includes a python *.ods library of some kind, meaning it can >> read and >> write to "open document format" spreadsheets, supported by OpenOffice, >> Libre, and >> gnumeric. These are files with extension *.ods. >> >> When invoked like this: >> >> bom_or_partslist.py --partslist <netlist>.xml >> >> it creates a parts list spreadsheet >> >> <netlist>.PARTSLIST.ods. >> >> The parts list spreadsheet includes unique parts, one per row. What >> constitutes unique? >> Subject to discussion, but I am thinking the combination of "libpart + >> value", as if it >> was a concatenated key. >> >> So the number of columns is minimal. I guess to handle the whole work flow, >> the script >> has to first check if the target *.ods exists already, and if so, is allowed >> only to >> modify the left most column. >> >> User may add additional columns to the spreadsheet. In mine, I would add >> Manufacturer and >> Vendor and Price@1000, manually by editing the partslist spreadsheet. >> >> Note that I put the Manufacturer's part number into the same field with the >> manufacturer, >> same with Vendor. Note that this is a person choice, not actually part of >> this design, >> since these are columns beyond the first one. >> >> e.g. Vendor: >> "Digikey AE10968-ND" >> >> Same for Manufacturer, it actually holds *two* pieces of information, >> manufacturer and the >> part number. >> >> ----------------- >> >> When invoked like this: >> >> bom_or_partslist.py --bom <netlist>.xml >> >> >> It generates a BOM file: >> >> <netlist>.BOM.ods >> >> by merging the <netlist>.BOM.ods file with the <netlist>.xml file. >> >> This means as you make purchasing choices, you do edits on only one place, >> once each for >> each part. >> >> There would be two entries in the BOM dialog, both referencing the same >> script, but with >> different names and parameters, one to generate or refresh the partslist and >> one to >> generate the BOM. >> >> The hardest part of this is the regeneration of the partslist. I may start >> by overwriting >> what's there and work in the regeneration support as time permits. >> >> Can anyone suggest improvements? The one's I will consider (if I code this >> myself) will >> be easily implemented with good value. >> >> >> Thanks, >> >> Dick >> >> >> >> >> >> >> >> >> >> _______________________________________________ >> Mailing list: https://launchpad.net/~kicad-developers >> Post to : kicad-developers@lists.launchpad.net >> Unsubscribe : https://launchpad.net/~kicad-developers >> More help : https://help.launchpad.net/ListHelp > > > _______________________________________________ > Mailing list: https://launchpad.net/~kicad-developers > Post to : kicad-developers@lists.launchpad.net > Unsubscribe : https://launchpad.net/~kicad-developers > More help : https://help.launchpad.net/ListHelp > _______________________________________________ Mailing list: https://launchpad.net/~kicad-developers Post to : kicad-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~kicad-developers More help : https://help.launchpad.net/ListHelp