diff options
author | Trygve Laugstøl <trygvis@inamo.no> | 2017-09-09 22:10:07 +0200 |
---|---|---|
committer | Trygve Laugstøl <trygvis@inamo.no> | 2017-09-09 22:10:07 +0200 |
commit | c96bc5755a68d8e317d96be31b330cc0b626c194 (patch) | |
tree | bc35085a635aab4116ed4de611efa529902a5c2b /src/ee/kicad/to_bom.py | |
parent | 542ec502c9b9619c005bc73e562229e4547ab90b (diff) | |
download | ee-python-c96bc5755a68d8e317d96be31b330cc0b626c194.tar.gz ee-python-c96bc5755a68d8e317d96be31b330cc0b626c194.tar.bz2 ee-python-c96bc5755a68d8e317d96be31b330cc0b626c194.tar.xz ee-python-c96bc5755a68d8e317d96be31b330cc0b626c194.zip |
to_bom: A utility to create a KiCAD-like xml Element of a KiCAD schematic.
Diffstat (limited to 'src/ee/kicad/to_bom.py')
-rw-r--r-- | src/ee/kicad/to_bom.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/ee/kicad/to_bom.py b/src/ee/kicad/to_bom.py new file mode 100644 index 0000000..ca2221e --- /dev/null +++ b/src/ee/kicad/to_bom.py @@ -0,0 +1,47 @@ +from xml.etree.ElementTree import Element, ElementTree +from ee.kicad.model import * + +__all__ = ["to_bom"] + +def simple_element(parent, e, text): + if len(text) == 0: + return + element = Element(e) + element.text = text + parent.append(element) + + +def field(f: ComponentField) -> Element: + field = Element("field", {"name": f.name}) + field.text = f.value + return field + + +def comp(c: Component) -> Element: + comp = Element("comp", {"ref": c.ref}) + + simple_element(comp, "value", c.value) + simple_element(comp, "footprint", c.footprint) + # <libsource lib="A64-OlinuXino_Rev_C-cache" part="C"/> + # <sheetpath names="/" tstamps="/"/> + # <tstamp>561E4EAA</tstamp> + fields = Element("fields") + [fields.append(field(f)) for f in c.fields if f.index > 3] + if len(fields) > 0: + comp.append(fields) + + return comp + + +def to_bom(schematic: Schematic) -> Element: + root = Element("export") + root.attrib["version"] = "D" + design = Element("design") + root.append(design) + + components = Element("components") + root.append(components) + [components.append(comp(c)) for c in schematic.components] + + + return root |