aboutsummaryrefslogtreecommitdiff
path: root/src/ee/kicad
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2019-05-07 12:41:42 +0200
committerTrygve Laugstøl <trygvis@inamo.no>2019-05-07 12:41:42 +0200
commitaa9b9d0560b6515a05c2b2c94a75a50fde25e353 (patch)
tree2afb2f09e85310e71e78c77a3224ae7555c2411d /src/ee/kicad
parent2a48664afc5f634157d9c383f605d0d2541ca1d9 (diff)
downloadee-python-aa9b9d0560b6515a05c2b2c94a75a50fde25e353.tar.gz
ee-python-aa9b9d0560b6515a05c2b2c94a75a50fde25e353.tar.bz2
ee-python-aa9b9d0560b6515a05c2b2c94a75a50fde25e353.tar.xz
ee-python-aa9b9d0560b6515a05c2b2c94a75a50fde25e353.zip
kicad: Better export:
* Allow unannotated parts in the export. * Export value and footprint too.
Diffstat (limited to 'src/ee/kicad')
-rw-r--r--src/ee/kicad/make_bom.py25
-rw-r--r--src/ee/kicad/to_bom.py17
2 files changed, 38 insertions, 4 deletions
diff --git a/src/ee/kicad/make_bom.py b/src/ee/kicad/make_bom.py
index db4f80e..bec42de 100644
--- a/src/ee/kicad/make_bom.py
+++ b/src/ee/kicad/make_bom.py
@@ -98,6 +98,11 @@ class MakeBomStrategy():
def work(sch, out: Path, strategy: MakeBomStrategy, new_mode, pretty):
+ def strip(s):
+ s = (s or "").strip()
+
+ return None if len(s) == 0 else s
+
if not new_mode:
bom = to_bom_xml(sch)
xml = ElementTree.tostring(bom, encoding="unicode")
@@ -108,11 +113,27 @@ def work(sch, out: Path, strategy: MakeBomStrategy, new_mode, pretty):
print(xml)
else:
parts = PartDb()
- components = to_bom(sch)
+ components = to_bom(sch, require_ref=False)
for c in components:
xml = types.Part()
part = Part(xml)
- part.add_schematic_reference(c.ref)
+
+ if c.has_ref_num:
+ part.add_schematic_reference(c.ref)
+
+ value = strip(c.value)
+ if value:
+ part.facts.add(uris.make_fact_key("value"), value)
+
+ footprint = strip(c.footprint)
+ if footprint:
+ part.facts.add(uris.make_fact_key("footprint"), footprint)
+
+ i = footprint.find(":")
+ if i >= 0:
+ lib, footprint = footprint.split(":")
+ part.facts.add(uris.make_fact_key("kicad-schematic-library"), lib)
+ part.facts.add(uris.make_fact_key("kicad-schematic-footprint"), footprint)
part = strategy.process_part(c, part)
diff --git a/src/ee/kicad/to_bom.py b/src/ee/kicad/to_bom.py
index 8ca3c19..354d9ba 100644
--- a/src/ee/kicad/to_bom.py
+++ b/src/ee/kicad/to_bom.py
@@ -35,8 +35,21 @@ def comp(c: Component) -> Element:
return comp
-def to_bom(schematic: Union[Schematic, Schematics]) -> Iterable[Component]:
- return [c for c in sorted(schematic.components) if c.has_ref_num and c.ref_type != "#PWR" and c.ref_type != "#FLG"]
+def to_bom(schematic: Union[Schematic, Schematics], require_ref=True) -> Iterable[Component]:
+ bad_ref_types = ("#PWR", "#FLG")
+
+ cs = []
+
+ for c in sorted(schematic.components):
+ if require_ref and not c.has_ref_num:
+ continue
+
+ if c.ref_type in bad_ref_types:
+ continue
+
+ cs.append(c)
+
+ return cs
def to_bom_xml(schematic: Schematic) -> Element: